Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    13

    [JSP]lavorare con tre select cui valori provengono da DB

    Ciao, avrei bisogno di un vostro aiuto.
    Spiego il caso: ho un pagina JSP che mi permette di fare ricerche (su dati anagrafici salvati in un DB MySQL) utilizzando 3 select, una per il CF, una per cognome ed una per il nome.
    In ciascuna select le opzioni sono i vari valori memorizzati nel db (nella select CF ho tutti i CF salvati, in cognome ho tutti i cognomi, in nome ho tutti i nomi).
    Fin qui tutto bene.
    La mia prima idea era quella di selezionare un valore ad es "rossi" nella select cognome, ed avere all'interno delle altre 2 select i valori di nome e cf delle tuple in cui il cognome sia "rossi".
    Questo annullerebbe il rischio di errore in fase di ricerca.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Sì... e il problema quale sarebbe?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    13
    che purtroppo non so come si possa fare.
    mi puoi aiutare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    13
    Mi sa che è complicato o forse non si può fare visto che mancano suggerimenti..
    Alternativa:
    Se non mi è possibile fare una cosa del genere, almeno vorrei che selezionando un valore nella select CF, mi si disabilitino le altre 2 select.
    Almeno riduco (ma non annullo) rischio di errore.
    Ho trovato qualcosa di utile e volevo adattarlo al mio caso:
    http://forum.html.it/forum/showthread/t-710154.html

    Il problema in questo caso è che nell'esempio del link i valori option sono noti, nel mio caso sono prelevati dal db quindi non posso fare:if (value == '2').

    come risolvo?
    Mi potete aiutare?
    grazie

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Beh, non è che sia proprio semplicissimo.

    Lo puoi voler fare lato client usando JavaScript (che significa che dovrai fornire alla pagina HTML tutte le informazioni per poterlo fare) oppure lato server (che significa che, ad ogni clic sulle select, viene generata una Request ed il server dovrà filtrare i dati per la JSP).

    Esistono anche altre tecniche che usano librerie lato client apposite (credo jQuery et simili).

    Per farlo lato server, dovrai fare in modo che la SELECT reagisca alla selezione di un elemento, invocando una funzione JavaScript:

    codice:
    <select name="selCognome" onchange="JavaScript: ctrlSelCognome(this);">
       <option value="Rossi">Rossi
       <option value="Bianchi">Bianchi
       ...
    </select>
    La funzione JavaScript dovrà generare una request sul server (ad esempio, usando un form nascosto):

    codice:
    <script type="text/JavaScript" language="JavaScript">
    <!--
       function ctrlSelCognome( mioSelect ) {
          var formCognome = document.getElementById('formCognome');
          var valoreSelezionato = mioSelect.value;
          formCognome.cognome = valoreSelezionato;
          formCognome.submit();
       }
    //-->
    </script>
    ...
    <form id="formCognome" action="..." method="post">
       <input type="hidden" name="cognome" />
    </form>
    </script>
    Il server prenderà in carico la richiesta e tramite la sua bella servlet otterrà il valore del parametro "cognome", effettuerà il filtro di tutti i valori che corrispondono al cognome ottenuto come parametro e creerà un elenco di tutti e soli i valori filtrati. Poi passerà il controllo alla JSP che visualizzerà la nuova SELECT con i valori ottenuti dalla servlet.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    13
    Grazie per aver risposto!
    Non mi è molto chiaro il tuo suggerimento.
    Io ho un file jsp in cui sono presenti le 3 select citate, che non interagiscono tra loro.
    L'utente può selezionare qualsivoglia valore nelle 3 select e premere cerca.
    I dati selezionati nelle select vengono prelevati nella pag jsp successiva, che mi fa la loro AND:
    se c'è una persona con quel CF, quel cognome e quel nome (o solo CF, solo cognome e nome, ecc in base alle scelte fatte nella prima pag jsp) mi restituisce un elenco di valori preceduti da un radio button: seleziono la persona desiderata, click su apri e mi apre una pagina riassuntiva con vari dati anagrafici e non della persona.
    Se non trova nessuno mi da errore.
    Visto che le 3 select non interagiscono tra loro, la probabilità di errore è elevatissima.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Dunque sarebbe opportuno che le tre select "cooperassero"... e per farle cooperare hai le strade che ti ho suggerito sopra:

    1) Lato client con codice JavaScript che, ad ogni selezione dell'utente su una select, va a "filtrare" i valori delle altre

    2) Lato client mediante l'uso di librerie (come jQuery) che in un certo modo ti aiutano, sgravandoti da diverse complicanze che dovresti gestire a mano nel caso 1

    3) Lato server, facendo in modo che, ad ogni selezione dell'utente su una select, venga generata una request al server, che effettua i filtri e richiama la stessa JSP che visualizzerà una nuova pagina con le stesse select, ma con i valori filtrati in base alla selezione precedente.


    Io ti ho proposto dei piccoli pezzi di codice per realizzare il punto 3. Come ho già detto, non è una cosa facile da spiegare all'interno di una discussione... ma capito come funziona, basta lavorarci su.

    Per i rimanenti due casi, dovrei spostare la discussione nel forum JavaScript.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    13
    Grazie per i suggerimenti.
    In effetti facendo lato server, scegiendo un'opzione nella prima select dovrei rilanciare in un'altra pagina jsp che mi riempia le altre due select e, se si sceglie un'opzione nella seconda select dovrei rilanciare in un'altra pagina jsp che mi riempia l'ultima select...
    penso che inizia ad essere un pò scomodo all'utilizzo.
    Mi sa che è meglio provare una soluzione con javascript spostando la discussione (anche se inizialmente avevo scritto proprio li e mi hanno suggerito di spostare in java....).

    Grazie ancora per l'aiuto!

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da fili
    (anche se inizialmente avevo scritto proprio li e mi hanno suggerito di spostare in java....).
    Veramente avevi scritto in PHP...


    Provo a spostare in JavaScript.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2011
    Messaggi
    13
    C'è qualcuno che può aiutarmi?
    Mi sembra di capire non sia molto percorribile la prima opzione.
    Aiutatemi almeno con la seconda:


    Alternativa:
    Se non mi è possibile fare una cosa del genere, almeno vorrei che selezionando un valore nella select CF, mi si disabilitino le altre 2 select.
    Almeno riduco (ma non annullo) rischio di errore.
    Ho trovato qualcosa di utile e volevo adattarlo al mio caso:
    http://forum.html.it/forum/showthread/t-710154.html

    Il problema in questo caso è che nell'esempio del link i valori option sono noti, nel mio caso sono prelevati dal db quindi non posso fare:if (value == '2').

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.