Visualizzazione risultati 1 fino 6 di 6

Discussione: calcolare valori mensili

  1. #1
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito calcolare valori mensili

    Buongiorno a tutti,
    stavo pensando come poter fare una query che mi restituisse come risultato il numero dei campi generati in un mese. In pratica mi serve sapere un totale mensile degli ospiti in bibblioteca. Nella tabella di riferimento memorizzo il giorno e quindi la presenza nell' id autoincrementato.

    Per me è troppo complessa come operazione.
    Non riesco neppure ad immaginare come partire.
    Qualcuno può indicarmi una soluzione ?
    In maniera semplice e chiara. Grazie

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Dipende molto dalla struttura del tuo database.

    Se hai una tabella in cui memorizzi le visite degli ospiti ed il relativo giorno in un campo di tipo DATE o analogo, allora è semplice:
    Codice:
    SELECT COUNT(*) FROM tabella_visite WHERE giorno BETWEEN (CURRENTDATE() - INTERVAL 1 MONTH) AND CURRENTDATE()
    che fa esattamente ciò che promette: seleziona tutte le visite avvenute tra il mese scorso ed oggi e ne calcola il totale.

    Puoi anche specificare un intervallo di date arbitrario anziché l'ultimo mese:
    Codice:
    SELECT COUNT(*) FROM tabella_visite WHERE giorno BETWEEN '2018-04-01 0:0:0' AND '2018-04-24 23:59:59'
    questo esempio mostra il numero di visite dal primo aprile 2018 al 24 aprile 2018 (inclusi).

  3. #3
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito

    Ottimo. Grande. Funziona su phpMyAdmin.
    Grazie mille
    Ultima modifica di pierinik : 24-04-2018 alle ore 15.39.20

  4. #4
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito

    Per ottenere il totale ho provato così:
    Codice PHP:
    $sql = "SELECT COUNT(*) FROM elenco WHERE `data_odierna` BETWEEN '2018-04-01 0:0:0' AND '2018-04-24 23:59:59' ";
    $result = $mysqli->query($sql);
    $row = mysqli_fetch_object($result);
    echo
    $row->elenco;
    ma non mi funziona. Come dovrei fare ?
    Grazie ancora

  5. #5
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Quando esegui un'interrogazione, controlla sempre il valore di ritorno per verificare che non ci siano errori:
    Codice PHP:
    $result = $mysqli->query(...);
    if (!
    $result) {
    echo
    "Error: " . $mysqli->error;
    }
    In questo caso ci sono almeno due errori:
    • per interrogare il database usi l'interfaccia ad oggetti di MySQLi, ma per leggere il risultato cerchi di usare l'interfaccia procedurale: le due non si possono mescolare, scegli quale intendi usare e sii consistente
    • stai cercando di accedere a $row->elenco, ma elenco è il nome della tabella, non il nome del campo che intendi leggere, il quale di chiama invece COUNT(*): per accedere al risultato dovresti usare [url=http://php.net/manual/en/mysqli-result.fetch-assoc.php]mysqli_result::fetch_assoc[/ur], quindi echo $row['COUNT(*)'], oppure rinominare il campo durante l'operazione di SELECT

  6. #6
    pierinik non è connesso Utente
    Data registrazione
    26-03-2010
    Messaggi
    122

    Predefinito

    OK. Grazie.
    Ho corretto in questo modo:
    Codice PHP:
    $sql = "SELECT COUNT(*) FROM elenco WHERE `data_odierna` BETWEEN '2018-04-01 0:0:0' AND '2018-04-24 23:59:59' ";
    $result = $mysqli->query($sql);
    if (!
    $result) {echo "Error: " . $mysqli->error;}

    while (
    $row = $result->fetch_assoc())
    {echo
    $row['COUNT(*)'];}
    Così funziona. Penso di aver scritto bene la procedura, stavolta.
    Grazie dell'aiuto.

Regole di scrittura

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