- Home
- Categorie
- Coding e Sistemistica
- PHP
- Ricerca "avanzata"
-
Ricerca "avanzata"
Un saluto a tutti.
Cerco di spiegare il problema che mi trovo ad affrontare.
Prima vi descrivo come ho impostato il form per la ricerca, diciamo "avanzata". Ho un gruppo di 4 radio button, in pratica un radio button corrisponde ad una tabella del db. Selezionando un radio button si attiva un campo select (vabbè questo non è molto importante). Poi ho due radio button per il criterio (AND oppure OR). Infine ho una serie di checkbox, che rappresentano ciascuno un campo della tabella selezionata (le tabelle non hanno gli stessi campi, ma grazie a javascript attivo/disattivo le checkbox opportunamente) in più c'è la checkbox "Tutti i campi". Se una checkbox viene impostata a "checked" si attiva un campo testo che permette di inserire il testo da ricercare.
Il mio problema nasce dal fatto che uso il paging per la visualizzazione dei risultati. Quando si cambia pagina per vedere gli altri risultati, viene richiamato lo stesso file (ricerca.php). Nel caso della ricerca semplice utilizzavo una "query string" per "ricordare" le scelte dell'utente che in quel caso erano solo la parola da ricercare e la tabella in cui cercare, ma in questo caso la query string si complicherebbe parecchio, anche perchè mi devo portare dietro i valori di tutti i campi selezionati e non (almeno mi pare ad un primo esame della questione ) cosa potrei utilizzare? secondo voi le variabili di sessione mi potrebbero aiutare? Suggerimenti?
Misà che mi sono spiegata con i piedi!
Ciao
El alma
-
niente variabili di sessione, perdi eventuali indicizzazioni.
la soluzione più semplice è di passare tutti i parametri sulla querystring
altrimenti puoi fare tanti campi hidden quanti sono i parametri ed al posto che fare un link è come se facesso il post della form.io ti consiglio la prima soluzione.
-
Grazie.
Ma per caso c'è un limite sulla lunghezza della querystring?
Ciao
-
@El alma said:
Grazie.
Ma per caso c'è un limite sulla lunghezza della querystring?
Ciao Si, l'URL deve essere lungo massimo 250-260 caratteri...
-
Il problema è proprio questo. Mi potrebbe capitare di superare questo limite.
L'alternativa consigliatami da Tymba sono i campi hidden, solo che esteticamente mi rovinano il form...anche mettendo una heigth=0 la "spaziatura" si vede...o sbaglio qualcosa? c'è un modo per eliminare questo effetto?
Ciao
-
@El alma said:
Il problema è proprio questo. Mi potrebbe capitare di superare questo limite.
L'alternativa consigliatami da Tymba sono i campi hidden, solo che esteticamente mi rovinano il form...anche mettendo una heigth=0 la "spaziatura" si vede...o sbaglio qualcosa? c'è un modo per eliminare questo effetto?
Ciaoprovaci a mettere:
style="border=0px; margin=0px; padding=0px"
Con FF fa lo stesso?
-
Non cambia nulla Vabbè faccio qualche altra prova...
Che intendi per FF?
-
Forse ho trovato un modo per aggirare un problema...poi vi faccio sapere.
-
io sapevo di un limite di 1000 caratteri però non sono sicuro. questa sera faccio una prova e poi ti dico con sicurezza.
-
Mannaggia....i campi hidden non sono praticabili per il problema relativo al paging. L'utente inserisce le sue preferenze di ricerca, poi il form viene inviato e a quel punto viene visualizzato solo un sottoinsieme dei risultati (nella query uso LIMIT), quando l'utente cambia pagina la query viene rieseguita (ovviamente l'offset nella clausola LIMIT sarà diverso), ma le preferenze di ricerca a quel punto si perdono, dovrei passargliele con una querystring, ma non sò se mi frega il limite di caratteri...farò delle prove...mi pare di aver letto che il limite è sui 1400.
Grazie ancora.
Ciao
-
piccolo spunto di riflessione:
se hai nel form di compilazione della ricerca avanzata una serie di checkbox (o scelte a 2 o più opzioni)
puoi usare un concatenamento di stringa e mettere il carattere corrispondente al valore scelto:se è boolean (checkkbox)
avrai
controllo 1 risp true
controllo 2 risp true
controllo 3 risp falseavrai
110se hai anche un select a 4 opzioni e ha scelto la terza
avrai
1103facendo il controllo di questa stringa e prendendo i caratteri che ti servono recuperi anche le impostazioni.
allo stesso modo puoi convertire gli altri valori ingegnandoti un pochino