Visualizzazione risultati 1 fino 11 di 11

Discussione: calcolo tra due date

  1. #1
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Smile calcolo tra due date

    Salve a tutti.
    Vorrei estrapolare dal db quanti valori sono stati inseriti tra due archi temporali o meglio ogni mese.
    Ho provato così:
    Codice PHP:
    $sett= mysql_query("SELECT COUNT(*) FROM elenco WHERE data_odierna BETWEEN 2014-09-01 AND 2014-09-30");
    Ma ottengo solo: Resource id #5
    Come potrei fare ?
    Grazie
    Ultima modifica di portier : 16-10-2014 alle ore 05.43.55

  2. #2
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,230

    Predefinito

    Se sono più records (come penso che sia in questo caso) devi ciclarli:
    Codice PHP:
    $sett= mysql_query("SELECT COUNT(*) FROM elenco WHERE data_odierna BETWEEN 2014-09-01 AND 2014-09-30");
    while(
    $res = mysql_fetch_array($sett)){
    echo
    $rs['data_odierna']; // $res conterrà tutti i record delle singole colonne usa $res['valore'] per accedere al dato
    }
    Apprezzi l'aiuto? Offrimi un caffè!

  3. #3
    L'avatar di Luffio
    Luffio non è connesso Utente attivo
    Data registrazione
    02-07-2006
    Messaggi
    439

    Predefinito

    Codice PHP:
    $sett= mysql_query("SELECT COUNT(*) AS count FROM elenco WHERE data_odierna BETWEEN 2014-09-01 AND 2014-09-30");
    $res = mysql_fetch_assoc($sett);
    echo
    $res['count'];
    Ultima modifica di Luffio : 16-10-2014 alle ore 13.04.51
    Luffio Web Site, Luffio's personal site
    Age Of Empires GIF, sito per la creazione di GIF animate di Age of Empires
    Clan italiano di Age of Empires The Conquerors, uno dei più vecchi ancora attivi

  4. #4
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grazie per le risposte.
    Ho provato entrambi i suggerimenti.
    Ma ottengo zero, come non ci fossero date inserite nel db.
    Ho ricontrollato tutto, nel caso avessi sbagliato qualche dato. La tabella dove sono registrate le informazioni si chiama "elenco" e il campo di riferimento è "data_odierna". Le date sono nel formato americano aaaa-mm-gg e ci sono del db. Non capisco allora perchè visualizza zero come risultato. Mi sembra tutto corretto.
    Cosa mi sfugge ?

    Inoltre il mio scopo sarebbe quello di fare questo conteggio con tutti i mesi. Quindi non solo per settembre, ma poi anche per ottobre e così via, per avere un resoconto di ogni mese. Forse esite una strada migliore di quella intrappresa ?
    Grazie di nuovo e buona serata

  5. #5
    Guest

    Predefinito

    @intervallo
    SELECT COUNT(*) FROM `elenco` WHERE data_odierna > "2014-10-01" AND data_odierna < "2014-10-30"

    @mese
    SELECT COUNT(*) FROM `elenco` WHERE MONTH(data_odierna) = 10 AND YEAR(data_odierna) = 2014
    --------------------------------------------------------------------------------------------------$mese--------------------------------$anno
    Ultima modifica di FormularioDiDrakensang : 16-10-2014 alle ore 18.39.15

  6. #6
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grazie, ho provato anche quest'ultima soluzione, così:
    Codice PHP:
    $sett= mysql_query("SELECT COUNT(*) FROM elenco WHERE data_odierna > 2014-09-01 AND data_odierna < 2014-09-30 ");
    echo
    $sett ;
    Ma ottengo = Resource id #5

    Idem con:
    Codice PHP:
    $sett= mysql_query("SELECT COUNT(*) FROM `elenco` WHERE MONTH(data_odierna) = 9 AND YEAR(data_odierna) = 2014");
    echo
    $sett ;
    Ultima modifica di portier : 17-10-2014 alle ore 04.25.37

  7. #7
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    $sett contiene il valore restituito da mysql_query che è l'identificativo di risorsa (o FALSE se c'è un errore).

    Una volta ottenuto questo identificativo (resource id), devi usare la funzioen mysql_fetch. Come ti ha consigliato luffio al terzo post.

  8. #8
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grazie veramente a tutti di cuore.
    Sono riuscito a fare questa query:
    Codice PHP:
    $sql="SELECT * FROM elenco WHERE MONTH(data_odierna) = 9 AND YEAR(data_odierna) = 2014 ";
    //eseguo la query per settembre
    $query=mysql_query($sql);
    //ottengo il numero di righe per settembre
    $sett=mysql_num_rows($query);
    echo
    $sett;
    $sql="SELECT * FROM elenco WHERE MONTH(data_odierna) = 10 AND YEAR(data_odierna) = 2014 ";
    //eseguo la query per ottobre
    $query=mysql_query($sql);
    $ott=mysql_num_rows($query);
    echo
    $ott;
    Così funziona e mi calcola le righe inserite nella tabella per il mese interrogato, correttamente.
    Adesso però vorrei ottimizzare lo script per tutti i mesi.

    Sicuramente devo fare un ciclo, ma come ?
    Devo estrapolare per ogni anno i dati da settembre a Luglio.
    (Quindi per quest'anno mi serve poterlo fare da settembre 2014 a Luglio 2015.)
    Grazie di nuovo a tutti per la partecipazione alla discussione e il prezioso aiuto.

  9. #9
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Salve, ho elaborato questo script che funziona. A parte il controllo sull'anno.
    Ecco come ho fatto :
    Codice PHP:
    $me = array(1 => 'gen', 'feb', 'mar', 'apr', 'mag', 'giu', 'lug', 'ago', 'set', 'ott', 'nov', 'dic');
    $mesi=1 ;
    while(
    $mesi<=12){


    if (
    $mesi <=8) {
    $anno= 2015; }
    elseif (
    $mesi >8) {$anno= 2014;}


    $sql="SELECT * FROM elenco WHERE MONTH(data_odierna) = $mesi AND $anno ";
    $query=mysql_query($sql); //eseguo la query
    $tot=mysql_num_rows($query); //ottengo il numero di righe
    $me[$mesi]=$tot;

    echo
    "valore del mese: " . $me[$mesi]. "<br>" ;
    $mesi++;
    }
    La parte compresa dall'if per la selezione dell'anno però sembra non venir considerata.
    Infatti somma tutti i valori mensili senza distinzione per l'anno.
    Come potrei fare ? Grazie

  10. #10
    Guest

    Predefinito

    "SELECT * FROM elenco WHERE MONTH(data_odierna) = $mesi AND $anno ";

    ...

    intendi ?

    "SELECT * FROM elenco WHERE MONTH(data_odierna) = $mesi AND YEAR(data_odierna) = $anno ";

  11. #11
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    Grazie FormularioDiDrakensang,
    si, adesso è perfetto.
    Ultima modifica di portier : 21-10-2014 alle ore 05.36.00

Regole di scrittura

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