2011-07-20 17 views
8

Quiero obtener texto dentro de las etiquetas <option>, así como su valor.Obtener texto de <option> Etiqueta usando PHP

Ejemplo

<select name="make"> 
<option value="5"> Text </option> 
</select> 

que utilizan $_POST['make']; y me da el valor 5 pero quiero obtener tanto el valor y el texto.

¿Cómo puedo hacerlo usando PHP?

Respuesta

3

establece el valor del texto en el valor de la etiqueta de opción, ya sea mediante el marcado HTML estático o incluso si está siendo generado por un script del lado del servidor. Sólo tendrá el atributo de valor a través del poste

Otra opción sin embargo, en el lado del servidor, es mapear el valor ("5"), a una matriz asociativa, es decir

<?php 
$valueTextMap = array("5" => "Text"); 

$value = $_POST['make']; //equals 5 
$text = $valueTextMap[$value]; //equals "Text" 
?> 
1

que necesitará para incluir ese texto en el valor, para empezar (por ejemplo: <option value="5_Text"> Text </option> y luego analizar, o ...

Se puede usar javascript en la página para enviar el texto como otro Parm en la acción POST

2

en. Para obtener la etiqueta y el valor usando solo PH P, necesitas tener ambos argumentos como parte del valor.

Por ejemplo:

<select name="make"> 
    <option value="Text:5"> Text </option> 
</select> 

Código PHP

<?php 
$parts = $_POST['make']; 
$arr = split(':', $parts); 

print_r($arr); 

Salida:

Array(
    [0] => 'Text', 
    [1] => 5 
) 

Ésta es una manera de hacerlo.

+1

para todas las respuestas con respecto a este asunto, creo que este es el más elegante. irá de esta manera –

4

¿Qué tal esto? Creo que es la mejor solución porque tiene campos separados para cada dato. Solo un campo oculto que se actualiza en cada cambio y evita las asignaciones de codificación.

Esta dentro de HTML:

<select name='make' onchange="setTextField(this)"> 
<option value = '' selected> None </option> 
<option value = '5'> Text 5 </option> 
<option value = '7'> Text 7 </option> 
<option value = '9'> Text 9 </option> 
</select> 
<input id="make_text" type = "hidden" name = "make_text" value = "" /> 
<script type="text/javascript"> 
    function setTextField(ddl) { 
     document.getElementById('make_text').value = ddl.options[ddl.selectedIndex].text; 
    } 
</script> 

Este PHP interior:

<?php 
$value = $_POST["make"]; 
$text = $_POST["make_text"]; 
?> 
+0

gracias por esta línea 'document.getElementById ('make_text'). value = ddl.options [ddl.selectedIndex] .text;' – robert

0

siempre he utilizado un muy solución elegante, similar a los ya presentados, que no requiere una gran cantidad de código adicional.

HTML

<select name="make"> 
    <option value="1:First Option">First Option Text</option> 
    <option value="2:Second Option">Second Option Text</option> 
    <option value="3:Third Option Text">Third Option Text</option> 
</select> 

PHP

$value = split(':', $make)[0]; 
$text = split(':', $make)[1]; 

beneficios de este método
Sí, definitivamente hay similitudes con la respuesta de serialworm, sin embargo, reducir al mínimo el código en nuestro PHP bloquear al convertir discretamente a una matriz y elegir el elemento requerido de inmediato.

En mi caso, utilizo este código exacto de mano corta en un formulario de contacto donde este delineador (para obtener el nombre del departamento seleccionado) es fundamental para mantener el código limpio.

Cuestiones relacionadas