Visualizzazione risultati 1 fino 2 di 2

Discussione: Ricerca In una tabella

  1. #1
    Guest

    Predefinito Ricerca In una tabella

    Io ho cercato di fare una ricerca in una tabella determinata dal form (Game) nella stessa pagina del form con questo codice ma, anche dopo aver fatto una ricerca, non mi mostra nient'altro oltre al form.
    Codice PHP:
    <title>Cerca Clan</title>
    <form method="GET"
    action="/Cerca/" >
    Nome del Clan
    <input type="text"
    name="Nome"
    autocomplete="off" >
    Cerca Clan di
    <select name="Game" >
    <option value="CoC">Clash of Clans</option>
    <option value="CR">Clash Royale</option>
    </select>
    <input type="submit"
    value="Cerca Clan" >
    <?

    $host
    ="localhost";
    $username="theclashclan";
    $password=""; // Mysql password
    $db_name="my_theclashclan";
    $db = mysql_connect($localhost,$username,$password);
    mysql_select_db($db_name,$db);

    $tipe = mysql_real_escape_string ($_GET['Game']);

    if(
    $tipe = CoC){
    $table = Utenti_ClanCoC ;
    }
    else{
    $table = Utenti_ClanCR ;
    }
    $chiave = mysql_real_escape_string ($_GET['Nome']);
    $query = ("SELECT * FROM " . $table . " WHERE (nome_clan LIKE '%" . $chiave . "%')");
    mysqli_query($query, $db);
    $result_n = mysql_num_rows(mysqli_query);

    if(
    $result_n > 0){
    echo
    $query;
    }
    else{
    if(!
    $result){
    echo
    mysql_error();
    }
    else{
    if(
    $result = 0){
    echo
    "Nessun risultato trovato per " . $chiave . ".";
    }
    }
    }

    ?>
    Il codice l'ho scritto tutto io, e penso di aver sbagliato a stampare i risultati ( if($result_n > 0){echo $query;} ).
    Grazie.

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

    Predefinito

    Codice PHP:
    if($tipe = CoC){
    $table = Utenti_ClanCoC ;
    }
    else{
    $table = Utenti_ClanCR ;
    }
    $type = CoC è un assegnamento, non un confronto: devi usare == o ===. CoC non è una costante definita, verosimilmente intendevi la stringa 'CoC', e lo stesso per i nomi delle tabelle:
    Codice PHP:
    if ($type === 'CoC') {
    $table = 'Utenti_ClanCoC';
    } else {
    $table = 'Utenti_ClanCR';
    }
    volendo puoi anche usare una notazione più compatta con l'operatore ternario:
    Codice PHP:
    $table = ($type === 'CoC') ? 'Utenti_ClanCoC' : 'Utenti_ClanCR';
    Nella query le parentesi che hai usato non sono necessarie:
    Codice PHP:
    $query = "SELECT * FROM " . $table . " WHERE(nome_clan LIKE '%" . $chiave . "%'";
    Stai mescolando mysql_* e mysqli_*: a dispetto del nome, sono strutturalmente diversi e non si possono mescolare. Meglio riscrivere tutto con mysqli.

    Queste due righe sono problematiche:
    Codice PHP:
    mysqli_query($query, $db);
    $result_n = mysql_num_rows(mysqli_query);
    nella prima esegui la query, ma non recuperi il risultato (in altre parole, lo scarti). Nella seconda applichi una funzione mysql_num_rows... ad un nome di funzione di mysqli.

    Nelle righe seguenti usi $result senza averlo inizializzato.

    Riassumendo, propongo una riscrittura di questo tipo:
    Codice PHP:
    // Connessione alla base di dati
    $link = mysqli_connect("localhost", "theclashclan", "", "my_theclashclan");
    if (
    mysqli_connect_errno()) {
    echo
    "ERRORE: Impossibile connettersi alla base di dati " . mysqli_connect_error();
    }

    // Lettura dei parametri
    $type = mysqli_real_escape_string($link, $_GET['Game']);
    $key = mysqli_real_escape_string($link, $_GET['Nome']);
    $table = ($type === 'CoC') ? 'Utenti_ClanCoC' : 'Utenti_ClanCR';

    // Interrogazione della base di dati
    $query = "SELECT * FROM $table WHERE nome_clan LIKE '%$key%'";
    $result = mysqli_query($link, $query);
    if (
    $result === false) {
    echo
    "ERRORE: " . mysqli_error($link);
    }

    // Interpretazione dei risultati
    if (mysqli_num_rows($result) == 0) {
    echo
    "Nessun risultato trovato per '$key'.";
    }

    else {
    // Fai quello che devi fare con i tuoi dati
    }
    Modulo errori di sintassi che possono sempre capitare, l'idea è quella.

Regole di scrittura

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