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 - 10: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 - 11: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 - 13: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 - 13: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 - 13: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 - 14: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 - 19: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 - 20: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 - 20: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

  • How to Spend a Great Evening at Crash Online Games
  • Neuinstallation: vermutlich ein rewrite-Problem
  • Drupal CMS installieren
  • [erledigt]MP3 in Drupal 10 einbinden
  • (gelöst)Drupal 11 installieren
  • Titel ausblenden
  • Ich brauche dringen Hilfe zu Updates oder ggf. wwie geht Composer?
  • Dynamische Ansicht von Seiteninhalt (als Tabelle?)
  • Vergabe von Berechtigungen für bestimmte Rollen; mir fehlt der Haken bzw. das „Veröffentlicht“
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • Rolle erstellen nicht zu finden
  • für drupal11 ein Slider Modul
Weiter

Neue Kommentare

  • Was für einen Server benutzt
    vor 1 Woche 2 Stunden
  • Wenn die Subdomain auf
    vor 1 Woche 2 Tagen
  • ordnerstruktur
    vor 1 Woche 2 Tagen
  • Die Subdomain muß auf den
    vor 1 Woche 4 Tagen
  • Verwende doch das Tag dafür,
    vor 4 Wochen 6 Tagen
  • Guckst du hier: step by step
    vor 4 Wochen 6 Tagen
  • Guckst du hier: step by step
    vor 4 Wochen 6 Tagen
  • Ich habe ja keine Angst vor
    vor 6 Wochen 1 Tag
  • Ist grundsätzlichmachbar – aber nichts für „einfach mal schnell“
    vor 6 Wochen 3 Tagen
  • Vielen Dank erst einmal, aber
    vor 6 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250290
Registrierte User: 20516

Neue User:

  • RollingSlots
  • Wolf Dab
  • Scottteday

» 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 1 Benutzer und 25 Gäste online.

Benutzer online

  • RollingSlots

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