|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
[PHP+MySQL]
ciao a tutti!
sto realizzando una piccola applicazione per la gestione della mia biblioteca personale. per la memorizzazione dei libri mi appoggio ad un DB MySQL, la tabella LIBRI è strutturata enl modo seguente: Codice:
id, int(3) titolo varchar(100) autore varchar(50) volume int(1) scaffale varchar(3) tag varchar(100) -la ricerca per titolo funziona -la ricerca per autore funziona -la ricerca per tag... la ricerca per tag??? come posso implementare questa maledetta ricerca per tag?? dunque, facciamo chiarezza, il campo tag memorizza i dati in questo formato: Codice:
,tag1,tag2,tag3,..., io avevo pensato di: -prendere il contenuto di $_POST['tag'] -fare un explode(',', $_POST['tag']) -poi con un ciclo creo una query con tanti LIKE quanti sono gli elementi dell'array ottenuto dall'explode legati con degli OR Codice:
SELECT i_campi_che_voglio FROM libri WHERE tag LIKE ',storia,' OR tag LIKE ',commedia,' OR tag LIKE ',biografia,' OR tag LIKE ... ![]() questa soluzione dovrebbe funzionare ma mi pare comunque che sia una cosa molto grezza ![]() non esistono metodi più eleganti per raggiungere lo scopo? P.S.: forse la lunghezza di titolo ed autore sono un po' eccessive, lasciamo stare per adesso. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
La butto lì... non è che magari non va implementato così il campo tag, ma va creata una tabella apposita, dove metterai tutte le tag create, con rispettivo libro collegato?
Codice:
| tag | id_libro | |-----------------------|-----------------------| | disney | 3 | | disney | 120 | | horror | 27 | Ultima modifica di MEMon : 14-11-2009 alle 22:10. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
umh... è vero, non ci avevo nemmeno pensato
però, scusa, se cerco più di un tag alla volta, ad esempio sto cercando un libro di guerra ambientato nel futuro e scritto in inghilterra ho sempre una query di questo tipo: Codice:
SELECT id_libro FROM MEMon_table WHERE tag='guerra' OR tag='futuro' OR tag='inghilterra' ad ogni modo ora mi creo sicuramente la tabella come hai consigliato tu ma il problema della query chilometrica rimane -----EDIT----- ahhhh ho capito!!! dici di fare così in modo che poi si possa usare l'IN?? hai ragione, scusa il mio iniziale scetticismo, sotto sotto sapevo che mi sfuggiva qualcosa, ora ci sono arrivato pure io. grazie mille! Ultima modifica di kurts : 14-11-2009 alle 22:32. |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Beh si è ovvio che per cercare un libro indicando più tag c'è bisogno di metterle tutte, ma mica è un problema, e non è neppure una query chilometrica, rimane comunque una microquery, le query chilometriche son ben altre, e credimi, una query è quasi sempre chilometrica
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ho visto ora l'edit, avendo una tabella a se stante puoi sfruttare tutte le potenzialità di una query, IN compreso.
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
|
non so se vi può interessare (credo di no), nel dubbio io condivido!
questo è il file ricerca.php Codice PHP:
P.S.: lasciate pure perdere le consigerazioni riguardanti la sicurezza e la grafica, l'applicazione dovrò girare su un computer che non avrà proprio fisicamente accessso alla rete e soprattutto visualizzerà le pagine tramite riga di comando, al massimo potrei usare le tabelle per un'impaginazione un grossolana |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:29.






















