compute field: ricavare età dalla data di nascita

3 contenuti / 0 new
Ultimo contenuto
compute field: ricavare età dalla data di nascita

Ciao!
sto cercando di avere un campo nel profilo che mi mostri l'età dell'utente, calcolandola dalla data di nascita.

Per ora ho fatto così: ho creato un campo data (field_dob), da cui l'utente possa inserire la sua data di nascita. Poi ho installato il modulo computed field e ho creato un campo computed (field_age) e ho inserito questo codice:

if (!$node->nid) node_save($node);
$today = time();
$date_of_birth = date_make_date($node->field_dob[0]['value']);
$date_parts = $date_of_birth->db->parts;
$year_diff = date("Y") - ($date_parts['year']);
$month_diff = date("m") - ($date_parts['mon']);
$day_diff = date("d") - ($date_parts['day']);
    if ($month_diff < 0)
      $year_diff--;
    elseif ($month_diff == 0 && $day_diff < 0)
      $year_diff--;
$node_field[0]['value'] = $year_diff;

solo che poi nel profilo mi visualizza: 2008.
qualche idea di dove sia l'errore? :S

Ho risolto, modificando il codice in questo modo:

if (!$node->nid) node_save($node);
  $dob = $node->field_dob[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;

per usarlo, basta cambiare dob con il nome del vostro campo.
lo posto nel caso qualcun* si trovi nelle mie stesse condizioni :wink:

Grazie Railslide
è servito a me
:-)