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
:-)