Visualizzazione risultati 1 fino 6 di 6

Discussione: Prelevare il primo dato di una query

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

    Predefinito Prelevare il primo dato di una query

    Salve a tutti,
    avrei bisogno di usare il primo dato estratto da una query.
    Nel mio esempio, riportato sotto, viene memorizzato l'ultimo.
    Codice PHP:
    $query = "SELECT * FROM notturni WHERE ospite = '$id' ";
    $result = $mysqli->query($query);
    while (
    $row = $result->fetch_array())
    $val= $row['data_entrata'] ;
    C'è un modo per avere solo il primo valore ?
    Grazie

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

    Predefinito

    Per parlare di "primo" o "ultimo" devi prima specificare un criterio di ordine (totale). Nella query dovresti aggiungere una clausola ORDER BY rispetto al campo di cui ti interessa ordinare, quindi leggere solo il primo valore. Puoi farlo chiamando fetch_array una sola volta o, meglio ancora, specificando LIMIT 1 nella query.

  3. #3
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    È normale in un ciclo while viene sovrascritta per ogni riga $val e poi ritrovi solo l'ultima riga..
    data_entrata deve essere in DATE mysql (YYYY-MM-GG) così puoi filtrare la query e anche recuperare solo data_entrata degli ultimi 30 giorni alla data corrente controllando data_uscita.
    SELECT * FROM ospiti WHERE data_uscita >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND id_ospite=1;
    (Se il residente non prevede date nel futuro)
    Ultima modifica di darbula : 16-04-2019 alle ore 02.43.03

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

    Predefinito

    Grazie a tutti per le risposte.
    Ho provato ad usare le indicazioni di darbula in questo modo :
    Codice PHP:
    $query = "SELECT * FROM notturni WHERE data_uscita >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND ospite = '$id' ";
    $result = $mysqli->query($query);
    while (
    $row = $result->fetch_array())
    $ondate= $row['data_entrata'] ;
    echo
    $ondate;
    ecc .....
    Ma la variabile $ondate che mi stampa è sempre l'ultima data inserita, come si può vedere dall'immagine sotto:

    Io voglio indicare che potrà riospitare a partire dal 05/05/2019 (valore della colonna -> dal giorno + 30 giorni) e non dal 12/05/2019 che corrisponde invece all'ultima data inserita.
    Grazie di nuovo a tutti
    Ultima modifica di pierinik : 16-04-2019 alle ore 06.54.47

  5. #5
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Hai già provato quanto detto da mzanella? Cosa non ti è chiaro?

    Ciao!

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

    Predefinito

    OK.
    Ho incrociato i vari suggerimenti ...
    In effetti devo filtrare gli ultimi ingressi nei 30 giorni precedenti e quindi mi è stato utile il suggerimento di darbula, poi l'ho integrato con le indicazioni di mzanella.
    Questa è la nuova query:
    Codice PHP:
    $query = "SELECT * FROM notturni WHERE data_entrata >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) AND ospite = '$id' ORDER BY data_entrata ASC limit 1 ";
    e questo è il risultato:


    Direi che adesso va bene.
    Grazie di nuovo a tutti e

Regole di scrittura

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