Foros del Web » Programando para Internet » PHP »

select multiple + recoger como variables

Estas en el tema de select multiple + recoger como variables en el foro de PHP en Foros del Web. En primer lugar, decir que una vez conseguí poner los códigos en colores, pero no se como, si alguien me dice el secreto.... Tengo este ...
  #1 (permalink)  
Antiguo 07/05/2004, 11:11
Avatar de autonotel  
Fecha de Ingreso: junio-2003
Ubicación: Vigo
Mensajes: 480
Antigüedad: 20 años, 10 meses
Puntos: 13
select multiple + recoger como variables

En primer lugar, decir que una vez conseguí poner los códigos en colores, pero no se como, si alguien me dice el secreto....

Tengo este código, que por muchas vueltas que le doy no consigo que me muestre nada. No es que me de error, es que no muetra ningún resultado. Ya he comprobado que si se trata de imprimir las opciones elegidas en pantalla no hay problema pero ahora quiero tratar las selecciones como variables:

<form method="POST" action="otra.php">
<select size="7" multiple name="meses[]" >
<option value="enero" selected>enero</option>
<option value="febrero">febrero</option>
<option value="marzo">marzo</option>
<option value="abril">abril</option>
</select>
<input type="submit" value="enviar">

-----------Página otra.php--------------(he insertado en la tabla un registro"a" para darle un valor a where y luego tratar el resto de las condiciones como un bucle)

<?
mysql_connect("localhost","login","pass");
$cond3='';
if (is_array($meses)){
foreach ($meses as $value){
$cond2.=" and mes='$value'".$cond3."";
$cond3.=$cond2;
}
}
$sql="select * from tabla where mes='a'".$cond3." order by mes";
$result=mysql_db_query("db","$sql");
while ($row=mysql_fetch_array($result))
{
echo '<div align=center>';
echo '<center>';
echo '<table bgcolor=#FFFFBB border=1 cellpadding=0 cellspacing=0 width=80% height=60>';
echo '<tr>';
echo '<td width=11% height=37>Periodico: </td>';
echo '<td width=11% height=37><b>'.$row[mes].'</b></font></td>';
}
mysql_free_result($result)
?>

Sería un gran favor. Gracias anticipadas

Última edición por autonotel; 07/05/2004 a las 11:30
  #2 (permalink)  
Antiguo 07/05/2004, 13:58
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Ufff, ese bucle que crea la condicion me parece que lo lia todo. Creo que incluye y vuelve a incluir lo que ya habia incluido, etc.

Lo mejor es usar el operador IN de MySQL (http://dev.mysql.com/doc/mysql/en/Co...Operators.html), y crearlo tal que:
Código PHP:
$cond3='';
$cond3="'".implode("','",$_POST['meses'])."'";
$sql="... WHERE mes IN ($cond3) ORDER BY ..."
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 07/05/2004, 14:04
Avatar de autonotel  
Fecha de Ingreso: junio-2003
Ubicación: Vigo
Mensajes: 480
Antigüedad: 20 años, 10 meses
Puntos: 13
Gracias josemi. Estoy liado ahora(aparte de desquiciado) pero mañana hago pruebas y te comento.
gracias.
  #4 (permalink)  
Antiguo 08/05/2004, 02:48
Avatar de autonotel  
Fecha de Ingreso: junio-2003
Ubicación: Vigo
Mensajes: 480
Antigüedad: 20 años, 10 meses
Puntos: 13
Funciona perfectamente, sin el if.

$cond3='';
$cond3="'".implode("','",$_POST['meses'])."'";

$sql="select * from ejemplo where mes IN ($cond3) order by mes";


el problema es que no se por qué funciona. No se si me explico. En fin, tendré que chapar un poco más.
Muchas gracias.
  #5 (permalink)  
Antiguo 08/05/2004, 09:36
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Simplemente mira en el manual de PHP implode(), en el de mysql el IN, y haz un par de echo para ver que cadenas se genera.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 05:10.