Visualizzazione risultati 1 fino 9 di 9

Discussione: script php per cercare in database

  1. #1
    Guest

    Predefinito script php per cercare in database

    salve a tutti, io vorrei un form di ricerca nel databse del sito del seguente sito:
    *textarea* *selectbox* *tasto cerca*

    In poche paorle in textarea è dove si scrive la ricerca, select box si selezionano i campi..
    Per esempio c'è il campo tutto che cerca in tutto, poi c'è recensioni che cerca solo nel campo "name" della tabella "recensioni"..etc

    grazie ciao

  2. #2
    Guest

    Predefinito

    Sì vabbè, ma se non ci mostri com'è strutturato il database, poco possiamo consigliarti.


    Ciao!

  3. #3
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Un'idea base potrebbe essere questa:
    Codice PHP:
    $query=mysql_query("SELECT * FROM tabella WHERE ".mysql_escape_string($_POST['campo'])." LIKE '%".mysql_escape_string($_POST['testo'])."%'");
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  4. #4
    Guest

    Predefinito

    io nel database ho la tabella site_news, in cui ci sono i seguenti campi:
    id
    title
    content

    Io vorrei che mi si cercasse in title ed in content...


    PS: funcool come utilizzo quel codice? devo creare un form no? potresti spiegarmi pf?

  5. #5
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Certo che devi creare un form. Recuperi quello che vuoi cercare con $_POST, lo tratti con la funzione mysql_escape_string per evitare attacchi e poi lo cerchi nei due campi della tabella:
    Codice PHP:
    $valore=mysql_escape_string($_POST['nomecampo']);
    $risultato=mysql_query("SELECT * FROM site_news WHERE title LIKE '%{$valore}%' OR content '%{$valore}%'");
    while(
    $result=mysql_fetch_array($risultato))
    echo
    "<p />{$result['id']} - {$result['title']} - {$result['content']}";
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  6. #6
    Guest

    Predefinito

    allora la pagina results.php è cosi:

    <?php
    include ("inc/db.inc.php")

    $query=mysql_query("SELECT * FROM my_articles WHERE ".mysql_escape_string($_POST['campo'])." LIKE '%".mysql_escape_string($_POST['testo'])."%'");


    $valore=mysql_escape_string($_POST['nomecampo']);

    $risultato=mysql_query("SELECT * FROM my_articles WHERE title LIKE '%{$valore}%' OR content '%{$valore}%'");
    while($result=mysql_fetch_array($risultato))
    echo "<p />{$result['id']} - {$result['title']} - {$result['content']}";


    ?>

    c'è qualcosa d'altro da modificare?

    e la pagina search.php coem si fa? quella dove c'è il form..


    PS: per la pagina results.php alcuni dicono che si deve mettere tipo OR poi la variabile di ricerca, OR stessa variabile e terminare con OR..
    cosi cerca ogni parola singolarmente...coem si fa?

  7. #7
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Hai fatto un po' di casino. La prima query non ti serve più visto che hai cambiato la richiesta.
    Il form è che devi fare può essere così:
    Codice HTML:
    <form action="results.php" method="post">
    <input type="text" name="nomecampo" />
    <input type="submit" value="Cerca" />
    </form>
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  8. #8
    Guest

    Predefinito

    scusa io uso già la funzione trim:

    $chiave = trim($_POST['chiave']);

    come faccio ad integrare anche la mysql_escape_string?
    ho provato mysql_escape_string, trim ma da errore..e se faccio mysql_escape_string AND trim cerca "mysql_escape_string"..

    CMq sta funzione mysql_escape_string è da mettere solo alla variabile chiave? è abbastanza?

    ci sono anche altre funzioni per prevenire attacchi o basta questa?

  9. #9
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Codice PHP:
    $chiave=mysql_escape_string(trim($_POST['chiave']));
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

Regole di scrittura

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