Visualizzazione risultati 1 fino 10 di 10

Discussione: Modifiche codice: motore di ricerca

  1. #1
    L'avatar di lupo91
    lupo91 non è connesso Utente attivo
    Data registrazione
    25-07-2005
    Residenza
    sardegna
    Messaggi
    494

    Talking Modifiche codice: motore di ricerca

    Non si tratta del tool offerto da AV che ho già provato ma non è proprio ciò che mi serve, ma di uno script che avevo scaricato, solo che ho un problema, dopo che effettuo una ricerca dovrebbe darmi i risultati, ma da quando è stato modificato mi dice sempre che non ha trovato niente.

    Mentre se lascio il codice originale se cerco qualche key che non ho registrato mi fa vedere tutte le key registrate al posto di dirmi che non ha trovato niente .

    In pratica funziona al contrario.

    Lo script che posto in seguito è già stato modificato (aggiunte poche righe iniziali e l'include finale):

    Codice PHP:
    <?php
    include("header.php");
    include(
    "cerca.htm");

    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");

    ?>

    In pratica se non ricordo male le righe aggiunte sono:

    Le prime:
    Codice PHP:
    include("header.php");
    include(
    "cerca.htm");

    require (
    "config.inc.php");

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

    E le ultime:
    Codice PHP:
    }
    else
    {
    $risultati = "La ricerca non ha prodotto risultati...";
    }

    echo
    $risultati;

    include(
    "footer.php");


    Per provare lo script potete andare qui:
    http://lupo91.altervista.org/motore1/home.php

    In pratica, se cercate il nome con cui è stata salvata la pagina dal pannello di controllo, (es. come ho impostato: altervista) i risultati appaiono, ma se cercate le key impostate per quel sito (es. cinema musica, impostate per il mio sito) non appaiono.

    ---

    Riepilogando :

    Insomma vorrei che cercando le keywords impostate dall'amministrazione mi trovasse quel sito, cosa che invece non fa ma trova i siti solamente cercando il nome di esso.

    P.S. Se volete posso inserire altre cose come test oltre il sito di AV e il mio.


    EDIT:
    Inoltre ho appena notate che sempre cercando "altervista", se cliccate sul link vi porta alla pagina: http://lupo91.altervista.org/motore1/www.altervista.org
    Ultima modifica di lupo91 : 21-03-2008 alle ore 14.09.51

  2. #2
    L'avatar di hackharo
    hackharo non è connesso Utente
    Data registrazione
    26-01-2007
    Messaggi
    120

    Predefinito

    Così a naso ti consiglierei di immagazzinare la variabile $_GET['cerca'] in una normale $cerca...

    e poi..cosa fa la funzion connessione();?
    Ultima modifica di hackharo : 21-03-2008 alle ore 14.59.38
    Non fare oggi quello che non hai fatto per convinzione ieri...

  3. #3
    L'avatar di lupo91
    lupo91 non è connesso Utente attivo
    Data registrazione
    25-07-2005
    Residenza
    sardegna
    Messaggi
    494

    Predefinito

    Citazione Originalmente inviato da hackharo Visualizza messaggio
    Così a naso ti consiglierei di immagazzinare la variabile $_GET['cerca'] in una normale $cerca...

    e poi..cosa fa la funzion connessione();?
    Cambiando la variabile non cambia nulla, mentre la funzione connessione dovrebbe servire per collegarsi al db.

  4. #4
    L'avatar di hackharo
    hackharo non è connesso Utente
    Data registrazione
    26-01-2007
    Messaggi
    120

    Predefinito

    mmm
    comunque non è molto chiaro...cioè io ho provato a cercare "altervista", "musica" e "cinema" e ottengo dei risultati (1 solo)...
    Mentre se inserisco altre parole non mi restituisce niente...
    Mi sembra che funzioni no?
    Non fare oggi quello che non hai fatto per convinzione ieri...

  5. #5
    L'avatar di lupo91
    lupo91 non è connesso Utente attivo
    Data registrazione
    25-07-2005
    Residenza
    sardegna
    Messaggi
    494

    Predefinito

    Da quanto ho capito funziona se si cerca una sola key, ma scrivendo: "cinema musica" dovrebbe funzionare lo stesso, forse bisogna cambiare qualcosa.

  6. #6
    Ospite Guest

    Predefinito

    intanto così è più corretto....

    Codice PHP:
    if($_GET["cerca"] != "")
    diventa
    Codice PHP:
    if(isset($_GET["cerca"]))

  7. #7
    L'avatar di lupo91
    lupo91 non è connesso Utente attivo
    Data registrazione
    25-07-2005
    Residenza
    sardegna
    Messaggi
    494

    Predefinito

    Ho corretto quella parte ma non cambia niente intanto .

  8. #8
    L'avatar di hackharo
    hackharo non è connesso Utente
    Data registrazione
    26-01-2007
    Messaggi
    120

    Predefinito

    Per aiutarti meglio dovrei sapere come è strutturato lo script: usi una tabella di lookup per le parole chiave? Oppure parole_chiave è un campo del risultato stesso?

    Comunque per fare ciò che vuoi devi prima esplodere la stringa in un array ciascun elemento del quale sarà una parola, e poi come condizione mettere alla fine della query le condizioni "parole_chiave LIKE "%keyword1%" AND parole_chiave LIKE "%keyword2%""

    Tradotto in codice:

    Codice PHP:
    $query_ricerca = "SELECT titolo, indirizzo FROM $nome_tb WHERE ";

    $stringa_ricerca = $_GET['cerca'];

    $seach_keys = explode(' ', $stringa_ricerca);
    $keys_n = count($seach_keys);

    if(
    $keys_n > 1){
    $query_ricerca.="title LIKE \"%$seach_keys[0]%\"";

    for(
    $c_id=1;$c_id<$keys_n;$c_id++){
    $query_ricerca.=" AND title LIKE \"%$seach_keys[$c_id]%\"";
    }
    }

    else{
    $query_ricerca.="title LIKE \"%$search_title%\"";}
    Non fare oggi quello che non hai fatto per convinzione ieri...

  9. #9
    L'avatar di lupo91
    lupo91 non è connesso Utente attivo
    Data registrazione
    25-07-2005
    Residenza
    sardegna
    Messaggi
    494

    Predefinito

    Sbaglio o dovrebbe venire così, perchè non fa :

    Codice PHP:
    <?php
    include("header.php");
    include(
    "cerca.htm");

    require (
    "config.inc.php");

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

    $query_ricerca = "SELECT titolo, indirizzo FROM $nome_tb WHERE ";

    $stringa_ricerca = $_GET['cerca'];

    $seach_keys = explode(' ', $stringa_ricerca);
    $keys_n = count($seach_keys);

    if(
    $keys_n > 1){
    $query_ricerca.="title LIKE \"%$seach_keys[0]%\"";

    for(
    $c_id=1;$c_id<$keys_n;$c_id++){
    $query_ricerca.=" AND title LIKE \"%$seach_keys[$c_id]%\"";
    }
    }

    else{
    $query_ricerca.="title LIKE \"%$search_title%\"";}
    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");

    ?>

  10. #10
    L'avatar di hackharo
    hackharo non è connesso Utente
    Data registrazione
    26-01-2007
    Messaggi
    120

    Predefinito

    Citazione Originalmente inviato da lupo91 Visualizza messaggio
    Sbaglio o dovrebbe venire così, perchè non fa :
    eh???
    Non fare oggi quello che non hai fatto per convinzione ieri...

Regole di scrittura

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