Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Tipps & Tricks ›

[gelöst] Alter berechnen mit Drupal 7 und Computed Field

Eingetragen von Renardo (60)
am 09.03.2013 - 09:59 Uhr in
  • Tipps & Tricks
  • Drupal 7.x oder neuer

Ich hatte unter Drupal 6 mit folgenden Code das Alter einer Person berechnet. Hierfür verwendete ich das CCK-Feld: field_geboren_am

if (!$node->nid) node_save($node); $dob = $node->field_geboren_am[0]['value']; $now = time(); $then = strtotime($dob); $diff = date('Y', $now) - date('Y', $then); if($diff < 0) /* ideally you want to prevent this from happening */ echo '??? - negative age.'; if(($diff > 0) && (date('z',$now) < date('z',$then))) $diff --; $node_field[0]['value'] = $diff;

Wie muss ich diesen Code verändern, damit er auch unter Drupal 7 funktioniert. Ich habe schon vieles ausprobiert, bin aber mit PHP unter Drupal 7 noch unsicher.

Wäre schön, wenn mir jemand helfen könnte.

Renardo

‹ [gelöst] Nachricht im Usermenue anzeigen lassen [gelöst] Alter berechnen mit Drupal 7 und Computed Field ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Schau mal hier:

Eingetragen von oteno (775)
am 09.03.2013 - 10:53 Uhr

Schau mal hier: http://www.drupalcenter.de/node/44810

  • Anmelden oder Registrieren um Kommentare zu schreiben

Alter berechnen mit Drupal 7 und Computed Field

Eingetragen von Renardo (60)
am 09.03.2013 - 12:00 Uhr

Hallo,

Zitat:

Schau mal hier: http://www.drupalcenter.de/node/44810

diesen Link kannte ich bereits. Der dort empfohlene Code:

$entity_field[0]['value'] = ( time() - strtotime($entity->field_dob[LANGUAGE_NONE][0]['value']) ) / 86400 / 365.25;

funktioniert leider nicht auf den Tag genau. Ist auch klar, denn der Divisor 365,25 stellt hier nur einen Näherungswert für die Schaltjahre dar.

Gibt es vielleicht noch andere Hinweise.

Danke

Renardo

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn Du eine genauere

Eingetragen von oteno (775)
am 09.03.2013 - 12:43 Uhr

Wenn Du eine genauere Schaltjahrberücksichtigung willst wird es halt von der Progamm-Logik her komplizierter.
An der prinzipellen Vorgehensweise ändert das nichts.
Ein Beispiel findest Du hier: http://www.php-resource.de/forum/showthread/t-77760.html

  • Anmelden oder Registrieren um Kommentare zu schreiben

Alter berechnen mit Drupal 7 und Computed Field

Eingetragen von Renardo (60)
am 09.03.2013 - 12:51 Uhr

Hallo,

danke für den Hinweis. Am liebsten jedoch würde ich gerne den folgenden unter Drupal 6 funktionierenden Code verwenden, nur eben an Drupal 7 angepasst.

if (!$node->nid) node_save($node); $dob = $node->field_geboren_am[0]['value']; $now = time(); $then = strtotime($dob); $diff = date('Y', $now) - date('Y', $then); if($diff < 0) /* ideally you want to prevent this from happening */ echo '??? - negative age.'; if(($diff > 0) && (date('z',$now) < date('z',$then))) $diff --; $node_field[0]['value'] = $diff;

Wie müssen hier die Variablen geändert werden, damit die Altersberechnung auch in Drupal 7 funktioniert?

Renardo

  • Anmelden oder Registrieren um Kommentare zu schreiben

kann es leider jetzt nich

Eingetragen von oteno (775)
am 09.03.2013 - 13:11 Uhr

kann es leider jetzt nich testen, aber bei den Feldern ist ist der Language-Index dazugekommen und das computed field hat sich (wie in der verlinkten Anleitung beschrieben) auch geändert.
Somit müsste der Code so aussehen - wie gesagt nicht getestet

if (!$node->nid) node_save($node);
$dob = $node->field_geboren_am[$node->language][0]['value'];
$now = time();
$then = strtotime($dob);
$diff = date('Y', $now) - date('Y', $then);

if($diff < 0) /* ideally you want to prevent this from happening */ echo '??? - negative age.';

if(($diff > 0) && (date('z',$now) < date('z',$then)))
    $diff --;
$entity_field[0]['value'] = $diff;

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dieser Code

Eingetragen von Renardo (60)
am 09.03.2013 - 18:23 Uhr

funktioniert leider nicht. Schade.

Wie gesagt mit Drupal 6 funktioniert es so:

if (!$node->nid) node_save($node);
$dob = $node->field_geboren_am[0]['value'];
$now = time();
$then = strtotime($dob);
$diff = date('Y', $now) - date('Y', $then);
if($diff < 0)  echo '??? - negative age.';
if(($diff > 0) && (date('z',$now) < date('z',$then))) $diff --;
$node_field[0]['value'] = $diff;

Mit Drupal 7 lässt sich so das Alter nicht berechnen. Was sollte hier geändert werden?

Danke

Renardo

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hab es jetzt doch noch

Eingetragen von oteno (775)
am 09.03.2013 - 19:02 Uhr

Hab es jetzt doch noch getestet:

$dob = $entity->field_geboren_am[LANGUAGE_NONE][0]['value'];
$now = time();
$then = strtotime($dob);
$diff = date('Y', $now) - date('Y', $then);

if($diff < 0) /* ideally you want to prevent this from happening */ echo '??? - negative age.';

if(($diff > 0) && (date('z',$now) < date('z',$then)))
    $diff --;
$entity_field[0]['value'] = $diff;

muss ins computed field
Ich hoffe es klappt jetzt - bei mir schon auf's erste.
Die erste if-Anweisung habe ich aber jetzt aber nicht überprüft...
Gruß
Christian

  • Anmelden oder Registrieren um Kommentare zu schreiben

Super, jetzt hat 's auch

Eingetragen von Renardo (60)
am 09.03.2013 - 19:04 Uhr

bei mir geklappt!

Gut, dass es dieses Forum gibt und Leute wie Dich, die echt helfen.

Danke

Renardo

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Tag 3 Stunden
  • Hey danke
    vor 1 Tag 22 Stunden
  • Update: jetzt gibt's ein
    vor 2 Tagen 16 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 2 Stunden
  • Da scheint die Terminologie
    vor 1 Woche 5 Stunden
  • Kannst doch auch alles direkt
    vor 1 Woche 4 Tagen
  • In der entsprechenden View
    vor 1 Woche 4 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 4 Tagen
  • gelöst
    vor 4 Wochen 1 Tag
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 1 Tag

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 12 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association