Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1

    Ottenere l'età da campo date

    Ciao ragazzi,
    mi domandavo se ci fosse la possibilità di ottenere l'età dei miei utenti partendo da un campo DATE valorizzato come YYYY-MM-DD.
    E' possibile fare una query su quel tipo di campo di modo che mi restituisca un valore numerico relativo all'età?


    Grazie

    TIZIANO

  2. #2

    Re: Ottenere l'età da campo date

    Originariamente inviato da Tulipan0nero
    Ciao ragazzi,
    mi domandavo se ci fosse la possibilità di ottenere l'età dei miei utenti partendo da un campo DATE valorizzato come YYYY-MM-DD.
    E' possibile fare una query su quel tipo di campo di modo che mi restituisca un valore numerico relativo all'età?


    Grazie

    TIZIANO
    Ho trovato un vecchio post ma lo script non era completo, penso sia cmq un punto di partenza:

    Codice PHP:
    function eta($nascita){ 
        
    $s="SELECT *, if(date_format(data_nascita, '%m%d') <= date_format(now(), '%m%d'), year(now()) - year(data_nascita), year(now()) - year(data_nascita) -1) as eta
    FROM utenti WHERE nascita='
    $nascita'";
        
    $r=mysql_query($s); 
        
    $d=mysql_fetch_array($r); 
        return 
    $d['eta']; 

    Potrebbe andare?


    Tiziano

  3. #3
    Il mio obiettivo in soldoni è: ricavarmi un array con tutte le età ; sommarle ed ottenere il totale....quindi suddividere il numero per le occorrenze in modo da trovare l'età media.

    Tiziano

  4. #4
    Originariamente inviato da Tulipan0nero
    Il mio obiettivo in soldoni è: ricavarmi un array con tutte le età ; sommarle ed ottenere il totale....quindi suddividere il numero per le occorrenze in modo da trovare l'età media.

    Tiziano
    Se non erro per ottenere la somma dei valori del mio array $r mi dovrebbe bastare fare un:
    codice:
    $somma = array_sum($r);
    A questo punto mi manca la divisione per ottenere la media...

    codice:
    $qry ="SELECT COUNT(*) nascita from utenti";
    $result = mysql_query($qry);
    $media=$somma/$result
    In linea di massima ovviamente....


    Tiziano

  5. #5
    Ricapitolando quindi:

    Codice PHP:
    function etamedia
    {  
        
    $query1="SELECT *, if(date_format(nascita, '%m%d') <= date_format(now(), '%m%d'), year(now()) - year(nascita), year(now()) - year(nascita) -1) 
     FROM utenti WHERE nascita='
    $nascita'"
        
    $r=mysql_query($query1);  
        
    $somma array_sum($r);
    $query2 ="SELECT COUNT(*) nascita from utenti";
    $result mysql_query($query2);
    $media=$somma/$result
    return $media;  

    Chi mi da una mano a correggere/completare la funzione?

    Grazie come sempre!!

    Tiziano

  6. #6
    Ulteriore modifica ma non va ancora:

    Codice PHP:
    function media() {
    {   
    $query1="SELECT nascita, if(date_format(nascita, '%m%d') <= date_format(now(), '%m%d'), year(now()) - year(nascita), year(now()) - year(nascita) -1) FROM utenti";
    $r=mysql_query($query1);   
    $somma array_sum($r); 
    $query2 ="SELECT COUNT(*) nascita from utenti"
    $result mysql_query($query2); 
    $media=$somma/$result 
    return $media;   


  7. #7
    Ho semplicemente lasciato perdere la funzione e scritto direttamente il tutto come codice nella pagina:

    Codice PHP:
    $query="SELECT nascita, if(date_format(nascita, '%m%d') <= date_format(now(), '%m%d'), year(now()) - year(nascita), year(now()) - year(nascita) -1) FROM utenti";
    $r=mysql_query($query);   
    $somma array_sum($r); 
    $query ="SELECT COUNT(*) nascita from utenti"
    $result mysql_query($query); 
    $media=$somma/$result 

    Tuttavia il valore di $media è sempre zero.....lo calcolo esattamente?

  8. #8
    Il problema sta sicuramente qui:
    $media=$somma/$result ;
    Perchè se prendo la query che mi da le date di nascita e quella che mi da il numero di record e le eseguo singolarmente su phpmyadmin ottengo dei risultati.
    Quindi ci deve essere qualcosa che non va quando cerco di ottenere il risultato della divisione delle due variabili.....

    Qualche idea?

    Tiziano

  9. #9
    Sto impazzendo!
    Ho trovato un vecchio post di Satival dove si discuteva di questo problema ed alla fine era venuto fuori uno script che ho riadattato alle mie esigenze.
    Codice PHP:
    $querymedia="SELECT nascita, if(date_format(nascita, '%m%d') <= date_format(now(), '%m%d'), year(now()) - year(nascita), year(now()) - year(nascita) -1) FROM utenti WHERE nascita>'0000-00-00' and nascita<'2012-00-00'";
    $result mysql_num_rows($querymedia); 
    $sum 0
    while (
    $dati mysql_fetch_array($querymedia)) { 
        
    $sum += $dati['nascita']; 

    if(
    $result>0){ 
    $media $sum $result
    echo 
    $media;

    Il problema che echo $media mi da un valore NULLO! Vuoto! E non capisco perchè dato che se lancio la prima query
    codice:
    $querymedia="SELECT nascita, if(date_format(nascita, '%m%d') <= date_format(now(), '%m%d'), year(now()) - year(nascita), year(now()) - year(nascita) -1) FROM utenti WHERE nascita>'0000-00-00' and nascita<'2012-00-00'";
    Mi viene fuori un array composto da una trentina di valori che oscillano tra il 40 ed il 50.
    Mentre la somma è uguale a 30.
    La Media quindi sarebbe circa 45.
    Ma continuo a non visualizzare nessun risultato...PERCHE'?????


    Tiziano

  10. #10
    Ecco lo script che funziona:
    Codice PHP:
    $querymedia mysql_query("SELECT nascita, if(date_format(nascita, '%m%d') <= date_format(now(), '%m%d'), year(now()) - year(nascita), year(now()) - year(nascita) -1) FROM utenti WHERE nascita>'0000-00-00' and nascita<'2012-00-00'");
    $rows mysql_num_rows($querymedia); 
    $sum 0
    while (
    $dati mysql_fetch_array($querymedia)) { 
        
    $sum += $dati['nascita']; 

    if(
    $rows>0){ 
    $media $sum $rows


    Ho però un solo problema: il valore che mi viene fuori è 1265....il che non è possibile!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.