Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Confronto tra date dal database

    Ciao a tutti.
    Ho un problema che potrebbe essere banale, ma non sto venendo a capo.
    Nel database ho un campo di tipo DATE (yyyy-mm-dd)

    Come faccio nella Form di inserimento a fare passare il valore della Casella di Testo (dd-mm-yyyy) al database nel formato (yyyy-mm-dd)?

    Viceversa

    Come faccio, passando il valore di una variabile presa da una casella di testo di un form in formato (dd-mm-yyyy), ad eseguire una Query sulla tabella sul campo di tipo DATE (yyyy-mm-dd) considerando come clausola di WHERE proprio il valore di questa variabile?

    C'è qualche funzione che permette il cambiamento di formato?
    In inserimento da (dd-mm-yyyy) in (yyyy-mm-dd)
    In Select da (dd-mm-yyyy) in (yyyy-mm-dd)

    Spero di essere stato chiaro. :berto:

  2. #2
    codice:
    list($giorno, $mese, $anno) = explode('-', '25-03-2008');
    $pippo ="$anno-$mese-$giorno";
    per estrarre la data:

    codice:
    select *, date_format(campo_data, '%d-%m-%Y') ....
    from etc...

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

  3. #3
    grazie x aver risposto.
    Nella query che faccio mi dà questo errore:

    codice:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\programmi\easyphp1-8\www\verificadata\verificadata.php on line 14
    il codice è questo:
    Codice PHP:
    <?
    INCLUDE('config.php');
    $connessione mysql_connect($db_host$db_user,$db_password) or die("Connessione fallita !"); 
    @
    mysql_select_db($db_name) or die("Selezione Database fallita !"); 

    $DataInizio=$_GET['DataInizio'];
    $DataFine=$_GET['DataFine'];

    $query="SELECT IdMateriale,Codice_Materiale,Descrizione,date_format(DataAggiornamento,'%d-%m-%y') as Datamia FROM materiale WHERE Datamia >='$DataInizio' and Datamia <='$DataFine' ";
    $risultato_query mysql_query($query$connessione); 

                 echo 
    "  <table border=\"0\" width=\"27%\">\n";

      while(
    $riga=mysql_fetch_array($risultato_query)){ 
         
                 
    $IdMateriale=$riga["IdMateriale"];
                 
    $CodiceMateriale=$riga["Codice_Materiale"];
                 
    $Descrizione=$riga["Descrizione"];

    echo 
    "    <tr>\n";
    echo 
    "      <td class=\"testolabel\"td width=\"31%\">CodiceMateriale</td>\n";
    echo 
    "      <td class=\"testobox\"> [b]$CodiceMateriale</td>\n";
    echo 
    "    </tr>\n";
    echo 
    "    <tr>\n";
    echo 
    "      <td class=\"testolabel\"width=\"31%\">Descrizione</td>\n";
    echo 
    "      <td class=\"testobox\">   [b]$Descrizione</td>\n";
    echo 
    "    </tr>\n";
    echo 
    "    <tr>\n";
    }
    echo 
    "  </table>\n";
    ?>
    mi dite dove sbaglio?

  4. #4
    sbagli ad usare l'alias "datamia" nel where. Sbagli per almeno due ragioni:

    1) il formato di datamia e' una stringa e non una data e quindi verrebbe comparato come stringa.

    2) Il where viene risolto prima dei campi descritti in select e quindi a quel momento non esiste ancora il campo alias.

    metti la segnalazione di errore alla query.

    $risultato_query = mysql_query($query, $connessione) or die(mysql_error());

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

  5. #5
    secondo me é meglio che le date le salvi nel db usando mktime e usi campi int..ciao

  6. #6
    grazie per i chiarimenti.
    Ho levato l'ALIAS.
    e ho risolto in questo modo, anche se secondo me un pò GROSSOLANO.
    Codice PHP:
    <?
    INCLUDE('config.php');
    $connessione mysql_connect($db_host$db_user,$db_password) or die("Connessione fallita !"); 
    @
    mysql_select_db($db_name) or die("Selezione Database fallita !"); 

    $DataInizio=$_GET['DataInizio']; // mi restituisce (solo perchè lo scrivo io nel form) una  
                                                //stringa cosi: dd-mm-yyyy
    $DataFine=$_GET['DataFine'];

    $date $DataInizio;
    $dd substr($date02); // estraggo dalla posizione 1 di $date il valore composto da 2 caratteri
    $mm substr($date32); // estraggo dalla posizione 4 di $date il valore composto da 2 caratteri
    $YY substr($date64); // estraggo dalla posizione 7 di $date il valore composto da 4 caratteri

    $customdateInizio=date("Y-m-d",mktime(0,0,0,$mm,$dd,$YY)); // creo un formato data ymd


    $date1 $DataFine;
    $dd1 substr($date102);
    $mm1 substr($date132);
    $YY1 substr($date164);
    $customdateFine=date("Y-m-d",mktime(0,0,0,$mm1,$dd1,$YY1));

    $query="SELECT IdMateriale,Codice_Materiale,Descrizione,DataAggiornamento FROM materiale WHERE DataAggiornamento BETWEEN '$customdateInizio' AND  '$customdateFine'";


    $risultato_query mysql_query($query$connessione) or die(mysql_error());

                 echo 
    "  <table border=\"0\" width=\"27%\">\n";

      while(
    $riga=mysql_fetch_array($risultato_query)){ 
         
                 
    $IdMateriale=$riga["IdMateriale"];
                 
    $CodiceMateriale=$riga["Codice_Materiale"];
                 
    $Descrizione=$riga["Descrizione"];

    echo 
    "    <tr>\n";
    echo 
    "      <td class=\"testolabel\"td width=\"31%\">CodiceMateriale</td>\n";
    echo 
    "      <td class=\"testobox\"> [b]$CodiceMateriale</td>\n";
    echo 
    "    </tr>\n";
    echo 
    "    <tr>\n";
    echo 
    "      <td class=\"testolabel\"width=\"31%\">Descrizione</td>\n";
    echo 
    "      <td class=\"testobox\">   [b]$Descrizione</td>\n";
    echo 
    "    </tr>\n";
    echo 
    "    <tr>\n";
    }
    echo 
    "  </table>\n";

    ?>
    Ora il mio problema è quello di fare in modo che l'utente effettivamente scriva dei numeri nelle date, separati da trattini (-).
    Come posso fare questo controllo nel codice postato?
    Grazie
    !

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