• User

    motore ricerca in PHP e MySQL

    Ciao a tutti,
    sto cercando di implementare un motore di ricerca nel mio sito, ed ho concentrato le mie attenzioni su questo script:
    motore ricerca in PHP e MySQL
    forum.html.it/forum/showthread.php?threadid=1280944

    Ho seguito le istruzioni e configurato il file 'config.inc.php' ma ho riscontrato i seguenti problemi:

    1. la connessione al db mi è riuscita solo dopo avere sostituito (nel file 'index.php')

    connessione ();

    con

    $connessione = mysql_connect ($host, $user, $pass) or die ("");

    Questa è la funzione connessione che NON funziona:

    function connessione() {
    global $nome_db, $imm_ok, $imm_no, $mess_1, $mess_2, $conn, $seleziona_db;
    $conn = @mysql_connect($host, $user, $pass);
    if ($conn) {
    $mess_1 = "Connessione a <b>MySQL</b> riuscita..." . $imm_ok;
    } else {
    $mess_1 = "Connessione a <b>MySQL</b> non riuscita..." . $imm_no;
    }
    $seleziona_db = @mysql_select_db($nome_db, $conn);
    if ($seleziona_db) {
    $mess_2 = "Selezione del database <b>$nome_db</b> riuscita..." . $imm_ok;
    } else {
    $mess_2 = "Selezione del database <b>$nome_db</b> non riuscita..." . $imm_no;
    }
    }

    1. lo script che viene lanciato dopo aver effettuato il login (pagina 'index.php') non riesce a creare la tabella necessaria al funzionamento del sistema, e quindi manca il collegamento tra la tabella e la pagina che inserisce i dati 'index.php?opzione=aggiungi'

    Questo è lo script che dovrebbe creare la tabella e creare il collegamento:

    $query_crea_tabella = "CREATE TABLE $nome_tb (
    id INT(5) UNSIGNED not null AUTO_INCREMENT,
    titolo VARCHAR(50) not null,
    indirizzo VARCHAR(255) not null,
    parole_chiave TEXT not null,
    data varchar(14) not null,
    data_m varchar(14) not null,
    PRIMARY KEY (id)
    )";
    $ris_query_crea_tabella = @mysql_query($query_crea_tabella, $conn);
    if ($ris_query_crea_tabella) {
    $mess_3 = "Creazione della tabella <b>$nome_tb</b> in corso..." . $imm_ok;
    $mess_3 .= "Installazione dello script riuscita con successo..." . $imm_ok;
    } else {
    $mess_3 = "Creazione della tabella <b>$nome_tb</b> in corso..." . $imm_no;
    $mess_3 .= "Impossibile creare la tabella <b>$nome_tb</b>..." . $imm_no;
    $mess_3 .= "Probabilmente non hai settato bene i parametri di connessione nel file <b>config.inc.php</b> o hai già effettuato l'installazione..." . $imm_no;
    }

    Non so se sono riuscita ad essere abbastanza chiara, ma se qualcuno avesse già riscontrato questi problemi e vuol darmi una mano...
    :mmm:


  • User

  • Bannato User Attivo

    Ciao, cosi è poco chiaro, posso pensare a tante cose...
    Prova ad installare la tabella con phpmyadmin...


  • User

    Grazie,
    l'ho fatto ma il risultato è identico, l'applicativo mi dice che nn è possibile creare la tabella...
    :bho:


  • User Attivo

    Prova a togliere la chiocciola davanti a @mysql_query** così ti fa vedere l'eventuale errore**


  • User Newbie

    Scusa ma perchè ad ogni accesso devi CREARE una tabella? Se la tabella è già presente del database non basta mostrarla all'utente tramite una select?

    Ho guardato il tuo file (su html.it) ma lo trovo moolto complicato! Anche io sto provando a fare un db, se vuoi ti posto il mio codice...
    Purtroppo però non funziona bene ma non dovrebbe essere troppo sbagliato..

    Ho letto topic già presenti su altri forum e ho preso spunto per la sintassi
    SELECT * FROM nome_tabella WHERE nome_campo LIKE '%testo_inserito%'

    form con il campo ricerca con action="" che quindi agisce nella sua stessa pagina di origine
    <input type="text" name="nome_commessa" id="nome_commessa" value="" />
    <input type="submit" name="cerca" id="cerca" value="Cerca" />

    funzione di ricerca
    $nome_commessa=mysql_real_escape_string(trim(htmlspecialchars($_POST['nome_commessa'])));
    $cerca=mysql_query("SELECT * FROM Backup WHERE NomeCommessa LIKE '%nome_commessa%'");

    if($cerca==1)
    {
    while ($riga = mysql_fetch_assoc($cerca)) {
    $nome_commessa=$riga["NomeCommessa"];
    echo "$nome_commessa" ; }
    }

    else {
    $messaggio = urlencode("Nessun risultato"); //messaggio stampato nel documento
    header('location: '.$_SERVER['PHP_SELF'].'?msg='.$messaggio); //posizione del messaggio stampato
    die(mysql_error());
    }

    mysql_close();
    }

    Ogni volta mi esce la stringa "Nessun risultato" anche se metto un nome che è sicuramente nel campo NomeCommessa della tabella Backup.
    Magari può esserti utile...se scopri come megliorare il codice tanto meglio! Sono nei guai anche io! 😞


  • User

    Giusto, ma ho provato a verificare se la query fosse esatta, esguendola direttamente in phpmyadmin...


  • User

    Questa guida puo esserti utile:
    php.html.it/guide/leggi/77/guida-phpmysql-pratica/


  • User Attivo

    @BordeauxPrugna said:

    funzione di ricerca
    $nome_commessa=mysql_real_escape_string(trim(htmlspecialchars($_POST['nome_commessa'])));
    $cerca=mysql_query("SELECT * FROM Backup WHERE NomeCommessa LIKE '%nome_commessa%'");

    ogni volta mi esce la stringa "Nessun risultato" anche se metto un nome che è sicuramente nel campo NomeCommessa della tabella Backup.
    Magari può esserti utile...se scopri come megliorare il codice tanto meglio! sono nei guai anche io! 😞

    Mi sa che qui hai dimenticato un $ per strada...
    [PHP]$cerca=mysql_query("SELECT * FROM Backup WHERE NomeCommessa LIKE '%$nome_commessa%'");[/PHP]