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 =)