Visualizzazione dei risultati da 1 a 4 su 4

Discussione: motore di ricerca

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    4

    motore di ricerca

    ciao a tutti.
    Ho cominciato ad usare PHP pochi giorni fa, quindi non sono molto bravo.
    In ogni caso mi piace molto e sto cercando di imparare il più possibile.

    In questi giorni sto provando a costruirmi un piccolo motore di ricerca per il mio database, e quello che voglio che il motore di ricerca faccia è soltanto darmi la pagina della parola (ogni parola nel mio database ha una pagina) se quella parola esiste, altrimenti dirmi che la parola non è presente nel database.
    purtroppo però sto avendo un problemino.

    questo è ciò che ho fatto al momento:

    <?php
    if ($_POST["name"]=="cat")
    Header("Location:database/cat.php");
    else
    echo "not in the database";
    ?>


    quindi quando scrivo nel mio motore di ricerca (che ovviamente si trova su un altra pagina) la parola "gatto", aprirà la pagina web di "gatto". ma se scrivo qualunque altra parola mi dirà "non nel database", perchè infatti la mia condizione è :apri la pagina se la parola è "gatto".

    ora: ovviamente io non voglio che sia soltanto la parola "gatto" a darmi un risultato, ma ogni parola presente nel mio database.
    Quindi vorrei che il mio motore di ricerca cercasse la parola che io gli dico (che può essere cane, gatto, o qualunque cosa) nel mio database; se la trova allora mi dovrebbe portare su quella pagine, se invece la prola non è presente nel database mi dovrebbe dire "non in the database".

    quindi quello che vorrei dire al motore di ricerca di fare è qualcosa del tipo:

    if ("la parola è presente nel database all'indirizzo xxxxx"
    header ("location: xxxxx");
    else
    echo "not in the database"


    sapete come potrei farlo?
    perchè non so proprio che codici mettere!
    grazie mille a tutti!

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Nella pagina su cui arrivi dopo aver inviato i dati della form devi costruire una query verso il database usando la parola inserita.
    Codice PHP:
    $query "SELECT * FROM tabella WHERE name=" $_POST['name'];
    $result mysql_query($query);

    if(
    mysql_num_rows($result) > 0) { //parola trovata
        
    header("Location:database/".$_POST['name'].".php");
    }
    elseif(
    mysql_num_rows($result) == 0) { //parola non trovata
        
    echo "not in the database";


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    4
    mmm...
    ok.....
    c'è....come ho detto ho appena iniziato con il php quindi non ho ben capito quel che hai detto....ma almeno mi hai messo sulla strada giusta! ora devo studiare un po'!
    ciao e grazie

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    In pratica nella form di ricerca l'utente inserisce la parola, clicca sul pulsante di conferma e la parola viene inviata tramite POST allo script per la ricerca sul db.

    Lo script prende la parola inserita dall'utente e la passa alla query da effettuare sul db.

    Mi sono accorto che nel mio esempio ho dimenticato di mettere gli apici alla query, quella corretta è così
    Codice PHP:
    $query "SELECT * FROM tabella WHERE name='" $_POST['name'] . "'"
    viene effettuata la query e nella variabile $result viene messo il risultato.

    mysql_num_rows() ti dice quante righe sono state prese dalla query, quindi: se sono più di 0 vuol dire che almeno una entry corrispondente è stata trovata, ovvero la parola cercata dall'utente esiste, se invece di righe ne vengono prese 0 vuol dire che la clausola WHERE non ha trovato corrispondenze e quindi la parola cercata non esiste nel db.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.