Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617

    Problema nel gestire le date del database.

    Scusate, non so proprio come definire il prblema.

    Allora, ho questa necessità.
    Ho un database nel quale vengono salvate le date di scadenza delle tessere socio.
    Vorrei fare un pannellino nel quale vengono riportati gli utenti in scadenza, dove essere in scadenza significa che mancano 30 giorni alla data di scadenza.

    In pratica dovrei fare una query alla tabella dove (WHERE) la differenza tra la data odierna e il campo scadenza sia inferiore o uguale a 30 giorni.

    Ma come cavolo posso fare?

    Grazie in anticipo!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    In che formato salvi le date nel database?

    Consiglio, usa il formato di MySQL, ovvero aaaa-mm-gg e dichiara il campo come DATE (DATETIME se ti interessa anche l'orario).
    In questo modo puoi usare la funzione DATEDIFF() per selezionare i soci con tessera in scadenza.

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    il formato è quello di mysql, lo converto solo nelle query che faccio.

    Quello che non capisco è come scrivere la query facendo presente che i risultati devono avere la data di scadenza minore di 30 giorni dalla data attuale.

    In pratica se la data di scadenza è 2012-01-20 deve comparirmi i dati di questa tessera perchè la tessera sccade domani, se invece la data di scadenza è 2013-01-20 allora non mi deve comparire perchè la scadenza è maggiore di 30 giorni.

    Ma non capisco come fare la query franxcamente.

    Grazie

  4. #4
    Originariamente inviato da Alhazred
    In che formato salvi le date nel database?

    Consiglio, usa il formato di MySQL, ovvero aaaa-mm-gg e dichiara il campo come DATE (DATETIME se ti interessa anche l'orario).
    In questo modo puoi usare la funzione DATEDIFF() per selezionare i soci con tessera in scadenza.
    Te l'ha suggerito Alhazred come fare. Basta utilizzare la funzione DATEDIFF() alla quale presumo tu abbia dato già un'occhiata
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Come specificato nel regolamento che nessuno legge, esiste una sezione "database".
    Sposto.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    617
    Bhe si, ho guardato DATEDIFF ma, come detto prima, non riesco a scrivere la query. ecco cosa ne è uscito fino adesso:

    codice:
    $data_odierna=date('Y-m-d');
    			
    						
    			$scadenze=mysql_query("SELECT* FROM tesserati WHERE DATEDIFF('$data_odierna',data_scadenza) <= 30");
    			while($temp=mysql_fetch_array($scadenze)){
    				
    				$nome=$temp['nome'];
    								
    				echo"$nome";
    												
    				}
    Ovviamente c'è qualche cosa che non va, non restituisce nulla. Il 30 per me sono i giorni ma non so se è corretto scrivere così la query.

    Grazie in anticipo!

  7. #7
    codice:
    SELECT * FROM tesserati WHERE DATEDIFF(data_scadenza, SYSDATE()) >= 0 AND DATEDIFF(data_scadenza, SYSDATE()) <= 30
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.