Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17

Discussione: Controllo date [php]

  1. #11
    Originariamente inviato da Nick083
    No, i dati ce li ho proprio in un campo della tabella utenti del mio database. user è il campo con il nome dell'utente e data_di_nascita è proprio il dato in formato date dell'utente. Comunque è fattibile una cosa del genere? Gli anni delle date da confrontare però saranno sempre e comunque diverse. Bisogna cercare di togliere l'anno dalla data salvata nel campo data_di_nascita del database..
    Ma scusa tanto... quello che ti ho postato va bene per fare flanella???

    devi solo precisare come' il formato della data. Cosa significa in formato date dell'utente?

    Capisci che non ha senso estrarre tutta la tabella per scorrere i record con un for.... UNIX TIMESTAMP poi ha dei limiti temporali ben precisi e quindi non e' indicato a gestire le date di nascita.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  2. #12
    Scusami piero.mac, in effetti il tuo codice va benissimo, ma c'è solo un piccolo particolare. Il confronto tra MONTH(now()) e MONTH(data_nascita) risulterà per la maggior parte dei mesi falso in quanto a settembre, per esempio, MONTH(now()) restituisce 9 mentre MONTH(data_nascita) restituisce 09 che sono due cose diverse. Stessa cosa vale per i giorni naturalmente. E' possibile ovviare a questo problema?? So che probabilemente sono cavolate, ma sono ancora un neofita del php e mysql...

  3. #13
    Per ovviare al problema del giorno e del mese descritto prima ho fatto, prendendo spunto da piero.mac, così:

    $giorno_corrente = date("j"); //il giorno è il numero del giorno senza lo 0 iniziale
    $mese_corrente = date("n"); //il mese è il numero del mese senza lo 0 iniziale

    //$query = "SELECT user FROM utenti WHERE MONTH(now()) = MONTH((data_di_nascita)) AND (DAYOFMONTH(now()) = DAYOFMONTH(data_di_nascita));"; //Impostiamo la query per l'inserimento dei dati...
    $query = "SELECT user FROM utenti WHERE MONTH(data_di_nascita)=='$mese_corrente' AND DAYOFMONTH(data_di_nascita)='$giorno_corrente';"; //Impostiamo la query per l'inserimento dei dati...
    $result = mysql_query($query, $myconn) or die("Errore...");
    $numrows = mysql_num_rows($result); //conto il numero di occorrenze trovate nel db
    if (numrows!=0) {
    $resrow = mysql_fetch_row($result);
    $compleanno_user = $resrow[0];
    echo "<h1>Buon compleanno";
    echo " $compleanno_utente </h1>";
    }

    Però non mi trova nessuna occorrenza anche se metto utenti con il compleanno nella data di oggi... Perchè?

  4. #14
    Originariamente inviato da Nick083
    Il confronto tra MONTH(now()) e MONTH(data_nascita) risulterà per la maggior parte dei mesi falso in quanto a settembre, per esempio, MONTH(now()) restituisce 9 mentre MONTH(data_nascita) restituisce 09 che sono due cose diverse.
    Ma dove lo hai letto ????

    :master:

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #15
    Beh, piero.mac, la pratica vale 1000 volte la teoria. Basta far stampare a video quello che restituisce e ci si accorge che uni stampa 09 e l'altro 9. Ora, lo sappiamo tutti e due che sono uguali però se scrivo if (MONTH(NOW()) = MONTH(data_di_nascita) { ... } quello salterà questo if perchè lo considererà falso... L'ho provato!

  6. #16
    Originariamente inviato da Nick083
    Beh, piero.mac, la pratica vale 1000 volte la teoria. Basta far stampare a video quello che restituisce e ci si accorge che uni stampa 09 e l'altro 9. Ora, lo sappiamo tutti e due che sono uguali però se scrivo if (MONTH(NOW()) = MONTH(data_di_nascita) { ... } quello salterà questo if perchè lo considererà falso... L'ho provato!
    Allora ti ripeto per l'ultima volta:

    La query che ti ho proposto non usa alcuna if, la comparazione la fa nella tabella direttamente MySQL.

    Per quale ragione devi prendere la data da "UNA STRINGA" in php quando puoi avere la data corrente "IN FORMATO DATA" da mysql?????
    codice:
    SELECT *, YEAR(now()) - YEAR(data_nascita) as eta
    FROM TABELLA
    WHERE MONTH(data_nascita) = MONTH(now()) 
    AND DAYOFMONTH(data_nascita) = DAYOFMONTH(now()) 
    
    
    --- questa sotto e' la tua, contiene pure errori che non rilevi
    
    $query = "SELECT user FROM utenti 
              WHERE MONTH(data_di_nascita) == '$mese_corrente'
              AND DAYOFMONTH(data_di_nascita) = '$giorno_corrente';";
    Ma ultimamente sempre piu' spesso mi rendo conto di perdere tempo a rispondere ai post.

    Sorry per averti confuso. Ti assicuro che non ti succedera' piu'.



    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #17
    Ho risolto tutto grazie a te piero.mac! Ti ringrazio moltissimo. In realtà quel codice che avevo fatto sapevo che conteneva errori era l'idea che volevo mostrarti. Cmq il tuo codice all'inizio non mi girava bene, non so perchè. Dopo l'ho ricopiato un'altra volta e adesso va da Dio.. Boh, misteri dell'sql.. Grazie mille ancora.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.