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

    aiuto script estrazione record copresi tra due date

    Ciao a tutti,

    ho bisogno di un aiuto per modificare questo script che ho trovato già inserito in una pagina in modo che permetta l'estrazione dei record compresi tra due date. in pratica dovrebbe visualizzare le gli importi delle fatture pagate ai fornitori in un determinato periodo. ringrazio in anticipo scusandomi anche per la mia scarsa preparazione su php.

    lo script è questo:

    form action="cerca_acquistidata.php" method="get">
    Data Inizio <input type="date" name="q" size="10"> Data Fine<input type="date" name="q" size="10">
    <?
    $obj=new sast1com();
    $obj->connessione();
    $result = mysql_query("SELECT *
    FROM acquisti
    WHERE STR_TO_DATE(data,'%d-%m-%Y') <=
    STR_TO_DATE('$ricerca','%d-%m-%Y')
    AND STR_TO_DATE(data,'%d-%m-%Y') >=
    STR_TO_DATE('$ricerca','%d-%m-%Y')")
    or die("Impossibile eseguire la query: ". mysql_error());
    ?>
    </select> <input type="submit" value="Cerca">
    </form>
    <br>
    <table width=95% class="tableborder1">
    <tr>
    <td class="sectionHeading1" width="10">ID</td>
    <td class="sectionHeading1">Fornitore</td>
    <td class="sectionHeading1">Data</td>
    <td class="sectionHeading1">Totale</td>
    <td class="sectionHeading1">Totale (iva inclusa)</td>
    <td class="sectionHeading1" width="20">apri</td>
    <td class="sectionHeading1" width="20">mod</td>
    <td class="sectionHeading1" width="20">canc</td>
    </tr>
    <?
    $q=$_GET['q'];
    $obj->connessione();
    if(strlen($q)>0){
    $result = mysql_query("select acquisti.id,fornitore,data,totale,totaleiva,denomi nazione from acquisti,fornitori where acquisti.data ='$q' order by acquisti.data desc");
    while($array=mysql_fetch_array($result))

    funziona ma tiene conto solo della data di fine.

    potete aiutarmi a correggerlo?

    grazie mille

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Si tratta di un problema con la query, quindi è argomento database, non PHP.

  3. #3
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Hai postato un pezzo di codice in cui ci sono due query... quale non funziona ?
    Già nella prima non mi è chiaro come passi i parametri della query...
    Vedo una variabile $ricerca ripetuta in entrambe le clausole. Vista così (ma non conosco bene php...) mi sembra come se scrivessi

    select.... where data <= '16/11/2014' and data >= '16/11/2014' ....
    l'unica da che verifica entrambe le condizioni è, appunto, la data di fine, cioè il 16/11/2014

    Mi sfugge qualcosa ?

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    la prima query cosa la fai a fare dato che poi non la usi nel tuo codice?

  5. #5
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Quote Originariamente inviata da scriviapiero Visualizza il messaggio
    Ciao a tutti,

    WHERE STR_TO_DATE(data,'%d-%m-%Y') <=
    STR_TO_DATE('$ricerca','%d-%m-%Y')
    AND STR_TO_DATE(data,'%d-%m-%Y') >=
    STR_TO_DATE('$ricerca','%d-%m-%Y')")
    mi sembra che ci sia un po di confusione in questo pezzo, 'data' che è un campo della tabella non ha certo bisogno di essere passato alla funzione str_to_date e comunque il suo formato sarebbe Y-m-d e non d-m-Y come hai messo tu, mentre $ricerca bisogna vedere cosa contiene, persumendo che contenga una data nel classico formato italiano in genere si usano gli "/" come separatori e non i "-" .... quindi premesso che comunque bisogna controllare (magari con un echo) che cosa contiene effettivamente $ricerca, io scriverei così:

    Codice PHP:
    $result mysql_query("SELECT *  
                 FROM   acquisti 
                 WHERE data <=
    STR_TO_DATE('
    $ricerca','%d/%m/%Y')  
                 AND data   >=
    STR_TO_DATE('
    $ricerca','%d/%m/%Y')")  
                 or die(
    "Impossibile eseguire la query: "mysql_error()); 
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  6. #6
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Quote Originariamente inviata da comas17 Visualizza il messaggio
    Vedo una variabile $ricerca ripetuta in entrambe le clausole. Vista così (ma non conosco bene php...) mi sembra come se scrivessi

    select.... where data <= '16/11/2014' and data >= '16/11/2014' ....
    l'unica da che verifica entrambe le condizioni è, appunto, la data di fine, cioè il 16/11/2014
    rileggendo la risposta di comas17 in effetti mi accorgo che, come dice lui, usare la stessa variabile non ha senso, è come chiedere un intervallo di date tra il 16/11/2016 e il 16/11/2016 .... è ovvio che la risposta sarà solo il 16/11/2016
    Ultima modifica di comas17; 16-11-2014 a 15:26
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  7. #7
    Ciao grazie per i suggerimenti e scusate l'inesperienza ma come ho precisato sono alle prime armi e mi piacerebbe molto imparare da chi ne sa di più come voi. il codice l'ho trovato già scritto così e non ha mai funzionato. ho fatto le modifiche suggerite ma non funziona. come dite voi passa solo una data. potete dirmi come lo scrivereste voi, eliminando anche tutto quello che non serve? devo estrarre i dati inserendo un intervallo di date nella form. grazie Piero

  8. #8
    Quote Originariamente inviata da comas17 Visualizza il messaggio
    Hai postato un pezzo di codice in cui ci sono due query... quale non funziona ?
    Già nella prima non mi è chiaro come passi i parametri della query...
    Vedo una variabile $ricerca ripetuta in entrambe le clausole. Vista così (ma non conosco bene php...) mi sembra come se scrivessi

    select.... where data <= '16/11/2014' and data >= '16/11/2014' ....
    l'unica da che verifica entrambe le condizioni è, appunto, la data di fine, cioè il 16/11/2014

    Mi sfugge qualcosa ?
    il risultato è esattamente come hai descritto.. come faccio a scriverla in modo corretto in modo che l'intervallo sia invece tra due date distinte che vado ad inserire nella form? grazie

  9. #9
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    Quote Originariamente inviata da scriviapiero Visualizza il messaggio
    il risultato è esattamente come hai descritto.. come faccio a scriverla in modo corretto in modo che l'intervallo sia invece tra due date distinte che vado ad inserire nella form? grazie
    Dovrai ovviamente modificare il form in modo che sia possibile inserire due date distinte; immaginiamo che tu poi le memorizzi in due variabili che si chiamano $data_inizio e $data_fine

    La query sarà qualcosa del tipo "select.... where data >= $data_inizio and data <= $data_fine"

    (leggiti anche il post di las riguardo l'uso di STR_TO_DATE per convertire le variabili $data_inizio e $data_fine nel formato appropriato)

  10. #10
    Quote Originariamente inviata da comas17 Visualizza il messaggio
    Dovrai ovviamente modificare il form in modo che sia possibile inserire due date distinte; immaginiamo che tu poi le memorizzi in due variabili che si chiamano $data_inizio e $data_fine

    La query sarà qualcosa del tipo "select.... where data >= $data_inizio and data <= $data_fine"

    (leggiti anche il post di las riguardo l'uso di STR_TO_DATE per convertire le variabili $data_inizio e $data_fine nel formato appropriato)

    Ciao grazie mille per il suggerimento. l'ho riscritta così, cercando di interpretare quello che mi hai scritto e i suggerimenti di ias. ma non funziona. vedi qualcosa di strano?

    potresti cambiare le cose che non vanno e ripostarla? scusa ma altrimenti non capisco come cambiarla. grazie

    <form action="cerca_acquistidata.php" method="get">
    Data Inizio <input type="date" name="datainizio" size="10"> Data Fine<input type="date" name="datafine" size="10">
    <?
    $obj=new sast1com();
    $obj->connessione();
    $result = mysql_query("SELECT *
    FROM acquisti
    WHERE data <=
    STR_TO_DATE('$datainizio','%d/%m/%Y')
    AND data >=
    STR_TO_DATE('$datafine','%d/%m/%Y')")
    or die("Impossibile eseguire la query: ". mysql_error());
    ?>
    </select> <input type="submit" value="Cerca">
    </form>
    <br>
    <table width=95% class="tableborder1">
    <tr>
    <td class="sectionHeading1" width="10">ID</td>
    <td class="sectionHeading1">Fornitore</td>
    <td class="sectionHeading1">Data</td>
    <td class="sectionHeading1">Totale</td>
    <td class="sectionHeading1">Totale (iva inclusa)</td>
    <td class="sectionHeading1" width="20">apri</td>
    <td class="sectionHeading1" width="20">mod</td>
    <td class="sectionHeading1" width="20">canc</td>
    </tr>
    <?
    $q=$_GET['q'];
    $obj->connessione();
    if(strlen($q)>0){
    $result = mysql_query("select acquisti.id,fornitore,data,totale,totaleiva,denomi nazione from acquisti,fornitori where acquisti.data >= $datainizio and data <= $datafine, order by acquisti.data desc");
    while($array=mysql_fetch_array($result)){

Tag per questa discussione

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.