Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Sistema di ricerca per tabelle

    ciao a tutti,
    sono alla ricerca di un sistemino in php per afre delle ricerche all'interno delle tabelle del mio sito.
    Mi spiego meglio: ho un sito in cui ci sono 4 tabelle (quella delle news, quella dei prodotti, quella dei documenti e quella dell'archivio).
    Ora....io vorrei un sistema di ricerca interno in cui sia possibile tramite una tendina scegliere su quale delle 4 tabelle voglio fare la ricerca e una volta selezionata cliccando su cerca mi trova tutte le occorrenze di quella determinata tabella?
    è una cosa fattibile? ma soprattutto esiste qualcosa di già pronto da implementare?

    fatemi sapere

    Ciao
    Grazie

  2. #2

    re

    ciao...nessuno che mi possa dare una dritta?

  3. #3
    il contenuto delle tabelle viene preso da un db?

  4. #4

    re

    ciao mtx_maurizio e grazie innanzitutto,
    si i contenuti dovrebbero essere presi da un database mysql.
    Praticamente mi occorerebbe nella pagina della ricerca una tendina
    dalla quale viene selezionata il nome della tabella in cui desidero
    venga effettuata la ricerca poi scrivo la parola o frase chiave clikko su invia
    e il sistema mi ricerca in quella tabella e così via...
    Come posso fare mtx_maurizio? esiste uno script free
    che fa questo?

    Grazie ancora 2000

  5. #5
    Ma non capisco quale sia il problema.

    crei il tuo menù a tendina con le varie opzioni
    crei la textbox dove inserire la chiave di ricerca
    e hai quello che ti serve per fare la ricerca nel db

    (SELECT * FROM tabellaselezionata WHERE contenuto LIKE '%chiave%')

    Se poi vuoi una ricerca più raffinata con più parole chiave e ordinata per numero di occorrenze trovate ti posso postare una mia classe ma dovrai fare dell piccole modifiche al db

  6. #6

    re

    ciao Maurizio, sei molto gentile
    ora ho compreso. mi metto subito a lavoro
    e ti tengo aggiornato sull'evolversi della cosa.
    Agirò su un semplice script di ricerca che
    ricerca su una singola tabella e lo imposterò
    come mi hai indicato tu.
    OK posta pure la classe, provo a fare le cose alla
    grande, penso infatti che una ricerca più raffinata renda il tutto migliore

    GRAZIE ancora

  7. #7
    Guarda questa parte di guida.

    http://php.html.it/guide/lezione/228...re-di-ricerca/

    Ti spiega molto bene come fare un motore di ricerca creando una query dinamicamente. Questo ti permette di inserire quante chiavi di ricerca vuoi.

    Purtroppo usando LIKE e OR ti trova tutti quei campi dove c'è almeno una parola. Però te li ordina in modo casuale (non proprio casuale, te li ordina per come li trova).

    La classe che ti invio li ordina per score. Metti che tu hai iserito come chiavi "sedia tavolo lampada". Prima estrae (se ci sono) i campi dove ci sono tutte e tre le parole, poi quelli con due e poi quelli con uno solo.

    Se vuoi usarla dovrai però modificarla; siccome può cambiare la tabella, dovrai mettere la tabella nel costruttore e specificarla quando istanzi la classe

    Codice PHP:
    <?php

    /**
     * @Author                Tarchini Maurizio
     * @Version                2.0
     * @AuthorEmail            [email]info@mtxweb.ch[/email] or [email]maurizio.tarchini@bluewin.ch[/email]
     * @AuthorSite            [url]http://www.mtxweb.ch[/url]
     * @DocumentDate        20-1-2008
     * @DocumentLicense        PUBLIC -FREE
     * @LicenseDetail        GNU General Public License
     * @LicenseSite            [url]http://www.gnu.org/licenses/gpl.txt[/url]
     * @PHPCompatibility    4.2 or later
     * @DevelopmentStatus    stable
     */




    ########################################################################################
    # CLASSE Search: utilizzo
    #
    # Importante: i campi del database che si desidera analizzare, devono avere chiave
    # fulltext obbligatoriamente.
    #
    # Vanno configurati i parametri di ricerca e di accesso al db all'inizio della classe
    #
    # Esempio di uso semplice:

    # $key = "argomenti della ricerca"; 
    # $search = new Search($key);
    # $search->GetResource();
    #
    # A questo punto disponiamo della risorsa necessaria per poter stampare la ricerca
    #
    # while ($row = mysql_fetch_array($search->res))
    # {    
    #    echo $row['ad esempio il titolo articolo'];
    # }
    #
    # Altro esempio ma prendendo anche lo score di ogni risultato (tipo 4/5 -> 4 occorrenze trovate 
    # su 5 oppure in percentuale. Settare $pf su p per la percentuale o f per la frazione):
    #
    # $key = "argomenti della ricerca"; 
    # $search = new Search($key);
    # $search->GetResource();
    #
    # while ($row = mysql_fetch_array($search->res))
    #     {
    #    echo $row['titolo articolo'] . " " . $search->CalcScore($row['tot']);    
    #    }
    #
    #
    ########################################################################################## 



    /**
     * Search
     *
     * @package lib
     * @author Tarchini Maurizio
     * @copyright 2008
     * @version 2.0
     * @access public
     */
     
    class Search
    {
        
    #CONFIGURA
        #Parametri ricerca
        
    var $fulltext "campi fulltext da analizzare separati da virgola senza spazi";
        var 
    $table "tabella oggetto della ricerca";
        
    #parametri db
        
    var $host "localhost";
        var 
    $password "db password";
        var 
    $user "root";
        var 
    $db "nome database";
        
    #metodo score -> p in percentuale, f in frazione
        
    var $pf "f";
        
    #FINE CONFIGURAZIONE
        #NON EDITARE OLTRE QUESTA LINEA
        
    var $key;
        var 
    $conn;
        var 
    $res;
        
            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;
                    
                }
            }
            
    }


    ?>

  8. #8

    re

    GRAZIE Maurizio, testo il tutto e ti faccio sapere

    a presto

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.