PHP get dropdownlist seleziona il valore dell'opzione

Nel mio elenco a discesa ho due valori diversi per ciascuna opzione. Come posso recuperare entrambi? Lascia che ti illustri cosa intendo.

<select name="my_ddl"> <option value="<?php $value_Id ?>"><?php $value_text ?></option> <option value="<?php $value_Id ?>"><?php $value_text ?></option> </select> 

Quando il module viene pubblicato, voglio essere in grado di get sia $ value_id che $ value_text dell'opzione selezionata. Come posso fare questo?

$ _POST ['my_ddl'] riceve solo un valore non entrambi.

In asp.net ho potuto farlo semplicemente facendo riferimento a my_ddl.Value e my_ddl.Text.

Grazie!

Rigorosamente, questo non è ansible.

Quello che potresti fare è usare un delimitatore nel tuo attributo value :

 <select name="my_ddl"> <option value="<?php echo $value_Id ?>|<?php echo $value_text ?>"><?php echo $value_text ?> </option> </select> 

E…

 <?php list($id, $text) = explode('|', $_POST['my_ddl']); //... ?> 

Un altro modo strano di farlo è:

 <select name="my_ddl"> <option value="<?php echo $value_Id ?>[<?php echo $value_text ?>]"> <?php echo $value_text ?> </option> </select> 

Quindi quando lo elabori puoi farlo o forse anche qualcosa di più semplice:

 foreach ($_POST['my_dd1'] as $value_Id => $value_text) { $value_Id = $value_Id; $value_text = $value_text; } 

Poiché php tratta [] come se la string fosse una matrix e quindi istantaneamente hai un arrays associativo. Sono d'accordo però che se lo metti lì in primo luogo dovresti essere in grado di guardarlo di nuovo nel codice piuttosto che fare affidamento su questo.

Se stai usando PHP per compilare il text per l' <option> probabilmente puoi semplicemente vedere il valore sul server. Forse hai solo bisogno di usare $ value_id per cercare il text in una tabella di database?

In caso contrario, potresti includere un field nascosto nel module e utilizzare JavaScript per aggiornare quel field nascosto con il text each volta che viene selezionato un nuovo valore.

Non puoi get value_text dai dati POST. Una soluzione è compilare il field nascosto dopo aver scelto l'opzione tramite JavaScript.