Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Consulta de un select multiple

Estas en el tema de Consulta de un select multiple en el foro de PHP en Foros del Web. Hola a todos estoy trabajando con lo siguiente tengo un form donde selecciono una opción seguido de esto ejecuto consultas.php… y realizo una consulta con ...
  #1 (permalink)  
Antiguo 08/05/2014, 17:11
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Consulta de un select multiple

Hola a todos estoy trabajando con lo siguiente tengo un form donde selecciono una opción seguido de esto ejecuto consultas.php… y realizo una consulta con elemento elegido…
No tengo problemas hasta acá (pase mi elemento con $_POST e hice un while en mi consulta)…

Pero ahora necesito marcar varios elementos de mi select (para esto ya agregue multiple="multiple" a mi select… pero en consultas.php no he logrado realizar la consulta con éxito (hice lo siguiente a mi <select name="opciones"> le agregue [] y antes de mi while hice un for, pero no me muestra nada)
Ojala me puedan ayudar GRACIAS :)

Código HTML:
<form action="consultas.php" method="post">
Elige una opción: 
<select name="opciones[]" id=" opciones "  style="width:195px"  multiple="multiple">
 <option value="0">Elige una opción</option>
<?php   
 do {    
  $id = $row_consulta['id]; 
  $fullName = $row_ consulta ['nombre']; 
  echo " <option value='$id'>$fullName</option>"; 

 } while ($row_ consulta = mysql_fetch_assoc($consulta));  
?>  
        </select>
        <input type="submit" value="Generar" />
        </form> 
CONSULTAS.php

Código PHP:
$id $_POST['opciones'];
mysql_select_db($database_connection$connection);
$row_a= ("SELECT * from tabla Where id ='$id' ");
$a mysql_query($row_a$connection) or die(mysql_error());
       
foreach (
$_POST['caja'] as $v=> $value

{
      while (
$row_amysql_fetch_assoc($a)){


        
        echo 
$row_a ['nombre'];

         
    }  

  #2 (permalink)  
Antiguo 08/05/2014, 17:22
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Consulta de un select multiple

$_POST['opciones'] es un array, por lo que no puedes tratarlo como una cadena.

Código PHP:
Ver original
  1. $ids = $_POST['opciones'];
  2.  
  3. // Verifica que, al menos una opción se haya seleccionado:
  4. if(count($ids) > 0) {
  5.       // Ahora arma la consulta con el filtro "WHERE id IN (id1, id2, ...)"
  6.       $sql = "SELECT * from tabla Where id IN (" . implode(', ', $ids) . ")";
  7.       $a = mysql_query($sql, $connection) or die(mysql_error());
  8.  
  9.       // Aquí ya haces lo que necesites con las opciones seleccionadas
  10. }

Por cierto, estoy suponiendo que el campo ID es numérico y por eso van sin comillas, en caso de que sea VARCHAR, cada valor en el IN necesitará estar entre comillas simples.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 08/05/2014, 17:41
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Consulta de un select multiple

Cita:
Iniciado por Triby Ver Mensaje
$_POST['opciones'] es un array, por lo que no puedes tratarlo como una cadena.

Código PHP:
Ver original
  1. $ids = $_POST['opciones'];
  2.  
  3. // Verifica que, al menos una opción se haya seleccionado:
  4. if(count($ids) > 0) {
  5.       // Ahora arma la consulta con el filtro "WHERE id IN (id1, id2, ...)"
  6.       $sql = "SELECT * from tabla Where id IN (" . implode(', ', $ids) . ")";
  7.       $a = mysql_query($sql, $connection) or die(mysql_error());
  8.  
  9.       // Aquí ya haces lo que necesites con las opciones seleccionadas
  10. }

Por cierto, estoy suponiendo que el campo ID es numérico y por eso van sin comillas, en caso de que sea VARCHAR, cada valor en el IN necesitará estar entre comillas simples.
GRACIAS Triby
UN ABRAZO

Etiquetas: mysql, select, sql, tabla
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 18:01.