Foros del Web » Programando para Internet » PHP »

Formulario php

Estas en el tema de Formulario php en el foro de PHP en Foros del Web. Como puedo hacer para que al enviar los datos de un formulario al archivo php mediante campos "select", los options envien solo el dato de ...
  #1 (permalink)  
Antiguo 21/01/2008, 14:38
 
Fecha de Ingreso: octubre-2004
Mensajes: 198
Antigüedad: 20 años, 1 mes
Puntos: 1
Formulario php

Como puedo hacer para que al enviar los datos de un formulario al archivo php mediante campos "select", los options envien solo el dato de "label" y no el de "value" como sucede por defecto, es decir, que el php tome el dato de label solamente, ya que el de value lo necesito usar para un script en javascript, y no quiero que esos datos los tome el php. Aqui dejo un ejemplo del select:

Código:
<select size="1" name='one'>
<option value='0'> # Adultos
<option value='2203' label='1 x u$s 2203.00 = u$s 2203.00'> 1
<option value='4406' label='2 x u$s 2203.00 = u$s 4406.00'> 2
</select>
__________________
La seguridad es la infinita inseguridad de lo seguro.
  #2 (permalink)  
Antiguo 21/01/2008, 15:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Formulario php

Lamento decirte que no vas a poder hacerlo directamente, los controles HTML por defecto envían su atributo value y no hay forma de enviar el label del control.

Tu única solución es antes de enviar el formulario copiar el label del control a un campo oculto, y este enviarlo hacia PHP.

Saludos.
  #3 (permalink)  
Antiguo 21/01/2008, 19:40
 
Fecha de Ingreso: octubre-2004
Mensajes: 198
Antigüedad: 20 años, 1 mes
Puntos: 1
Re: Formulario php

Gracias GatorV, pero como se puede lograr eso que usted dice??
__________________
La seguridad es la infinita inseguridad de lo seguro.
  #4 (permalink)  
Antiguo 21/01/2008, 21:21
Avatar de cdesseno  
Fecha de Ingreso: mayo-2007
Ubicación: Buenos Aires
Mensajes: 111
Antigüedad: 17 años, 6 meses
Puntos: 1
Re: Formulario php

Algo así sería si te entendí bien.
Código:
<select size="1" name='one'>
<option value='0'> # Adultos
<option value='2203' label='1 x u$s 2203.00 = u$s 2203.00'> 1
<option value='4406' label='2 x u$s 2203.00 = u$s 4406.00'> 2
</select>
<input type=hidden NAME="label2203" value="1 x u$s 2203.00 = u$s 2203.0">
<input type=hidden NAME="label4406" value="2 x u$s 2203.00 = u$s 4406.00">
  #5 (permalink)  
Antiguo 21/01/2008, 22:42
 
Fecha de Ingreso: octubre-2004
Mensajes: 198
Antigüedad: 20 años, 1 mes
Puntos: 1
Re: Formulario php

cdesseno, gracias por responder.

No lo he probado, pero ya que GatorV dijo que no se puede hacer lo que yo plantie al principio, entonces lo que quiero es que al seleccionar un option en el formulario, el contenido de "label" de ese option sea agregado a un campo oculto y asi el campo oculto lo envia al php.
Eso habria que hacerlo en javascript??
__________________
La seguridad es la infinita inseguridad de lo seguro.
  #6 (permalink)  
Antiguo 22/01/2008, 10:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Re: Formulario php

Así es, solo lo puedes hacer en JavaScript, y el problema es que si el usuario desactiva JavaScript, tendrías problemas en la lógica de tu Script.

Otra solución un poco mas complicada es crear el Select desde el servidor, y que este atado a una fuente de datos (un arreglo en este caso), así podrías ver que opción corresponde a label, algo así:
Código PHP:
$datos = array(
       
'0' => "# Adultos",
       
'2203' => "1",
       
'4406' => "2",
); 
Así una vez enviado el Select podrías saber el label haciendo algo así:
Código PHP:
$op $_POST['one'];
$label $datos[$op];

echo 
$label// Te debe de dar el valor correcto 
Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:00.