Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Enviar 2 valores por <option>

Estas en el tema de Enviar 2 valores por <option> en el foro de PHP en Foros del Web. Hola amigos! Estoy tratando de mandar 2 valores a traves de un mismo <option> Pero no puedo.. Lo que quiero es mandar a select_repair.php el ...
  #1 (permalink)  
Antiguo 04/07/2013, 12:58
Avatar de indie_rok  
Fecha de Ingreso: mayo-2013
Ubicación: Top of the world.
Mensajes: 85
Antigüedad: 10 años, 10 meses
Puntos: 0
Enviar 2 valores por <option>

Hola amigos!

Estoy tratando de mandar 2 valores a traves de un mismo <option>

Pero no puedo..

Lo que quiero es mandar a select_repair.php el valor de status, tanto como el valor de id.



Aqui mi codigo:

Conection a SQL

Código PHP:
require_once("conection.php");
$name=$_POST["name"];
$last_name=$_POST["lastname"];
$phone=$_POST["phone"];
$sql_search="SELECT description,status,id from item where name='$name' and last_name='$last_name'";
$res_search=mysql_query($sql_search); 

-------------------------------------------------------

Imprime dinamicamente el numero de options en un select y le asigna VALUE a cada OPTION también dinámicamente

Código PHP:
<form action="select_repair.php" method="post">
<select name="search_res"><option>Select the phone</option> <!-- Aparece drop down deacuerdo al usuario-->
<?php 
while($imp_search=mysql_fetch_array($res_search))
    {
        if(
$imp_search["status"]==1)
        {
            echo 
"<option style='color:red' value=".$imp_search["status"].">"$imp_search["description"]."</option>";
        }
        
        
        if(
$imp_search["status"]==3)
        {
            echo 
"<option style='color:yellow' value=".$imp_search["status"].">"$imp_search["description"]."</option>";
        }
    }
?> 
</select><br />
<input type="submit" value="Do it!" />
</form>

Alguna idea?

He intentado poner

Código PHP:
<option style='color:yellow' value=".$imp_search["status"]." name="$_imp_search["id"]">". $imp_search["description"]."</option
Pero no funciona, ya que en select_repair.php yo seleciono el valor del OPTION a atraves del parametro search_res (nombre del SELECT) y no puedo accesar a la etiqueta value y name al mismo tiempo como pueden ver aca:


select_repair.php
Código PHP:
$repair_redirect=$_POST["search_res"];

if(
$repair_redirect==1)
{
    
$name=$_POST["name"];
    
$last_name=$_POST["last_name"];
    
$phone=$_POST["phone"];
    
header("Location:repair_2.php?name=$name&last_name=$last_name&phone=$phone");
    
}

if(
$repair_redirect==3)
{
    
$name=$_POST["name"];
    
$last_name=$_POST["last_name"];
    
$phone=$_POST["phone"];
    
header("Location:repair_3.php?name=$name&last_name=$last_name&phone=$phone");

Me quiero matar!!! jaja

ayuda!
  #2 (permalink)  
Antiguo 04/07/2013, 13:20
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Enviar 2 valores por <option>

Si el valor de id es único, eso es lo que debes enviar, luego en select_repair.php buscas cual es el valor de status para esa id.

En el caso de que id no sea clave primaria envía solo la clave primaria de ese registro.

En caso de que no tenga clave primaria, créala, es mucho más fácil manejar datos así.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #3 (permalink)  
Antiguo 04/07/2013, 13:23
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar 2 valores por <option>

y porque no metes lo 2 valores en el value del option separados por un comodín (una coma, una diagonal, etc) y en el archivo PHP que procesa los datos solo lo separas, al menos es la forma mas rápida y sin complicarte tanto...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 04/07/2013, 13:58
 
Fecha de Ingreso: abril-2013
Mensajes: 17
Antigüedad: 11 años
Puntos: 0
Respuesta: Enviar 2 valores por <option>

Por el option puedes enviar cualquier cantidad de valores que desees solo tiene que hacer esto


Código:
<option style='color:yellow' value=".$imp_search["status"]."-".$imp_search["OTROVALOR"]." name="$_imp_search["id"]">". $imp_search["description"]."</option>
y lo unico que tienes que hacer luego de enviar esta consulta usar un explode para dividir los dos valores y hay tendras tus dos valores diferentes
  #5 (permalink)  
Antiguo 04/07/2013, 14:00
Avatar de indie_rok  
Fecha de Ingreso: mayo-2013
Ubicación: Top of the world.
Mensajes: 85
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Enviar 2 valores por <option>

Cita:
Iniciado por stramin Ver Mensaje
Si el valor de id es único, eso es lo que debes enviar, luego en select_repair.php buscas cual es el valor de status para esa id.

En el caso de que id no sea clave primaria envía solo la clave primaria de ese registro.

En caso de que no tenga clave primaria, créala, es mucho más fácil manejar datos así.
Gracias por la respuesta, es lo que normalmente haria como tu me lo planteas.

Solamente que como puedes ver, necesito el valor de STATUS en la primera página, por que de acuerdo al STATUS el cliente quiere que se muestre de un color u otro. (<option style='color:yellow')..

Entonces no puedo hacerlo funcionar asi :(
  #6 (permalink)  
Antiguo 04/07/2013, 14:01
Avatar de indie_rok  
Fecha de Ingreso: mayo-2013
Ubicación: Top of the world.
Mensajes: 85
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Enviar 2 valores por <option>

Cita:
Iniciado por Nemutagk Ver Mensaje
y porque no metes lo 2 valores en el value del option separados por un comodín (una coma, una diagonal, etc) y en el archivo PHP que procesa los datos solo lo separas, al menos es la forma mas rápida y sin complicarte tanto...
No te entendí muy bien. Me podrias dar un ejemplo?

Gracias amigo!
  #7 (permalink)  
Antiguo 04/07/2013, 14:12
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Enviar 2 valores por <option>

@francisdap ya te dejo un ejemplo básico...

Código PHP:
Ver original
  1. echo "<option style='color:yellow' value='".$_imp_search["id"]."-".$imp_search["status"]."'>". $imp_search["description"]."</option>"

select_repair.php
Código PHP:
Ver original
  1. list($id,$status) = explode('-',$_POST['search_res']);
  2.  
  3. echo $id.'-'.$status;
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 04/07/2013, 14:39
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Enviar 2 valores por <option>

Cita:
Iniciado por indie_rok Ver Mensaje
Gracias por la respuesta, es lo que normalmente haria como tu me lo planteas.

Solamente que como puedes ver, necesito el valor de STATUS en la primera página, por que de acuerdo al STATUS el cliente quiere que se muestre de un color u otro. (<option style='color:yellow')..

Entonces no puedo hacerlo funcionar asi :(
En ese caso podrías hacer lo que dice Nemutagk y francisdap y concatenar ambos valores para luego separarlos.

Otra alternativa es que al seleccionar un valor del option envíes también un valor a un campo hidden con javascript, pero creo que lo más fácil es el método de nemutagk y francisdap.
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #9 (permalink)  
Antiguo 05/07/2013, 10:04
Avatar de indie_rok  
Fecha de Ingreso: mayo-2013
Ubicación: Top of the world.
Mensajes: 85
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Enviar 2 valores por <option>

Listo muchachos ya quedo!

Muchas gracias! Les debo una

Etiquetas: select, sql
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 06:17.