Visualizzazione risultati 1 fino 5 di 5

Discussione: problemi con query e array

  1. #1
    fper non è connesso Utente giovane
    Data registrazione
    02-12-2002
    Messaggi
    56

    Predefinito problemi con query e array

    Ho una tabella con 2 campi di date che ho chiamato “da” e “a”.
    Su questa tabella, ho eseguito il codice di seguito riportato che mi ha dato come risultato la differenza in giorni tra la data finale “a” e la data iniziale “da” di ogni record.

    Codice PHP:
    $query = "SELECT * FROM date ORDER BY id asc";
    mysql_query( $query, $link );
    $result = mysql_query($query);
    while (
    $a_row = mysql_fetch_array( $result ))
    {
    $durata=$a_row[a]-$a_row[da];
    $minuti=$durata/60;
    $ore=$minuti/60;
    $giorni=$ore/24;
    $giorni2=round($giorni, 0);
    print (
    "DA ");
    print
    date("d/m/Y", $a_row[da]);
    print (
    " ");
    print (
    "A ");
    print
    date("d/m/Y", $a_row[a]);
    print (
    " ");
    print (
    "GIORNI ");
    print (
    "$giorni2");
    print (
    "<br>");
    }
    Il risultato ottenuto è stato:

    DA 14/08/1969 A 08/03/1970 GIORNI 206
    DA 09/03/1970 A 04/04/1971 GIORNI 391
    DA 05/04/1971 A 13/10/1971 GIORNI 191
    DA 14/10/1971 A 30/01/1972 GIORNI 108
    DA 31/01/1972 A 09/04/1972 GIORNI 69

    Fin qui tutto bene.
    Ora vorrei selezionare dalla stessa tabella solo quegli intervalli compresi tra due date da me specificate, ad esempio tra il 12/03/1970 e il 27/01/1972 in modo da avere questo risultato:

    DA 12/03/1970 A 04/04/1971 GIORNI 388
    DA 05/04/1971 A 13/10/1971 GIORNI 191
    DA 14/10/1971 A 27/01/1972 GIORNI 105

    Come posso modificare il codice di sopra?
    Ciao e grazie a chi mi vorrà aiutare.
    Fabio.
    Ultima modifica di funcool : 17-03-2007 alle ore 10.10.23
    Report di pesca in mare.
    http://fper.altervista.org/pescare

    Sito ospitato (poesie di un autore emergente)
    http://fper.altervista.org/ftib

  2. #2
    Guest

    Predefinito

    Codice:
    SELECT * FROM date WHERE da <= '(timestamp)' AND a >= '(timestamp)' ORDER BY id asc
    Se è sbagliata scusatemi, non sono ancora molto lucido...

  3. #3
    fper non è connesso Utente giovane
    Data registrazione
    02-12-2002
    Messaggi
    56

    Predefinito

    Citazione Originalmente inviato da neoscript
    Se è sbagliata scusatemi, non sono ancora molto lucido...
    Non è sbagliata ma non risolve il mio problema: infatti con questa query riesco a selezionare gli intervalli compresi tra le due date di mio interesse ma ho bisogno che la data iniziale e quella finale siano esattamente quelle selezionate rispettivamente nel primo e nell'ultimo intervallo.
    In altre parole con la selezione 12/03/1970 e 27/01/1972 vorrei questo risultato:

    DA 12/03/1970 A 04/04/1971 GIORNI 388
    DA 05/04/1971 A 13/10/1971 GIORNI 191
    DA 14/10/1971 A 27/01/1972 GIORNI 105

    e non questo:

    DA 09/03/1970 A 04/04/1971 GIORNI 391
    DA 05/04/1971 A 13/10/1971 GIORNI 191
    DA 14/10/1971 A 30/01/1972 GIORNI 108

    C'è la possibilità di intervenire sul primo e sull'ultimo risultato dell'array per sostituirli con le date di mio interesse?
    Report di pesca in mare.
    http://fper.altervista.org/pescare

    Sito ospitato (poesie di un autore emergente)
    http://fper.altervista.org/ftib

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    La query dovrebbe essere questa, in teoria...
    Codice:
    SELECT * FROM date WHERE da >= '(timestamp)' AND a <= '(timestamp)' ORDER BY id asc
    Con il codice sopra, francamente non riesco a capire come hai fatto ad ottenere quei risultati che scrivi...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    fper non è connesso Utente giovane
    Data registrazione
    02-12-2002
    Messaggi
    56

    Predefinito

    Citazione Originalmente inviato da dementialsite
    francamente non riesco a capire come hai fatto ad ottenere quei risultati che scrivi...
    Il codice corretto è questo:

    $data_partenza=mktime(0,0,0,03,12,1970);
    $data_arrivo=mktime(0,0,0,01,27,1972);
    $query = "SELECT * FROM date WHERE da <= '$data_arrivo' AND a >= '$data_partenza' ORDER BY id asc";

    che mi fa ottenere questo risultato:

    DA 09/03/1970 A 04/04/1971 GIORNI 391
    DA 05/04/1971 A 13/10/1971 GIORNI 191
    DA 14/10/1971 A 30/01/1972 GIORNI 108

    e questo perchè avendo chiesto di selezionare i record la cui data di partenza (DA) è minore o uguale del 27/01/1972 e la cui data di arrivo (A) è maggione o uguale del 03/12/1970, vengono appunto restituiti i campi dei tre record che soddisfano la query di selezione.
    Questo risultato è giusto e scontato ma io vorrei, cosa che non so fare, avere come risultato esattamente gli intervalli compresi tra le due date specificate e cioè:

    DA 12/03/1970 A 04/04/1971 GIORNI 388
    DA 05/04/1971 A 13/10/1971 GIORNI 191
    DA 14/10/1971 A 27/01/1972 GIORNI 105

    e quindi penso, ma non so come fare, che prima di lanciare il ciclo while dovrei intervenire sul primo campo dell'array che contiene la data del 12/03/1970 e sostitutirlo con la data del 09/03/1970 di mio interesse e così per l'ultimo campo dell'array che contiene la data del 30/01/1972 e sostiturilo con la data del 27/01/1972.
    Report di pesca in mare.
    http://fper.altervista.org/pescare

    Sito ospitato (poesie di un autore emergente)
    http://fper.altervista.org/ftib

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •