Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    154

    Ricerca Avanzata in php

    Salve =)
    Su internet non ho trovato poi molto.. Ho fatto uno script per la ricerca e per la ricerca avanzata all'interno di un db MySql e è scritto in PHP 5.3.4 ... vi posto lo script:

    Codice PHP:
    $sql "SELECT * FROM prodotti_vendita WHERE ";
    $x "";
            foreach(
    $_GET as $key => $value) {
                if(
    $value != "-1" && $value != "" && $key != "Ricerca") {
                
    $sql.=$x." ".$key." LIKE '%".(str_ireplace(" ","%",$value))."%' ";
                
    $x "AND";
            }                            
        }
    $sql .= "ORDER BY nome ASC;";
    $sql_cerca $data->query($sql,$connessione); 
    Vi spiego il funzionamento:
    il mio scopo è costruire una stringa da usare come query e valorizzare la variabile $sql con questa stringa. la variabile $x mi serve per poter aggiungere l'operatore AND alla query.
    Scorro l'array $_GET contenente i campi del form di ricerca e controlla che il campo non sia vuoto. deve essere diverso di -1 per via delle select, non deve essere vuoto perchè magari l'utente non vuole ricercare in base a tutti i campi del form, che sono 4, e essendoci anche il bottone submit deve togliere anche quello. Dentro al costrutto if costruisco la mia query utilizzando l'operatore LIKE, % e la variabile $x, la quale dal secondo giro avrà valore "AND". chiudo i due costruitti, aggiungo l'ordine alfabetico e invio la query.
    poi la visualizzazione è molto semplice e non sto a scriverla.
    allora io volevo chiedervi:
    Come è come script? dico come qualità? può andare? ci sono strade migliori e più veloci?
    Poi un'altra domanda: se l'utente vuole utilizzare tutti e 4 i campi di ricerca, come faccio ad includere quei risultati che magari soddisfano solo 3 su 4 di questi campi? mi sono spiegato? in pratica, se io ricerco in base: al nome, alla provenienza, al tipo e al produttore come faccio ad includere quei risultati che soddisfano solo il nome, la provenienza e il tipo? oppure altri 3 campi tralasciandone uno?
    Ultima domanda: nella mia ricerca l'unico campo testo in cui è l'utente che deve scrivere è il nome del prodotto, ed essendo prodotti stranieri è semplice che un utente meno esperto sbagli. Come posso fare per farsi che la mia ricerca includa anche quei risultati con nome simile a quello che ha scritto l'utente? ad esempio: se l'utente scrive Plaisration al posto di Playstation lo script che vorrei realizzare deve includermi anche il prodotto con nome Playstation. Una cosa che mi viene in mente potrebbe essere che il nome ricercato sia composto da almeno il 75% dei caratteri dei nomi del prodotto all'interno dal DB.

    Spero di essermi spiegato... se non avete capito qualcosa sarò pronto a rispiegarvela =)

    Grazie mille =)

  2. #2
    Ciao,
    per non utilizzare la variabile $x potresti fare in questo modo:
    Codice PHP:
    $sql "SELECT * FROM prodotti_vendita WHERE true ";
    $x "";
            foreach(
    $_GET as $key => $value) {
                if(
    $value != "-1" && $value != "" && $key != "Ricerca") {
                
    $sql.=" AND ".$key." LIKE '%".(str_ireplace(" ","%",$value))."%' ";
            }                            
        } 
    Per la questione di includere solo una pare dei campi dovresti utilizzare l'OR al posto dell'AND, magari facendo scegliere all'utente come combinarli.

    Per il discorso delle parole simili l'unica cosa che mi viene in mente è di creare una serie di alias per le varie parole, esempio (Plaisration, Plaistation) => Playstation, quindi poi puoi eseguire un cerca e sostituisci.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    154
    Grazie codencode per la dritta sulla $x.. per quanto riguarda la ricerca pensavo più a qualche funzione mysql che magari con una query sola potrebbe includere diversi alias per il nome no? nessuno ne conosce una o ha già affrontato questo discorso?

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.