Visualizzazione dei risultati da 1 a 9 su 9

Discussione: controllo su curdate()

  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    controllo su curdate()

    ciao a tutti
    dovrei fare un controllo sulla data attuale e la data di scadenza di un'offerta ma non saprei la sintassi esatta.

    Qualcosa tipo:

    if(curdate()>$valida_fino){
    echo"OFFERTA SCADUTA";
    }

    valida_fino e' il campo del database che indica la scadenza dell'offerta e nel db ho valori tipo 20130505

    Come posso sistemarlo?
    Grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Visto che nel db hai la data nel formato aaaammgg e che questa si comporta esattamente come un normale numero per quanto riguardo l'ordinamento, potresti fare così
    Codice PHP:
    if ( date('Ymd') > $valida_fino)
    {
        echo 
    "OFFERTA SCADUTA";


  3. #3
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    ciao Alhazred

    ho detto una cavolata, nel db i dati entrano in questo modo 2013-03-09

    Ho provato con il tuo codice ma mi da sempre "offerta scaduta" forse perche' nel db i valori non sono come li richiede il tuo codice?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Si, non funziona per quello, ma così dovrebbe andare ugualmente

    if ( date('Y-m-d') > $valida_fino)

  5. #5
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    niente, nemmeno ora funziona.
    Vediamo se ce ne usciamo

    Allora nel database li inserisco in questo modo 2013-05-05

    nella query per estrarre l'offerta aggiungo DATE_FORMAT e cioe'

    DATE_FORMAT(valida_fino, '%d/%m/%Y') AS valida_fino_ita

    Quindi presumiamo che il campo valida_fino esca in questo modo 05/05/2013

    Sapendo queste cose, come lo modifichiamo?

  6. #6
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    sto provando cosi':

    Codice PHP:
    $oggi=date(dmY);

    if (
    $oggi $valida_fino)
    {
        echo 
    ".";

    sembra funzionare ma nono sono sicuro se la sintassi e' corretta

  7. #7
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Come tu stesso hai detto, prendendo la data dal db con DATE_FORMAT quest ti viene restituita nel formato 05/05/2013, mentre date('dmY') ti direbbe 05052013 che come ben vedi non sono la stessa cosa, alla seconda mancano i separatori /

    Ad ogni modo, il formato gg/mm/aaaa non rispetta i criteri di ordinamento dei normali numeri o delle stringhe (ciò che confronta l'operatore > ) perché ad esempio

    05/05/2013 risulterebbe > 04/01/2020, poiché 05 viene dopo di 04 a > non importa il resto, non sa che quella è una data.

    Io ho provato come ti ho detto l'altra volta e a me non da problemi, può essere che hai scritto male il codice? I separatori tra giorno, mese ed anno o li metti a tutte e 2 le date, o non li metti a nessuna.
    Inoltre l'ordine deve essere anno, mese, giorno, altrimenti l'ordinamento non funziona.

  8. #8
    curdate() e' una funzione di mysql che estrae la data corrente nel formato yyyy-mm-dd, non si possono mixare funzioni mysql e php ...

    Converti la data del database in unix timestamp e compara quello

    codice:
     
    select unix_timestamp(campo_data_scadenza) as scadenza
    from ....
    
    // estrai il campo scadenza e poi in php 
    
    if ( time() > $scadenza)
    {
        echo "OFFERTA SCADUTA";
    }
    oppure puoi fare tutto in SQL

    codice:
    select if(unix_timestamp() > unix_timestamp(data_scadenza), 'scaduto', 'valido') as esito
    
    // oppure
    
    select if(curdate() > data_scadenza, 'scaduto', 'valido') as esito
    sostanzialmente come spiegato da Alhazred. ma non mixare le funzioni php e mysql

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

  9. #9
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    forse ho risolto, ma potete dare uno sguardo per capire se tutto e' a posto?
    Grazie fino ad ora

    Codice PHP:
    $query_controllo_validita="select unix_timestamp(valida_fino) as scadenza from offer where id_offerta=\"$id_offerta\"";

    $risultato_controllo_validita = @mysql_query($query_controllo_validita) or die(mysql_error()); 
    while (
    $riga_controllo_validita mysql_fetch_array($risultato_controllo_validita)) {
    $scadenza $riga_controllo_validita['scadenza'];
    }
    if ( 
    time() > $scadenza)
    {
        echo 
    "OFFERTA SCADUTA";


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.