Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    202

    motore di ricerca con più termini

    qual è la funzione per poter far visualizzare i risultati anche quando uno scrive due o + parole? in modo che vengano prese come chiavi 1 o + parole?

    questo è quello che ho io ora:

    $key = "". trim(stripslashes($_POST['key'])) ."";

    $query = "SELECT ... FROM ... WHERE (... LIKE '%$key%' OR ... LIKE '%$key%')";

    cosi mi da i risultati solo se scrivo una parola nel motore di ricerca...


    grazie a tutti e Buon Natale!

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    202
    Ho guardato su internet degli esempi da degli scripts e ho fatto cosi ma ho ancora un problema:

    $key = "". trim(stripslashes($_POST['key'])) ."";

    $keys = explode(" ", $key);

    if ($keys != "") {
    for ($x = 0; $x < count($keys); $x++) {
    $query = "SELECT ... FROM ... WHERE (... LIKE '%$keys[$x]%' OR ... LIKE '%$keys[$x]%')";

    il problema è che se cerco due termini, mi cerca solo il 2° secondo termine... come mai?

    help me!

    ciauz

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    202
    qualcuno mi può dare una mano?
    grazie!
    Buon Natale!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    202
    ... allora?

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    202
    ...
    c'è qualche persona in questo forum che sappia di php???

    e mi possa aiutare per cortesia per favore????

    ...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    109
    Ma così a prima vista mi pare che tu sbagli nel ciclo for a ripetere sempre la query per intero, mentre nel ciclo for dovresti solamente costruirti la parte di query per il LIKE. Quindi per forza che ti restituisce sempre l'ultimo valore...

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    202
    scusa ma non ho capito nulla di quello che hai detto... non sono espertissimo di php...

  8. #8
    se i dati che cerchi sono in un db, ti posso postare un funzione

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    109
    Ti butto giù un esempio preparato al volo, dovrebbe funzionare, sarebbe bello però se tu provassi a capire cosa ho fatto, anche perchè ci sarebbe altro da dire e da poter fare per migliorare la cosa.

    Codice PHP:
    $key trim(stripslashes($_POST['key']));

    $keys explode(" "$key);

    if (
    $keys != "") {
        
        
    $query "SELECT * FROM tabella WHERE (";
        
        for (
    $x 0$x count($keys); $x++) {
            
            
    $query .= "campo1 LIKE '%$keys[$x]%' OR campo2 LIKE '%$keys[$x]%'";
            
            if(
    $x<(count($keys)-1)){ $query .= " OR ";}
        }
        
        
    $query .= ")";


  10. #10
    Che scemo, ovviamente sono i n un db. Allora ti mando questa:

    E' simile a google e ti ordina i risultati per pertinenza (diciamo che se tu inserisci tre chiavi, ti estrae prima i risultati con tre poi due e poi uno

    Codice PHP:
    function Search ($key)
    {
        
        
    //Definizione di valori costanti
        
    $fulltext "campi fulltext da analizzare separati da virgola"// I campi da analizzare devono essere fulltext
        
    $dblocation "posizione del file di connessione al db";
        
    $table "nome tabella da esaminare";
        
        include 
    "$dblocation";
        
    $sql "SELECT *, MATCH($fulltext) AGAINST('$key' IN BOOLEAN MODE) AS tot FROM $table WHERE MATCH($fulltext) AGAINST('$key' IN BOOLEAN MODE) ORDER BY tot DESC";
        return 
    mysql_query($sql$conn);

    Attenzione, sui campi del db che vuoi analizzare devi mettere un indice fulltext.

    La funzione prende la chiave di ricerca (indipendentemente dalla lunghezza) e restituisce una risorsa mysql.

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.