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

  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • 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
Weiter

Neue Kommentare

  • Im Grunde ist dass ein
    vor 21 Stunden 35 Minuten
  • Naja ich habe nichts an den
    vor 1 Woche 5 Tagen
  • Ich sehe ja dein Theme nicht
    vor 1 Woche 6 Tagen
  • Zwischenzeitlich habe ich
    vor 2 Wochen 1 Tag
  • Ok ich habe die anderen
    vor 2 Wochen 1 Tag
  • Toll
    vor 2 Wochen 2 Tagen
  • Vielen Dank
    vor 2 Wochen 2 Tagen
  • Vielen Dank für diese sehr
    vor 2 Wochen 2 Tagen
  • Wieso willst du dass denn
    vor 2 Wochen 2 Tagen
  • Oh, der Klassiker unter den
    vor 2 Wochen 2 Tagen

Statistik

Beiträge im Forum: 250260
Registrierte User: 20474

Neue User:

  • JeffreyPaf
  • StevenEness
  • ocvk2810

» Alle User anzeigen

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