data una variabile $conv_datan (formato aaaa/mm/gg) dovrei calcorare l'età in giorni e non in anni, perchè con questo script devo calcorare successivamente se l'utente ha meno di 365*18 giorni o più di 365*40 giorni.
help!![]()
data una variabile $conv_datan (formato aaaa/mm/gg) dovrei calcorare l'età in giorni e non in anni, perchè con questo script devo calcorare successivamente se l'utente ha meno di 365*18 giorni o più di 365*40 giorni.
help!![]()
Se usi mysql 4.1 c'e' una funzione per te... Se no... no.Originariamente inviato da Base
data una variabile $conv_datan (formato aaaa/mm/gg) dovrei calcorare l'età in giorni e non in anni, perchè con questo script devo calcorare successivamente se l'utente ha meno di 365*18 giorni o più di 365*40 giorni.
help!![]()
SELECT DATEDIFF(NOW(),'$conv_datan')
rende il numero dei giorni tra ora e la data_nascita. Bisestili compresi.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Beh! dai, sei hai la 4.0 usa FROM_DAYS TO_DAYS
http://forum.html.it/forum/showthrea...hreadid=459634
parte terza....
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
ciao piero.mac, ho mysql 4.0.22![]()
ho inizialmente provato una funzione che aveva postato non mi ricordo chi su questo forum... sarebbe questa:
il prob è che nel mio file php, prima effettuo dei controlli (tra cui il calcolo dell'età con il relativo if 18<>40) e poi se passa questi controlli si connette al db e partono dei controlli anche sul db.Codice PHP:
function EtaByMysql($data) {
$link = mysql_connect();
list($giorno, $mese, $anno) = explode('/',$data);
$res1= mysql_query("select DATE_SUB(CURDATE(), INTERVAL '$giorno' DAY) as day");
$new = mysql_result($res1,0,"day");
$res2= mysql_query("select DATE_SUB('$new', INTERVAL '$anno-$mese' YEAR_MONTH) as new_data");
list($anno, $mese, $giorno) = explode('-', mysql_result($res2,0,'new_data'));
$anno = $anno * 1; // per eliminare gli zero davanti al numero
if ($giorno >= 30 ) { $mese = $mese + 1; $giorno = 0 ; }
if ($mese >= 12) { $anno = $anno + 1; $mese = 0 ; }
echo "data nascita $data
";
echo "Anni $anno, Mesi $mese, Giorni " .$giorno*1;
}
EtaByMysql('21/07/1964');
?>
se tutti questi controlli vanno a buon fine, l'utente puo' continuare con la registrazione.
se metto questo script prima della connessione al db non funziona, se lo metto dopo si.
per questo ho postato una nuova domanda... per evistare tutto sto discorso che non so neanche se venga capito...
oltre tutto la funz che ho postato non calcolava il numero dei giorni.
per FROM DAY TO DAYS avrei bisogno di un esempio per favore.
una curiosità
per utilizzare una funzione mysql mi devo connettere ad un db?
come funziona esattamente?![]()
Brr... sono in pausa caffe' e con il cervello che fibrilla di script. Scusa ma non ce la faccio a leggere il tuo (mio) script.
Rispondo piuttosto alla tua prima domanda. Quanti giorni intercorrono tra due date:
in questo modo ottieni il numero dei giorni con mysql 4.0.22codice:SELECT TO_DAYS(NOW()) - TO_DAYS('$data_nascita') AS giorni
Quella funzione l'avevo postata io, mi ricordo il nome della funz.
Serve ad avere anni, mesi, giorni e nada mas....
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
Non serve un db, basta una connessione qualunque. per estrarre il dato usa il solito mysql_fetch_row...Originariamente inviato da Base
una curiosità
per utilizzare una funzione mysql mi devo connettere ad un db?
come funziona esattamente?![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
ho provato così:
mi da come risultato "array" dove sbaglio?Codice PHP:
$ric_eta = mysql_query("SELECT TO_DAYS(NOW()) - TO_DAYS('$conv_datan') AS giorni")
or die("Errore: " . mysql_error());
$etasql = mysql_fetch_row($ric_eta);
echo "$etasql";
![]()
ho risolto:
se viene inserita la data: 1977-07-22Codice PHP:
$ric_eta = mysql_query("SELECT TO_DAYS(NOW()) - TO_DAYS('$conv_datan') AS giorni")
or die("Errore: " . mysql_error());
$etasql = mysql_fetch_array($ric_eta);
$giorni = $etasql['giorni'];
echo "$giorni";
mi restituisce: 10036
dovrebbe essere giusto, è la mia data di nascita e dividendo 10036 per 365 ottengo 27,49... ho 27 anni effettivamente
chi mi da conferma per favor?![]()
per piero.mac: ho usato mysql_fetch_array() tu dicevi mysql_fetch_row() ci sono arrivato comunque o è un errore?
altra dom: come faccio ora a sapere con sicurezza quanti giorni sono 18 anni? 365*18 puo' essere giusto? e i bisestili?
che casino![]()
Solo col php:
$data="2005/01/05";
$data_array=explode("/",$data);
$secondi_eta=time()-mktime(0,0,0,$data_array[1],$data_array[2],$data_array[0]);
$giorni_eta=$secondi_eta/60/60/24;
print $giorni_eta;