L'errore sta qui
Codice PHP:
// Stessa cosa per i giorni
elseif (date('d') <$giorno)
$eta--;
Si devono confrontare 29/1/1982 e 26/12/2009
Codice PHP:
<?php
function calcola_eta($datanascita)
{
// Ricavo giorno, mese e anno
list($giorno, $mese, $anno) = explode("/", $datanascita);
// Calcolo anni
$eta = date('Y') - $anno; //vale 27
if (date('m') <$mese) //condizione falsa, passo all'else if
$eta--;
// Stessa cosa per i giorni
else if (date('d') <$giorno) //condizione vera, ma la condizione è sbagliata, non deve essere comunque eseguita
$eta--; //ora $eta vale 26
return $eta;
}
echo "".calcola_eta("29/01/1982")."";
?>
cambia la condizione dell'else if con questo:
Codice PHP:
else if (date('d') <$giorno && date('m') == $mese)
Per fortuna sei nato il 29 e oggi non è il 29, 30 o 31. Se fossi nato il primo del mese non ti saresti mai accorto di questo bug provando con la tua data di nascita.