Foros del Web » Programando para Internet » PHP »

Recibir mediante $_POST los dos datos de un option

Estas en el tema de Recibir mediante $_POST los dos datos de un option en el foro de PHP en Foros del Web. Hola, a ver si alguien lo sabe solucionar a esto. Tengo un select con varios options, y al seleccionar un option necesito enviar los datos ...
  #1 (permalink)  
Antiguo 27/03/2007, 09:49
Avatar de educlon  
Fecha de Ingreso: octubre-2003
Ubicación: Buenos Aires
Mensajes: 35
Antigüedad: 20 años, 6 meses
Puntos: 0
Recibir mediante $_POST los dos datos de un option

Hola, a ver si alguien lo sabe solucionar a esto. Tengo un select con varios options, y al seleccionar un option necesito enviar los datos por POST a una pagina página PHP, y aalí imprimir tando el dato del value del option seleccionado como su mensaje. Por ejemplo, si tengo este formulario:

Código HTML:
<form method="POST" value="procesar.php">
<select name="pais">
    <option value="1">Argentina</option>
    <option value="2">Brasil</option>
    <option value="3">Chile</option>
</select>
<br />
<input tipe="submit" value="Enviar">
</form> 
Si selecciono la opcion 2 = Brasil, en la página procesar.php quiero imprimir tanto el value (2) como el texto del option (Brasil).

Lo que me intesresa saber es cómo recupero el texto del option, ya que el value es simplemente imprimir el $_POST['pais'] ¿Se puede hacer esto desde PHP?

Mil gracias y saludos....
  #2 (permalink)  
Antiguo 27/03/2007, 09:54
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: Recibir mediante $_POST los dos datos de un option

Hola educlon

No se si habrá alguna forma más fácil, pero se me ocurre que creen un array:

Código PHP:
$pais= array("Argentina","Brasil","Chile"); 
y cojas el valor correspondiente a lo que recibes por post

Saludos,
  #3 (permalink)  
Antiguo 27/03/2007, 10:18
Avatar de maxi_lance  
Fecha de Ingreso: julio-2006
Ubicación: Capital Federal
Mensajes: 220
Antigüedad: 17 años, 9 meses
Puntos: 2
Re: Recibir mediante $_POST los dos datos de un option

Una opcion simple. Agregando el nombre de la option al value junto con el numero
Código PHP:
<form method="POST" value="procesar.php">
<
select name="pais">
    <
option value="1-Argentina">Argentina</option>
    <
option value="2-Brasil">Brasil</option>
    <
option value="3-Chile">Chile</option>
</
select>
<
br />
<
input tipe="submit" value="Enviar">
</
form
  #4 (permalink)  
Antiguo 27/03/2007, 13:16
Avatar de educlon  
Fecha de Ingreso: octubre-2003
Ubicación: Buenos Aires
Mensajes: 35
Antigüedad: 20 años, 6 meses
Puntos: 0
Re: Recibir mediante $_POST los dos datos de un option

Muy buena idea esta ultima de maxi_lance. El asunto era que este menú SELECT en realidad se arma dinámicamente con muchas mas opciones (le puse países sólo de ejemplo). La info del SELECT sale de una base de datos, y en el value coloca el "id" del registro, y en el texto del option coloca lo que encuentra en el campo "nombre" de la BD. Como en realidad las funciones de armado del SELECT vienen heredadas de una superclase, no la puedo tocar ni modificar para que trabaje de otra forma, ya que esta clase se usa en un montón de lugares del portal y afectaría el comportamiento en otras partes. Mi duda era saber si al enviar el formulario con la variable $pais, había alguna forma de recuperar tanto el value como el nombre que está dentro del OPTION, o sólo se puede recuperar el value, por lo cual si bien la idea de maxi_lance es muy buena, no me va a servir para este caso. Cualquier otra sugerencia será bienvenida.

Saludos.....
  #5 (permalink)  
Antiguo 27/03/2007, 13:27
 
Fecha de Ingreso: agosto-2006
Mensajes: 179
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Recibir mediante $_POST los dos datos de un option

La idea de maxi_lance es perfecta para lo que se necesita, lo que usted quiere es recuperar el value y la etiqueta de un option, pues como escribió maxi_lance coloca en el value tambien la etiqueta ejemplo:

<select name="cmb_ambos">
<option value="1000~Nombre1">Nombre1</option>
<option value="1001~Nombre2">Nombre2</option>
<option value="1002~Nombre3">Nombre3</option>
</select>

Utiliza un separador que nunca exista en ninguna de los dos valores luego para saber cual es el value y cual es la etiqueta pues haces algo como lo siguiente:

$valores=explode("~",$_POST["cmb_ambos"]);
$valor=$valores[0];
$etiqueta=$valores[1];

Y de esta manera te funciona correctamente.
  #6 (permalink)  
Antiguo 27/03/2007, 14:52
Avatar de Erikfrancisco  
Fecha de Ingreso: noviembre-2003
Ubicación: Estado de México
Mensajes: 503
Antigüedad: 20 años, 4 meses
Puntos: 4
Re: Recibir mediante $_POST los dos datos de un option

Pues, como ya bien te explico rusinho, puedes hacerlo de esa manera y es la forma más fácil de hacerlo, pero, como tu dices, si no puedes tocar la forma en que se arma el select:
Cita:
Iniciado por educlon Ver Mensaje
La info del SELECT sale de una base de datos, y en el value coloca el "id" del registro, y en el texto del option coloca lo que encuentra en el campo "nombre" de la BD. Como en realidad las funciones de armado del SELECT vienen heredadas de una superclase, no la puedo tocar ni modificar para que trabaje de otra forma, ya que esta clase se usa en un montón de lugares del portal y afectaría el comportamiento en otras partes. Mi duda era saber si al enviar el formulario con la variable $pais, había alguna forma de recuperar tanto el value como el nombre que está dentro del OPTION, o sólo se puede recuperar el value, por lo cual si bien la idea de maxi_lance es muy buena, no me va a servir para este caso.
entonces lo que puedes hacer es realizar una consulta en el archivo que se encarga de procesar tu formulario (procesar.php) y obtener ese dato que no es dificil ya que como mencionas el select lo formas de una consulta a una bd así que tendrías que hacer exactamente lo mismo. Si tu formulario es así:
Código PHP:
<form method="POST" value="procesar.php">
<
select name="pais">
    <
option value="1">Argentina</option>
    <
option value="2">Brasil</option>
    <
option value="3">Chile</option>
</
select>
<
br />
<
input tipe="submit" value="Enviar">
</
form
en el archivo procesar.php tendrías que hacer otra consulta de esta forma:
Código PHP:
<?php
$id 
$_POST['pais'];
$conexion mysql_connect'servername''username''password' );
$db mysql_select_db'basededatos' );
$consulta "SELECT nombre FROM tabla_paises WHERE id=".$id;
$res mysql_query$consulta );
$fila mysql_fetch_array$res );

echo 
"El value del select es: ".$id." y el texto es: ".$fila['nombre'];

mysql_close$conexion );
?>
Esto es sólo un ejemplo rápido, tu tendrías que validar que los datos sean validos y que la consulta te devuelva algún resultado. Como vez es bastante sencillo. Espero haberme dado a entender o que por lo menos te haya dado una idea. Suerte
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 00:58.