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

Don't code today what you can't debug tomorrow
Ariya Hidayat

  • 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

Don't code today what you can't debug tomorrow
Ariya Hidayat

  • 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;

Don't code today what you can't debug tomorrow
Ariya Hidayat

  • 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

Don't code today what you can't debug tomorrow
Ariya Hidayat

  • 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

  • Meldung zu Token im Statusbericht
  • Modulupdate per Webinterace scheitert an authorize.php und access denied für Admin-User
  • Fehlermeldung: Deprecated function
  • Warning: call_user_func() expects parameter 1 to be a valid callback, class 'Drupal\node\Entity\Node' does not have a method 'ge
  • Versenden von Anfragen per Webform
  • Goodbye Online Drupal Meetup Germany - Hello Drupal DACH Online Meetup!
  • Übersetzte Felder bei Inhaltstyp automatisch übernehmen
  • Content Ex-/Import
  • RESTful Path request will nicht
  • Wer ist online Block
  • Doppelte Anzeige von Node im View
  • URL-Alias von bestehendem Link wird gelöscht und auf -0 gesetzt 404 Fehler entsteht
Weiter

Neue Kommentare

  • Self-referencing
    vor 7 Stunden 1 Minute
  • settings.php
    vor 7 Stunden 37 Minuten
  • Kulturmensch schrieb Prima
    vor 8 Stunden 34 Minuten
  • Metatag
    vor 8 Stunden 45 Minuten
  • Links
    vor 8 Stunden 3 Minuten
  • Wenn Du nach der
    vor 9 Stunden 49 Minuten
  • Gut zu wissen. Demnächst
    vor 1 Tag 2 Stunden
  • Token Fehler behoben
    vor 1 Tag 2 Stunden
  • Du hast völlig recht, da habe
    vor 1 Tag 7 Stunden
  • Link 404
    vor 1 Tag 11 Stunden

Statistik

Beiträge im Forum: 245974
Registrierte User: 18827

Neue User:

  • finnster
  • Damian1802
  • MrWebMV

» Alle User anzeigen

User nach Punkten sortiert:
wla9010
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3916
ronald3829
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 5 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