Visualizzazione risultati 1 fino 7 di 7

Discussione: Non visualizza tutti i dati

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

    Post Non visualizza tutti i dati

    Salve,
    ho fatto questa query:
    Codice PHP:
    $sql = "SELECT * FROM Sala WHERE cognome LIKE '$_POST[key]%' OR cognome LIKE '$_POST[key]%' ORDER BY cognome ASC";
    $res = $mysqli->query($sql);

    // se trova qualcosa va avanti
    if($row=$res->fetch_array())
    {
    // ciclo per elencare i dati
    while ($row = $res->fetch_array())
    in teoria funziona, però mi sono accorto che non visualizza il primo dato della ricerca.
    Cioè se ad esempio nel db ho 6 valori che devo trovare, il ciclo while me ne presenta solo 5 con tutti i suoi campi.
    Non capisco perchè ?
    Dovrebbe farli vedere tutti o nessuno o dare errore.

    Su phpMyAdmin la query funziona e mi visualizza i 6 valori ricercati con i suoi campi.
    Non sono un esperto e mi trovo ad un punto fermo.
    Qualcuno saprebbe come aiutarmi, con parole semplici.
    Grazie

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

    Predefinito

    Elimina l'if: ogni volta che richiami la "fetch_array()", viene estratto un elemento.

    Ciao!

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

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Elimina l'if: ogni volta che richiami la "fetch_array()", viene estratto un elemento.

    Ciao!
    Grazie alemoppo per la risposta chiara e semplice.
    Seguendo il tuo suggerimento ho corretto il codice in questo modo:
    Codice PHP:
    $sql = "SELECT * FROM Sala WHERE cognome LIKE '$_POST[key]%' OR cognome LIKE '$_POST[key]%' ORDER BY cognome ASC";
    $res = $mysqli->query($sql);
    $row = $res->fetch_array();

    // se trova qualcosa va avanti
    if(isset($row))
    { ....
    // ciclo per elencare i dati
    while ($row = $res->fetch_array())
    però ancora non funziona, cioè mi manca sempre il primo dato.
    Forse ho sbagliato qualcosa ?
    Come potrei fare ?
    Grazie ancora

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

    Predefinito

    Devi fare così:
    Codice PHP:
    $res = $mysqli->query($sql);

    // ciclo per elencare i dati
    while ($row = $res->fetch_array())
    E se non c'è nessun dato, non entrerà mai nel while.

    Ciao!

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

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    Devi fare così:
    Codice PHP:
    $res = $mysqli->query($sql);

    // ciclo per elencare i dati
    while ($row = $res->fetch_array())
    E se non c'è nessun dato, non entrerà mai nel while.

    Ciao!
    Si, scusami alemoppo, non voglio fare il noioso, ma ho bisogno di quel controllo.
    Non so come poter fare senza l'if che condiziona il tipo di risposta.
    Cioè se la query non produce risultati, devo visualizzare una risposta dove informa che la ricerca non ha prodotto risultati.
    Mentre se trova dei dati li deve elencare tutti con il ciclo while.

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

    Predefinito

    Leggi la proprietà num_rows dell'oggetto result.

    Codice PHP:
    <?php
    $res
    = $mysqli->query($sql);

    // se trova qualcosa va avanti
    if($res->num_rows > 0)
    {
    // ciclo per elencare i dati
    while ($row = $res->fetch_array())


    Oppure, se non vuoi ricorrere a num_rows:
    Codice PHP:
    $res = $mysqli->query($sql);
    $risultati = false;
    // ciclo per elencare i dati
    while ($row = $res->fetch_array()){
    $risultati = true;
    // mostri i risultati
    }

    if(
    $risultati === false)
    echo
    'nessun risultato';
    Il primo modo è il modo migliore.

    Ciao!

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

    Predefinito

    Grande alemoppo, funziona.
    Ho seguito il primo esempio.
    Grazie infinite

Regole di scrittura

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