2010-12-12 16 views
5

En mi lista desplegable tengo dos valores diferentes para cada opción. ¿Cómo puedo recuperar ambos? Déjame ilustrar lo que quiero decir.PHP obtener lista desplegable seleccionar valor de opción

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

Cuando el formulario se ha publicado, quiero ser capaz de obtener tanto el value_id $ y $ value_text de la opción seleccionada. ¿Cómo puedo hacer esto?

$ _POST ['my_ddl'] solo obtiene un valor, no ambos.

En asp.net podría hacerlo simplemente al referirme a my_ddl.Value y my_ddl.Text.

¡Gracias!

Respuesta

5

Estrictamente, esto no es posible.

Lo que podría hacer es utilizar un delimitador en su value atributo:

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

Y ...

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

¡Gracias! Esto funcionó excelente. Tan simple que no puedo creerlo. –

0

Si está usando PHP para poblar el texto para el <option> entonces probablemente solo pueda ver el valor en el servidor. ¿Quizás solo necesites usar $ value_id para buscar el texto en una tabla de base de datos?

De lo contrario, podría incluir un campo oculto en su formulario y usar JavaScript para actualizar ese campo oculto con el texto cada vez que se seleccione un nuevo valor.

0

No puede obtener value_text de datos POST. Una solución es llenar el campo oculto después de elegir la opción a través de JavaScript.

3

Otra extraña forma de hacerlo es:

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

A continuación, cuando se procesa se puede hacer esto o tal vez incluso algo más simple:

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

debido a que PHP trata el sentido [] la cadena es una matriz, por lo que tiene una matriz asociativa al instante. Sin embargo, estoy de acuerdo con que si lo colocas allí en primer lugar, deberías poder buscarlo nuevamente en el código en lugar de confiar en esto.

Cuestiones relacionadas