• User

    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 :ciauz:


  • Super User

    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.
    😄


  • User

    Grazie.
    Ma per caso c'è un limite sulla lunghezza della querystring?
    Ciao :ciauz:


  • Super User

    @El alma said:

    Grazie.
    Ma per caso c'è un limite sulla lunghezza della querystring?
    Ciao :ciauz:Si, l'URL deve essere lungo massimo 250-260 caratteri...


  • User

    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 :ciauz:


  • Super User

    @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?
    Ciao :ciauz:

    provaci a mettere:

    style="border=0px; margin=0px; padding=0px"

    Con FF fa lo stesso?


  • User

    Non cambia nulla 😞 Vabbè faccio qualche altra prova...
    Che intendi per FF?
    :ciauz:


  • User

    Forse ho trovato un modo per aggirare un problema...poi vi faccio sapere.
    :ciauz:


  • Super User

    io sapevo di un limite di 1000 caratteri però non sono sicuro. questa sera faccio una prova e poi ti dico con sicurezza.


  • User

    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 :ciauz:


  • Super User

    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 false

    avrai
    110

    se hai anche un select a 4 opzioni e ha scelto la terza
    avrai
    1103

    facendo 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 😄