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

  • gepatchte PHP Version 7.4 für Windows
  • Canvas Palette: Eine fertige Komponentenbibliothek für Drupal Canvas
  • Hilfe zu Updates oder Composer
  • Vergleich Drupal und Contao
  • [geloest] Blocks in Bootstrap nebeneinander darstellen und nicht untereinander
  • DrupalCamp Frankfurt 27-28 November 2026
  • Bitte mein Bentzerkonto löschen
  • Beim Aufruf einiger Inhalte erhalte ich folgende Fehlermeldung
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
Weiter

Neue Kommentare

  • Muss ja nicht genau php 8.3 sein
    vor 1 Woche 6 Tagen
  • Guten morgen und Danke
    vor 1 Woche 6 Tagen
  • Evtl. versuchen auf PHP 8 zu wechseln
    vor 1 Woche 6 Tagen
  • Danke Schmittrich. Die Frage
    vor 2 Wochen 1 Tag
  • Keine Antwort auf die Frage nach dem Woher
    vor 2 Wochen 1 Tag
  • Danke ich werde mir die
    vor 7 Wochen 6 Tagen
  • Vielen Dank für Ihren
    vor 8 Wochen 2 Tagen
  • Composer ist sehr ratsam
    vor 8 Wochen 4 Tagen
  • Vielen Dank für den
    vor 8 Wochen 6 Tagen
  • Die alten CMS Vergleiche von contentmanager.de
    vor 8 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250323
Registrierte User: 20572

Neue User:

  • alxshell
  • AnthonyhoF
  • Philiphelve

» Alle User anzeigen

User nach Punkten sortiert:
wla9466
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 13 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