Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    recuperare valori di più select

    Ciao a tutti,
    ho questo problema.

    Ho un elenco di record e per ognuno una select con delle azioni
    quindi, all'interno del mio codice PHP che genera tutte le righe ho anche questo
    Codice PHP:
    <select class="form-control select2me" id="operazioni" name="options2"><option value="Option 1_<?= $i?>">Option 1</option><option value="Option 2_<?= $i?>">Option 2</option></select>
    fate conto che sono 100 righe circa, quindi ogni option avrà in successione
    Option 1_1
    Option 2_1
    Option 1_2
    Option 2_2
    Option 1_3
    Option 2_3
    e così via...

    ora il mio problema è quello di creare un sistema javascript/jquery che al "change" di ogni record si comporti in un modo:
    ad esempio
    Option 1 in genere apre una pagina A
    Option 2 in genere apre una pagina B
    ovviamente la pagina che vado a chiamare deve per forza avere il parametro relativo al record (id) da portarsi dietro, così che possa fare operazioni di varia natura.

    Ho creato questo codice jquery ma non funziona (mi fa vedere sempre e solo l'ultimo valore dell'ultima select)

    Codice PHP:
    $( "select" ).change(function() {
    var 
    option document.getElementById("operazioni").value;alert(testo);}); 
    ne ho provati anche altri, ma niente, non riesco a toglierci le gambe.

    Qualcuno sa indicarmi come posso fare ?

    Grazie mille!
    -------------------------
    ..::`DrUmM\n0`::..
    www.jonathandomenici.com

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    codice:
    $('select').change(function(){
     var selectTag = $(this); //la select utilizzata
     var idSelect = selectTag.attr('id'); //l'id di questa
     var value = selectTag.val(); //il valore selezionato/option
    });
    Non so cosa sia "operazioni", se la select stessa è inutile perche' e' tutto in $(this).

    NB
    $('select') scritto cosi' esegue sempre questo per ogni select in pagina visto che 'select' è il nome di un tipo di tag

  3. #3
    Ciao e grazie per la risposta ... adesso provo a vedere se funziona.

    Nell'esempio che hai inserito, ogni select ha un'id diverso dall'altro o il medesimo ?

    operazioni è l'id della select

    Codice PHP:
    <select class="form-control select2me" id="operazioni" name="options">                                            <option value="">Seleziona...</option>                                            <option value="1">Option 1</option>                                            <option value="2">Option 2</option>                                            <option value="3">Option 3</option>                                            <option value="4">Option 4</option>                                        </select
    -------------------------
    ..::`DrUmM\n0`::..
    www.jonathandomenici.com

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Nell'html non devono esistere ID uguali o sarebbe un errore.
    Se ogni select ha il suo id, cosi' come ho scritto, $(this) è il tag select che stai selezionando e quindo document.getElementById(....) non serve perchè $(this) corrisponde a quello.

  5. #5
    Perfetto, funziona alla grande!!! Grazie mille!
    C'è solo un piccolo problema... nella pagina di destinazione del form non riesco a recuperare il valore. Sai dirmi come mai ?

    Ho questo codice
    Codice PHP:
             $('select').change(function(){     var selectTag = $(this); //la select utilizzata     var idSelect = selectTag.attr('id'); //l'id di questa     var value = selectTag.val(); //il valore selezionato/option     alert(value);     document.getElementById("frmInvia").submit();    }); 
    come vedi l'invio del form è dopo la "change" della select

    Il codice HTML del form è questo:
    Codice PHP:
    <form action="secure-operations.php?sesId=<?= $valore['sesId']; ?>" method="post" id="frmInvia" name="frmInvia"><select class="form-control select2me" id="operazioni_<?= $i?>" name="options"><option value="">Seleziona...</option><option value="1_<?= $i?>">Option 1</option><option value="2_<?= $i?>">Option 2</option><option value="3_<?= $i?>">Option 3</option></select></form>
    dove <?= $i; ?> rende unico valore della select (che a questo punto può non essere necessario)
    ad ogni modo se nella pagina di destinazione (secure-operations.php) faccio un var_dump($_POST) non vedo il valore selezionato prima.

    Grazie
    -------------------------
    ..::`DrUmM\n0`::..
    www.jonathandomenici.com

  6. #6
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    La select si chiama "options" come name, quindo dovresti avere $_POST['options']
    Nella stessa form se hai piu' select dovranno avere l'attributo name diverso o sicuramente qualcosa sarà sovrascritto.
    Se usi jquery è inutili utilizzare la sintassi classica "documenGetElementById....." basta faer $('#frmInvia').submit()

  7. #7
    Esatto, molto bene e mille grazie.

    Giusto per togliermi qualche dubbio...

    Nel ciclo PHP creo un form per ogni record, così che possa mantenere i nomi delle select e degli altri elementi uguali.

    codice del form (all'interno del foreach di php)
    codice:
    <form action="secure-operations.php" method="post" id="frmInvia" name="frmInvia">
    <select class="form-control select2me" id="operazioni" name="options">
    <option value="">Seleziona...</option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
    <option value="4">Option 4</option>
    </select>
    <input type="hidden" name="sesId" value="<?= $valore['sesId']; ?>">
    <input type="hidden" name="userId" value="<?= $valore['id']; ?>">
    </form>
    Come vedi ogni <option> è uguale all'altra (nel senso è uguale alle altre select) così come il nome e l'id in quanto sono tutte form diverse.


    codice:
             $('select').change(function(){
    	 var selectTag = $(this); //la select utilizzata
    	 var idSelect = selectTag.attr('id'); //l'id di questa
    	 var value = selectTag.val(); //il valore selezionato/option
    	 alert(value);
    	 $('#frmInvia').submit()
    Il problema è che alla fine (nella pagina di destinazione) non mi riporta i valori corretti del form in questione

    ho sempre questo risultato
    Array
    (
    [options] =>
    [sesId] => AIKMqjeZkE7YByj2YZATWcTS0tTBIrs013LgaP7ik49LrhDg74 ZT6JB63iwACOAsHbzIRvS1oRC
    [userId] => 267
    )

    dove userID è l'ultimo record
    e dove sesId è la sessione dell'ultimo record

    Come puoi vedere in [options] non c'è il valore della select che invece prima di fare il submit c'è e lo visualizza correttamente tramite l'alert che puoi vedere nel codice jQuery...

    Trattandosi di tutti form diversi, non dovrei aver problemi, no ? Come mai invece non mi visualizza i dati nella pagina di destinazione ? Come puoi vedere ho usato il tuo submit... forse xche fa il submit dell'ultimo form ?
    Allora la domanda è questa: come faccio a dire di fare il submit del form in questione ? (cioè quello selezionato)

    grazie mille

    J
    -------------------------
    ..::`DrUmM\n0`::..
    www.jonathandomenici.com

  8. #8
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Perchè non puoi avere appunto gli id doppi.
    Anche se fai submit in base alla select utilizzata vai poi a fare il submit di un ID. Che sia della form dov'è contenuta o meno la select non cambia. Ti prenderà sempre il primo id o ultimo che trova con stesso nome. Arrivano vuoti perchè non fa il submit della form che ti aspetti.
    A sto punto ti conviene non usare l'id della form per fare il submit ma il tag stesso.
    codice:
       $('select').change(function(){
         var selectTag = $(this);//la select utilizzata
         var idSelect = selectTag.attr('id');//NON CREDO SERVA....
         var value = selectTag.val();//il valore selezionato/option
         alert(value);
         var formTag = $(this).parent('form:first');
         $(formTag).submit()
    Cosi' dovrebbe andare

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.