Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    343

    Motore di ricerca con un solo risultato e non di più

    Ciao a tutti,
    ho questo motore di ricerca che funziona benissimo, ma ha solo un problema che vorrei risolvere e non so come

    Mi spiego meglio, se io cerco es: agrigento il motore di ricerca mi estrae tutti i risultati di agrigento, e cosi via per qualsiasi interrogazione, e fino a qui tutto bene .

    Ma io vorrei che fosse possibile anche cercare tipo, via favara, agrigento cosi da sgranarmi ulteriormente i risultati.

    Vi posto il codice se qualcuno sa cosa posso fare grazie mille.

    Codice PHP:

    <?php

    $db_host 
    "localhost";
    $db_user "root";
    $db_password "root";
    $db_name "sicilia";

    //connetto il database

    $db mysql_connect($db_host$db_user$db_password) or die ('Errore durante la connessione');
    mysql_select_db($db_name$db) or die ('Errore durante la selezione del db');

    // recuperiamo il valore ricerca inviato con get

    $ricerca $_GET['ricerca'];

    // vediamo se è stato inviato, e quindi uguale a ok

    if ( $ricerca == 'ok' ) {

    // recuperiamo ora cerca inviato con post

    $cerca $_POST['cerca'];

    // vediamo se è stato compilato il campo

    if ( $cerca == TRUE && $cerca != "" ) {

    // ora vediamo se supera i tre caratteri

    if ( strlen($cerca) >= ) {

    // ora depuriamo la stringa da cercare sul database 

    $cerca =  mysql_escape_string(stripslashes($cerca)); 

    // ora possiamo effettuare la nostra ricerca sul db, state attenti alla sintassi

    $query "SELECT * FROM
        annunci INNER JOIN regione ON (annunci.regioneid=regione.id )
        INNER JOIN provincia ON (annunci.provinciaid=provincia.id)
         INNER JOIN citta ON (annunci.cittaid=citta.id)
         INNER JOIN cliente ON (annunci.clienteid=cliente.id)
        
        WHERE id_annunci LIKE '%
    $cerca%'  OR name LIKE '%$cerca%' OR regione LIKE '%$cerca%' OR citta LIKE '%$cerca%' OR descrizione LIKE '%$cerca%' OR prezzo LIKE '%$cerca%' OR via LIKE '%$cerca%' "

    $risultato mysql_query($query) or die (mysql_error()); 

    $risposta mysql_query($query) or die ("Utilizza termini più specifici!");

    $dentro_la_querymysql_fetch_assoc($risposta);

    if ( 
    $dentro_la_query == TRUE ) {

    while(
    $rowmysql_fetch_assoc($risultato)) { 
    $click_annuncio $row['click_annuncio'];
    $id_annunci $row['id_annunci'];
     
      
    $descrizione substr($row['descrizione'], 050); 
      
    $mq $row['mq'];
      
    $prezzo $row['prezzo'];
      
    $tipologia $row['tipologia'];
        
    $sigla $row['sigla'];
      
      
    $name $row['name'];
       
    $locali $row['locali'];
      
    $via $row['via'];
      
    $citta $row['citta'];
      
    $user_name $row['user_name'];
      
    $user_email $row['user_email'];
       
    $condizioni $row['condizioni'];
        
    $regione $row['regione'];
         
    $tipo $row['tipo'];
          
    $condizioni $row['condizioni'];
           
    $logo_cliente $row['logo_cliente'];
             
      
       
    $nome_file $row['nome_file'];
      
    $tipo_file $row['tipo_file'];
      
    $dati_file $row['dati_file'];
      






    // stampiamo i nostri dati 


     
    echo" <table width='100%'>";
      echo
    " <tr>";
       echo
    " <p class='three'><td colspan='3'> <a href=\"http://www.miosito.com/rannunci.php?id=$id_annunci\"/>$via,$citta,$name,$sigla,$regione</a></td>";
     echo
    " </tr>";
     echo
    " <tr>";
      echo
    "  <td width='14%' bgcolor='#f4f9fd'> <a href=\"http://www.miosito.com/rannunci.php?id=$id_annunci\"/>[img]immagini1.php?id=$id_annunci[/img]</a></td>";
      echo
    "  <td width='45%' bgcolor='#f4f9fd'><table width='100%'>";
       echo
    "   <tr>";
        echo
    "    <td>$descrizione</td>";
        echo
    "  </tr>";
        echo
    "  <tr>";
          echo
    "  <td>$id_annunci</td>";
    echo
    "</tr>";
     echo
    "     <tr>";
        echo
    "    <td></td>";
        echo
    "  </tr>";
       echo
    " </table></td>";
      echo
    "  <td width='31%' bgcolor='#f4f9fd'>$logo_cliente
    Prezzo:
    $prezzo
    Mq:
    $mq
    Locali:
    $locali</p></td>";
      echo
    "</tr>";
    echo
    "</table>";




    } else {

    echo 
    "Nessun temine alla ricerca trovato";

    }


    } else {

    echo 
    "Devi inserire almeno 3 caratteri";

    }

    } else {

    echo 
    "Non hai compilato il modulo ricerca";

    }

    }

    ?>

  2. #2
    Se hai più parole nella frase di ricerca devi costruire una LIKE per ognuna delle parole, per cui devi prima suddividere la frase in un array di parole e poi per ogni parola inserire nella query una LIKE.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    343
    Ho provato così ma non funziona ..

    array:

    Codice PHP:
    $regione = ("regione");
    $via = ("via");
    $name = ("name");
    $citta = ("citta")
    $array = array ('regione','name','citta','via');
    foreach(
    $array as $ok )); 
    inserito nel motore così:

    Codice PHP:
    <?php

    $db_host 
    "localhost";
    $db_user "root";
    $db_password "root";
    $db_name "sicilia";

    //connetto il database

    $db mysql_connect($db_host$db_user$db_password) or die ('Errore durante la connessione');
    mysql_select_db($db_name$db) or die ('Errore durante la selezione del db');

    // recuperiamo il valore ricerca inviato con get

    $ricerca $_GET['ricerca'];

    // vediamo se è stato inviato, e quindi uguale a ok

    if ( $ricerca == 'ok' ) {

    // recuperiamo ora cerca inviato con post

    $cerca $_POST['cerca'];

    // vediamo se è stato compilato il campo

    if ( $cerca == TRUE && $cerca != "" ) {

    // ora vediamo se supera i tre caratteri

    if ( strlen($cerca) >= ) {

    // ora depuriamo la stringa da cercare sul database 

    $cerca =  mysql_escape_string(stripslashes($cerca)); 

    // ora possiamo effettuare la nostra ricerca sul db, state attenti alla sintassi


    $regione = ("regione");
    $via = ("via");
    $name = ("name");
    $citta = ("citta")
    $array = array ('regione','name','citta','via');
    foreach(
    $array as $ok ));

    $query "SELECT * FROM
        annunci INNER JOIN regione ON (annunci.regioneid=regione.id )
        INNER JOIN provincia ON (annunci.provinciaid=provincia.id)
         INNER JOIN citta ON (annunci.cittaid=citta.id)
         INNER JOIN cliente ON (annunci.clienteid=cliente.id)
        
        WHERE id_annunci LIKE '%
    $cerca%'  OR name LIKE '%$cerca%' OR regione LIKE '%$cerca%' OR citta LIKE '%$cerca%' OR descrizione LIKE '%$cerca%' OR prezzo LIKE '%$cerca%' OR via LIKE '%$cerca%' OR ok LIKE '%$cerca%' "

    $risultato mysql_query($query) or die (mysql_error()); 

    $risposta mysql_query($query) or die ("Utilizza termini più specifici!");

    $dentro_la_querymysql_fetch_assoc($risposta);

    if ( 
    $dentro_la_query == TRUE ) {

    while(
    $rowmysql_fetch_assoc($risultato)) { 
    $click_annuncio $row['click_annuncio'];
    $id_annunci $row['id_annunci'];
     
      
    $descrizione substr($row['descrizione'], 050); 
      
    $mq $row['mq'];
      
    $prezzo $row['prezzo'];
      
    $tipologia $row['tipologia'];
        
    $sigla $row['sigla'];
      
      
    $name $row['name'];
      
    $ok $row['ok'];
       
    $locali $row['locali'];
      
    $via $row['via'];
      
    $citta $row['citta'];
      
    $user_name $row['user_name'];
      
    $user_email $row['user_email'];
       
    $condizioni $row['condizioni'];
        
    $regione $row['regione'];
         
    $tipo $row['tipo'];
          
    $condizioni $row['condizioni'];
           
    $logo_cliente $row['logo_cliente'];
             
      
       
    $nome_file $row['nome_file'];
      
    $tipo_file $row['tipo_file'];
      
    $dati_file $row['dati_file'];
      






    // stampiamo i nostri dati 


     
    echo" <table width='100%'>";
      echo
    " <tr>";
       echo
    " <p class='three'><td colspan='3'> <a href=\"http://www.miotosjdaid.com/rannunci.php?id=$id_annunci\"/>$via,$citta,$name,$sigla,$regione</a></td>";
     echo
    " </tr>";
     echo
    " <tr>";
      echo
    "  <td width='14%' bgcolor='#f4f9fd'> <a href=\"http://www.fklskfljsdkl.com/rannunci.php?id=$id_annunci\"/>[img]immagini1.php?id=$id_annunci[/img]</a></td>";
      echo
    "  <td width='45%' bgcolor='#f4f9fd'><table width='100%'>";
       echo
    "   <tr>";
        echo
    "    <td>$descrizione</td>";
        echo
    "  </tr>";
        echo
    "  <tr>";
          echo
    "  <td>$id_annunci</td>";
    echo
    "</tr>";
     echo
    "     <tr>";
        echo
    "    <td>$ok</td>";
        echo
    "  </tr>";
       echo
    " </table></td>";
      echo
    "  <td width='31%' bgcolor='#f4f9fd'>$logo_cliente
    Prezzo:
    $prezzo
    Mq:
    $mq
    Locali:
    $locali</p></td>";
      echo
    "</tr>";
    echo
    "</table>";




    } else {

    echo 
    "Nessun temine alla ricerca trovato";

    }


    } else {

    echo 
    "Devi inserire almeno 3 caratteri";

    }

    } else {

    echo 
    "Non hai compilato il modulo ricerca";

    }

    }

    ?>

  4. #4
    io darei una letta qui:

    http://forum.html.it/forum/showthrea...readid=1219344

    non risolve il tuo problema specifico, però dava buone indicazioni su come creare un motore di ricerca... or e like da sole non bastano, anche perchè se non puoi metterle in ordine di rilevanza, se specifichi o meno la via il risultato è inutile..sempre ad agrigento saranno (anzi, con la tua idea, ti troverebbe anche i record di luoghi che stanno in altre città ma nella stessa via... che so, se cerchi "via roma" e "agrigento" ti troverà mezza italia)...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    343
    grazie articolo interessantissimo ...

    ho provato così ma non funziona sai dirmi perché ????

    Codice PHP:
          <?php 


    ** 
     * 
    Search 
     

     * @
    package lib 
     
    * @author Tarchini Maurizio 
     
    * @copyright 2008 
     
    * @version 2.0 
     
    * @access public 
     */ 
      
    class 
    Search 

     
        var 
    $fulltext "descrizione,prezzo,regione,via,name,citta"
        var 
    $table "annunci,citta,regione,provincia"
        
    #parametri db 
        
    var $host "localhost"
        var 
    $password "root"
        var 
    $user "root"
        var 
    $db "sicilia"
        
    #metodo score -> p in percentuale, f in frazione 
        
    var $pf "f"
        
    #FINE CONFIGURAZIONE 
        #NON EDITARE OLTRE QUESTA LINEA 
        
    var $key
        var 
    $conn
        var 
    $res
        var 
    $total
         
            function 
    Search($key
            { 
                
    $this->key $key
            } 

            function 
    DbConnectAndSelect() 
            { 
                
    $this->conn = @mysql_connect($this->host$this->user$this->password) or die ("Impossibile stabilire una connessione con il server.
    MySql risponde: " 
    mysql_error() . "
    Il codice errore é:" 
    mysql_errno()); 
                 
                @
    mysql_select_db($this->db$this->conn) or die ("Impossibile connettersi al database $this->db.
    MySql risponde: " 
    mysql_error() . "
    Il codice errore é:" 
    mysql_errno()); 
            } 

            function 
    GetResource() 
            { 
                
    $this->DbConnectAndSelect(); 
                
    $sql "SELECT *, MATCH($this->fulltext) AGAINST('$this->key' IN BOOLEAN MODE) AS tot FROM $this->table WHERE MATCH($this->fulltext) AGAINST('$this->key' IN BOOLEAN MODE) ORDER BY tot DESC"
                
    $this->res mysql_query($sql$this->conn); 
                 
            } 
             
            function 
    CalcScore($tot
            { 
                switch(
    $this->pf
                { 
                    case 
    "f"
                    
    $key_array explode(" "$this->key); 
                    
    $this->total count($key_array); 
                    return 
    $tot " / " $this->total
                    break; 
                    case 
    "p"
                    
    $key_array explode(" "$this->key); 
                    
    $this->total count($key_array); 
                    
    $output intval($tot $this->total 100) . "%"
                    return 
    $output
                    break; 
                    default: 
                    
    $key_array explode(" "$this->key); 
                    
    $this->total count($key_array); 
                    return 
    $tot " / " $this->total
                    
                

                     
                } 
            } 
             
    }


     
    $search = new Search($key); 
    $search->GetResource(); 
    while (
    $row mysql_fetch_array($search->res)) 

        echo 
    $row['titolo'] . " score: " $search->CalcScore($row['tot']);     
    }
    ?>

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.