Visualizzazione risultati 1 fino 6 di 6

Discussione: Motore di ricerca

  1. #1
    Guest

    Unhappy Motore di ricerca

    Sto facendo un motore di ricerca per il mio sito. Fino a quando controllo i file txt tutto bene, quando invece controllo il database il risultato è una serie di risposte errate.... Potete darci un occhio?

    Codice PHP:
    function controlla_stringa($file,$stringa) {
    $stringhe=explode(" ",$file);
    $count = count($stringhe);
    for (
    $fg=0;$fg<=$count;$fg++) {

    if (
    strtolower ($stringhe[$fg]) == strtolower ($stringa)) {
    return
    true;
    }
    }
    return
    false;
    }
    .............

    $sql = "select * from domande";

    if (!
    $DB = mysql_connect($url_,$utente_,$password_)) {
    die(
    "<table><tr><td><p class='style2'>Attenzione Si è verificato un errore. (20)" . mysql_error() . "</p></td><td><img src='icone/allert.jpg' width='60' height='58' /></td></tr></table>");
    }

    if (!
    mysql_select_db($nomedb_,$DB)) {
    die(
    "<table><tr><td><p class='style2'>Attenzione Si è verificato un errore. (21)" . mysql_error() . "</p></td><td><img src='icone/allert.jpg' width='60' height='58' /></td></tr></table>");
    }

    if (!
    $result = mysql_query($sql, $DB)) {
    die(
    "<table><tr><td><p class='style2'>Attenzione Si è verificato un errore. (22)" . mysql_error() . "</p></td><td><img src='icone/allert.jpg' width='60' height='58' /></td></tr></table>");
    }

    $num_righe = mysql_num_rows($result);

    if (
    $num_righe > 0) { // 16

    while ($row = mysql_fetch_array($result)) { //17
    $file = "";
    $file = trim($row[domanda] . " " . $row[risposta] . " " . $row[_link]);

    $array_parole = explode(" ",$_POST[parole]);
    $count2 = count($array_parole);

    if (
    $_POST[idselezione] == "tutte") { //13
    $cont = "";
    for(
    $f=0;$f <= ($count2-1);$f++) { // arrayparole 4
    $toSrc = trim($array_parole[$f]); // parola da cercare

    $pstringa = Controlla_stringa($file, $toSrc);

    if (
    $pstringa == false): //5
    // non trovato.. parole sullo stesso file
    else:
    // trovato

    $cont = $cont + 1;
    endif;
    //5

    if ($cont == $count2) {
    print
    "<tr><td><a href='motore.php?q=" . $row[id] . "'>Parole trovate nel Database id : " . $row[id] . "</a></td></tr>";
    }

    }
    //4

    } //3
    ..................

    Ad esempio se gli dico di trovarmi la scritta francesco ( ID = 2 ) mi controlla solo il primo record e me lo dà come risultato ( ID = 1 )

    Grazie.
    Ultima modifica di andreafallico : 18-06-2010 alle ore 15.15.55

  2. #2
    Guest

    Predefinito

    Codice PHP:
    if (!$DB = mysql_connect($url_,$utente_,$password_)
    non capisco questo riga
    non dovrebbe essere:
    Codice PHP:
    if ($DB != mysql_connect($url_,$utente_,$password_)
    Ultima modifica di worldpixel : 18-06-2010 alle ore 20.14.18 Motivo: ho detto una stupidaggine

  3. #3
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Citazione Originalmente inviato da worldpixel Visualizza messaggio
    Codice PHP:
    if (!$DB = mysql_connect($url_,$utente_,$password_)
    non capisco questo riga
    non dovrebbe essere:
    Codice PHP:
    if ($DB != mysql_connect($url_,$utente_,$password_)
    E' la stessa cosa, ! è un operatore di negazione.

    @service2000:
    La parte che non mi convince è questa:
    Codice PHP:
    if (!$DB = mysql_connect($url_,$utente_,$password_)) {
    die(
    "<table><tr><td><p class='style2'>Attenzione Si è verificato un errore. (20)" . mysql_error() . "</p></td><td><img src='icone/allert.jpg' width='60' height='58' /></td></tr></table>");
    }

    if (!
    mysql_select_db($nomedb_,$DB)) {
    die(
    "<table><tr><td><p class='style2'>Attenzione Si è verificato un errore. (21)" . mysql_error() . "</p></td><td><img src='icone/allert.jpg' width='60' height='58' /></td></tr></table>");
    }

    if (!
    $result = mysql_query($sql, $DB)) {
    die(
    "<table><tr><td><p class='style2'>Attenzione Si è verificato un errore. (22)" . mysql_error() . "</p></td><td><img src='icone/allert.jpg' width='60' height='58' /></td></tr></table>");
    }
    Le variabili $url_, $utente_, $password_, $nomedb_ non sono definite da nessuna parte, all'interno della funzione. Suppongo che le hai definite fuori dalla funzione e per risolvere dovresti modificare solo l'inizio della funzione:
    Codice PHP:
    function controlla_stringa($file,$stringa) {
    global
    $url_, $utente_, $password_, $nomedb_;
    // resto del codice

  4. #4
    Guest

    Predefinito

    chiedo scusa, non lo sapevo.

    comuqnue non credo sia quello l'errore, anche perché la connessione al database non avviene dentro una funzione, e probabilmente le variabili le ha dichiarate, anche perché se no gli darebbe un qualche errore.

    poi mi sembra che ci siano alcune righe che non servono, provo a riscriverti il codice:
    Codice PHP:
    $sql = "select * from domande";

    if (!
    $DB = mysql_connect($url_,$utente_,$password_)) {
    die(
    "<table><tr><td><p class='style2'>Attenzione Si è verificato un errore. (20)" . mysql_error() . "</p></td><td><img src='icone/allert.jpg' width='60' height='58' /></td></tr></table>");
    }

    if (!
    mysql_select_db($nomedb_,$DB)) {
    die(
    "<table><tr><td><p class='style2'>Attenzione Si è verificato un errore. (21)" . mysql_error() . "</p></td><td><img src='icone/allert.jpg' width='60' height='58' /></td></tr></table>");
    }

    if (!
    $result = mysql_query($sql, $DB)) {
    die(
    "<table><tr><td><p class='style2'>Attenzione Si è verificato un errore. (22)" . mysql_error() . "</p></td><td><img src='icone/allert.jpg' width='60' height='58' /></td></tr></table>");
    }

    $num_righe = mysql_num_rows($result);

    if (
    $num_righe > 0) { // 16

    while ($row = mysql_fetch_array($result)) { //17
    $file = trim($row['domanda'] . " " . $row['risposta'] . " " . $row['_link']);

    $array_parole = explode(" ",$_POST[parole]);
    $count2 = count($array_parole);

    if (
    $_POST[idselezione] == "tutte") { //13
    for($f=0;$f <= ($count2-1);$f++) { // arrayparole 4
    $toSrc = trim($array_parole[$f]); // parola da cercare

    $pstringa = Controlla_stringa($file, $toSrc);

    if (
    $pstringa == false): //5
    // non trovato.. parole sullo stesso file
    else:
    // trovato

    print "<tr><td><a href='motore.php?q=" . $row[id] . "'>Parole trovate nel Database id : " . $row[id] . "</a></td></tr>";
    endif;
    //5

    } //4

    } //3
    l'errore penso fosse che tu mettevi se cont == count2, ma questo avviene una volta sola, cioé l'ultima e quindi ti stampa solo un risultato

  5. #5
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Si hai ragione, io pensavo che tutto il codice si trovasse nella funzione controlla_stringa.

  6. #6
    Guest

    Predefinito

    Io sono sull'orlo dell'assurdo, comunque ringrazio tutti e vi mostro il codice che funziona ( o provato più volte inserendo dati diversi )

    Codice PHP:
    if ($_POST[idselezione] == "tutte") { //13
    $cont = "";
    for(
    $f=0;$f <= ($count2-1);$f++) { // arrayparole 4
    $toSrc = trim($array_parole[$f]); // parola da cercare

    $pstringa = Controlla_stringa($file, $toSrc);

    if (
    $pstringa == false): //5
    // non trovato.. parole sullo stesso file

    else:
    // trovato

    $cont = $cont + 1;
    endif;
    //5

    if ($cont == $count2) {
    $p = $p + 1;
    if (
    $p < 2 ) {
    print
    "<tr><td><a href='motore.php?q=" . ($row[id] + 1) . "'>Parole trovate nel Database id : " . ($row[id] + 1) . "</a></td></tr>";
    $p = 0;
    }
    }
    }
    //4
    } //13
    EDIT
    L'unica cosa è che mi funziona se inserisco una frase e non la ricerca di tutte le parole per quello ci vorra un altro codice.......

    EDIT 2
    Il codice per le parole era quello da voi postato con un piccolo cambiamento :

    Codice PHP:
    if ($_POST[idselezione] == "tutte") { //13
    for($f=0;$f <= ($count2-1);$f++) { // arrayparole 4
    $toSrc = trim($array_parole[$f]); // parola da cercare

    $pstringa = Controlla_stringa($file, $toSrc);

    if (
    $pstringa == false): //5
    // non trovato.. parole sullo stesso file
    else:
    // trovato

    print "<tr><td><a href='motore.php?q=" . ($row[id]+1) . "'>Parole trovate nel Database id : " . ($row[id]+1) . "</a></td></tr>";
    endif;
    //5

    } //4

    } //13
    Una aggiunta di uno ad ID.

    GRAZIE.

    EDIT 3
    Come non detto avevate ragione voi perchè il primo record di una tabella ha id = 0 e quindi non si deve aggiungere + 1.
    Ultima modifica di musicanapoli : 19-06-2010 alle ore 01.33.17 Motivo: Codice racchiuso tra i tags.

Tags for this Thread

Regole di scrittura

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