• Moderatore

    Risultati motore di ricerca

    Ciao a tutti, ho creato un motore di ricerca solo che quando faccio una ricerca mi trova tutti i file inseriti nel database e non il singolo (o i singoli file con titolo simile...) che dovrebbe trovare, ora vi posto il codice dei risultati in modo da aiutarmi a vedere dove sia l'errore:

    <?php include("header.php"); ?>
    <?php include("motore.php"); ?>
    <?
    require ("config.inc.php");
    connessione();
    
    $query_ricerca = "SELECT titolo, indirizzo FROM $nome_tb WHERE parole_chiave LIKE '%$_GET[$cerca]%'";
    $risultato_query_ricerca = @mysql_query($query_ricerca, $conn);
    if ($risultato_query_ricerca) {
        $mess_3 = "Estrazione dei dati dalla tabella <b>$nome_tb</b> in corso..." . $imm_ok;
        $mess_3 .= "Estrazione dei dati dalla tabella <b>$nome_tb</b> riuscita..." . $imm_ok;
    } else {
        $mess_3 = "Estrazione dei dati dalla tabella <b>$nome_tb</b> in corso..." . $imm_no;
        $mess_3 .= "Estrazione dei dati dalla tabella <b>$nome_tb</b> non riuscita..." . $imm_no;
    }
    
    while ($risultato = @mysql_fetch_array($risultato_query_ricerca, $conn)) {
        $risultati .= "<a href=\"$risultato[indirizzo]\" class=\"link\">$risultato[titolo]</a><br>\n";
    }
    
    if (!$risultati) {
        $risultati = "La ricerca non ha prodotto risultati...";
    }
    
    echo $risultati;
    ?>
    <?php include("footer.php"); ?>
    

    Vi ringrazio tutti anticipatamente. 😄


  • User Attivo

    Secondo me l'errore è qui:

    $query_ricerca = "SELECT titolo, indirizzo FROM $nome_tb WHERE parole_chiave LIKE '%$_GET*$cerca*]%'";

    Mi fa strano vedere una variabile passata al parametro $_GET
    Metti così:

    $query_ricerca = "SELECT titolo, indirizzo FROM $nome_tb WHERE parole_chiave LIKE '%$_GET[cerca]%'";

    Ciao!


  • Moderatore

    Scusa ma cosa hai cambiato O.O.

    EDIT: ora ho visto e provo :D.

    RI-EDIT: Ok ora funziona, una ultima cosa, quando non scrivo niente mi trova tutti i file se faccio un refresh, si può fare in modo che quando non trova risultati con la parola cercata appaia proprio una cosa tipo:

    Parola cercata non trovata.

    Insomma che ti segnali che nel Database non esista quel file ;).

    Grazie ;).


  • User Attivo

    Puoi mettere così:

    [php]
    <?php
    include("header.php");
    include("motore.php");

    require ("config.inc.php");

    if($_GET["cerca"] != "")
    {
    connessione();

    $query_ricerca = "SELECT titolo, indirizzo FROM $nome_tb WHERE parole_chiave LIKE '%$_GET[cerca]%'";
    $risultato_query_ricerca = @mysql_query($query_ricerca, $conn);
    if ($risultato_query_ricerca) {
        $mess_3 = "Estrazione dei dati dalla tabella <b>$nome_tb</b> in corso..." . $imm_ok;
        $mess_3 .= "Estrazione dei dati dalla tabella <b>$nome_tb</b> riuscita..." . $imm_ok;
    } else {
        $mess_3 = "Estrazione dei dati dalla tabella <b>$nome_tb</b> in corso..." . $imm_no;
        $mess_3 .= "Estrazione dei dati dalla tabella <b>$nome_tb</b> non riuscita..." . $imm_no;
    }
    
    while ($risultato = @mysql_fetch_array($risultato_query_ricerca, $conn)) {
        $risultati .= "<a href=\"$risultato[indirizzo]\" class=\"link\">$risultato[titolo]</a><br>\n";
    }
    
    if (!$risultati) {
        $risultati = "La ricerca non ha prodotto risultati...";
    }
    

    }
    else
    {
    $risultati = "La ricerca non ha prodotto risultati...";
    }

    echo $risultati;

    include("footer.php");

    ?>
    [/php]Ciao!


  • Moderatore

    Ok, ti ringrazio ;), tutto funziona correttamente, grazie di nuovo ;).


  • User Attivo

    Prego 🙂

    Ciao!