Sql SELECT - FROM - WHERE

di il
10 risposte

Sql SELECT - FROM - WHERE

Buongiorno, sono alle prime armi, tra minicorsi e tutorial sono riuscito a mettere in piedi con Php e mysql un piccolo database con dei risultati di gare.
Funziona tutto, però vorrei automatizzare la ricerca qui sotto, in modo che dove c'è luigi, venga inserito tramite un label (rettangolo in php) e un pulsante, tipo ricerca da una pagina php, non so se mi sono spiegato, mi date per cortesia due dritte.

$sql = "SELECT id, cognome, arrivato, localita FROM piazzamenti WHERE COGNOME = 'luigi'";
$result = $connessione->query($sql);

Grazie

10 Risposte

  • Re: Sql SELECT - FROM - WHERE

    bellinea ha scritto:


    vorrei automatizzare la ricerca qui sotto, in modo che dove c'è luigi, venga inserito tramite un label (rettangolo in php) e un pulsante, tipo ricerca da una pagina php, non so se mi sono spiegato, mi date per cortesia due dritte.
    Documentati sulla gestione dei form in PHP (vedi questo articolo, ad esempio) e raccogli l'informazione inviata dall'utente per utilizzarla all'interno della clausola WHERE (con i dovuti accorgimenti, per non esporti a SQL Injection) così da filtrare i dati inerenti a lui/lei.

    Ciao!
  • Re: Sql SELECT - FROM - WHERE

    Grazie per la dritta, o cercato d'ingegnarmi però non funziona mi restituisce la pagina bianca, nessun errore, come non riconoscesse la ricerca, dove sto sbagliando?

    _________________________________________________________________________
    parte input
    __________________________________________________________________________
    html>
    <body>

    <form action="sp.php" method="post">
    Cognome:<input type="text" name="cognome" /> <br />
    <input type="submit" name="Submit" value="Cerca" /> <br />

    </form>>
    </body>
    </html>
    _________________________________________________________________________
    parte ricerca
    __________________________________________________________________________

    $cognome = $_REQUEST['cognome'];

    $query = "SELECT id, Cognome, arrivato, localita FROM piazzamenti WHERE cognome='"
    .$cognome."'";

    $result = mysqli_query($connessione,$query);
    $num = mysqli_num_rows($result);

    if ($num == 0)
    echo "Cognome non presenti in rubrica!";

    while ($row = mysqli_fetch_array($result))

    echo $row['id']."-";
    echo $row['Cognome']."-";
    echo $row['arrivato']."-";
    echo $row['localita']."<br>";
  • Re: Sql SELECT - FROM - WHERE

    bellinea ha scritto:


    Grazie per la dritta, o cercato d'ingegnarmi però non funziona mi restituisce la pagina bianca, nessun errore, come non riconoscesse la ricerca, dove sto sbagliando?
    La pagina in cui accedi al database è quella codificata nel file sp.php?
    Hai provato a stampare il valore del campo "cognome" che ricevi per vedere se viene recepito correttamente?
    Oppure hai provato a stampare nella pagina lo statement SQL prima di eseguirlo per controllare se è corretto?

    Sono operazioni da "debug dei poveri" in effetti, ma abbastanza rapide per capire se c'è qualcosa che non va.

    Ciao!
  • Re: Sql SELECT - FROM - WHERE

    Si la pagina in cui accedo al database è quella codificata nel file sp.php.
    Ho provato a stampare il valore del campo "cognome" nella pagina sp.php, non da nessun errore e restituisce la pagina bianca.
  • Re: Sql SELECT - FROM - WHERE

    [Code]//Dalla prima riga error_reporting(-1); if(!isset($_POST, $_POST['cognome'])) { echo 'Cognome non ancora presente'; } else { echo 'Benvenuto/a ' . $_POST['cognome']; } //isset per il valore null ritorna false $mia_variabile = null; var_dump(isset($mia_variabile)); //Via browser puoi inviare stringhe e php nel caso specifico dei dati con parentesi quadre può trasformare essi in una variabile array ma di fatto non potrà mai essere null poiché non è una stringa //cognome=valore se con metodo GET verrà appeso alla url, altrimenti inviato nel body della pagina con metodo POST Se il browser invia i dati di una form html con metodo POST è possibile utilizzare $_POST o $_REQUEST poiché configurato di default.

    Assicurati di scrivere esattamente il campo rispettando la forma Maiuscola o minuscola memorizzata dentro il tuo database.

    Se è presente esattamente il campo cognome non visualizzi $row['Cognome'] (se forzi l'output di predefinito è il null valore in assenza del valore, var_dump($variabile_non_esistente['array']); // stampa null mentre in echo verrà convertito in stringa il CAST debole è rappresentato da null a stringa vuota) o viceversa con campo Cognome e non visualizzi $row['cognome'].
    https://www.php.net/manual/en/mysqli-result.fetch-array.php
    i nomi dei campi restituiti da questa funzione fanno distinzione tra maiuscole e minuscole .
  • Re: Sql SELECT - FROM - WHERE

    Ho provato ad aggiungere quello che mi hai suggerito, e mi restituisce
    Benvenuto/a gigi

    per cui trova quello che gli chiedo, perché allora non mi fornisce tutte le righe dei risultati con questo cognome.
    Prima di arrivare a questo e inserendo il cognome a mano come qui sotto, la ricerca la faceva ed il risultato erano tutte le righe con un risultato del cognome gigi.

    $sql = "SELECT id, cognome, arrivato, localita FROM piazzamenti WHERE COGNOME = 'gigi'";
  • Re: Sql SELECT - FROM - WHERE

    Cosa hai modificato nel codice? Mostralo
  • Re: Sql SELECT - FROM - WHERE

    $cognome = $_REQUEST['cognome'];

    $query = "SELECT id, Cognome, arrivato, localita FROM piazzamenti WHERE cognome='"
    .$cognome."'";

    $result = mysqli_query($connessione,$query);
    $num = mysqli_num_rows($result);

    if ($num == 0)
    echo "Cognome non presenti in rubrica!";

    while ($row = mysqli_fetch_array($result))

    echo $row['id']."-";
    echo $row['Cognome']."-";
    echo $row['arrivato']."-";
    echo $row['localita']."<br>";


    }

    error_reporting(-1);
    if(!isset($_POST, $_POST['cognome'])) {
    echo 'Cognome non ancora presente';
    } else {
    echo 'Benvenuto/a ' . $_POST['cognome'];
    }





    ?>
  • Re: Sql SELECT - FROM - WHERE

    [Code]error_reporting(-1); va posizionato alla prima riga altrimenti non mostra cos'è successo prima.

    Devi selezionare una doppia corrispondenza, tramite phpMyAdmin guarda la distinzione maiuscola e minuscola dei campi.

    Poi crei il sorgente html tramite php rispettando la sintassi maiuscola e minuscola 1) per il tuo form html e 2) per il database tramite l'indice della variabile $row.
    Non ti compare a video alcun Notice o Warnings? (il che è strano se tenta di leggere una variabile array inesistente).

    Poiché usi la funzione mysqli_fetch_array che tramite il predefinito MYSQLI_BOTH crea indici associativi e le chiavi numeriche, nel tuo script in fondo usa
    var_dump($row);
    Se funziona almeno la sequenza numerica sarà visibile o altrimenti null.
  • Re: Sql SELECT - FROM - WHERE

    A forza di provare e riprovare, sono riuscito e ora mi ritorna id, Cognome, arrivato, localita, cosi

    32-gig-21-venezia
    43-gigi-5-milano
    44-gigi-9-torino
    45-gigi-10-roma

    modificando solo questo

    echo $row['id']."-", $row['Cognome']."-", $row['arrivato']."-", $row['localita']."<br>" ;

    Ora devo farlo impaginare bene e mettere i titoli, id, Cognome, arrivato, localita, cosi.
    Avete qualche dritta
Devi accedere o registrarti per scrivere nel forum
10 risposte