Foros del Web » Programando para Internet » PHP »

Realizar consulta desde varios select a un BBDD

Estas en el tema de Realizar consulta desde varios select a un BBDD en el foro de PHP en Foros del Web. Estoy programando una paginilla del tipo: http://www.controlever.com Desde varios select mando los valores por get a buscar.php y alli visualizo los resultados de esa consulta ...
  #1 (permalink)  
Antiguo 09/09/2011, 03:32
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Realizar consulta desde varios select a un BBDD

Estoy programando una paginilla del tipo:

http://www.controlever.com

Desde varios select mando los valores por get a buscar.php y alli visualizo los resultados de esa consulta a una bbdd mysql. El problema es que existe en cada select una opción que es todos
$sql="select * from nombretabla";
pero si el select nombre tiene el valor todos y los demás un valor determinado:
$sql="select campo1, campo2, campo from tabla where campo1=$var1 and campo2=$var2 ...";
¿ Si tengo 4 select tendría que hacer tantos consultas como variaciones posibles hubiera? , ya que el valor todos , no está en la tabla y estoy ahora un poco líada y no sé si debo hacerlo con tantas consultas o hay una forma más sencilla.
Serían como 16 consultas, y creo que es una chapuza, pero a lo mejor es la única solución.

Estoy empezando en esto , y siempre lo había hecho pasando un valor no todos los del select
Disculpen si no me he explicado bien.
Un saludo
  #2 (permalink)  
Antiguo 09/09/2011, 09:33
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 4 meses
Puntos: 22
Respuesta: Realizar consulta desde varios select a un BBDD

Hola lo que puedes hacer es concatenar tus condiciones una manera que se me ocurre asi de rapido puede ser:

Código PHP:
$campo1=$_REQUEST['campo1'];
$campo2=$_REQUEST['campo2'];
$condicion="";
if (
$campo1!="todos")
{
    if (
$condicion=="")
        
$condicion .= "campo1='$campo1'";
    else
        
$condicion .= " and campo1='$campo1'";
}
if (
$campo2!="todos")
{
    if (
$condicion=="")
        
$condicion .= "campo2='$campo2'";
    else
        
$condicion .= " and campo2='$campo2'";
}

if (
$condicion=="")
    
$sql="select * from tabla";
else
    
$sql="select * from tabla where " $condicion
Saludos.

Última edición por ginitofl; 09/09/2011 a las 09:35 Razón: edicion
  #3 (permalink)  
Antiguo 09/09/2011, 11:05
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Realizar consulta desde varios select a un BBDD

Gracias , muchas gracias.
Justo era eso, una forma sencilla de concatenar y luego en un momento poner toda la condición.
Muchas gracias, ginitofl.
  #4 (permalink)  
Antiguo 09/09/2011, 11:33
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 4 meses
Puntos: 22
Respuesta: Realizar consulta desde varios select a un BBDD

De nada amigo estamos para ayudar.

Saludos.
  #5 (permalink)  
Antiguo 09/09/2011, 13:32
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Realizar consulta desde varios select a un BBDD

Disculpad , pero no me sale cuando pongo condiciones. PUedo visualizar bien las condiciones pero no me hace la consulta, y siempre me sale el mysql_error(Resource id #3). Sábeis de que es. Gracias anticipadas
El código es
$cn=mysql_connect('localhost','root',"");
mysql_select_db('carretillas',$cn) or die (mysql_error());
$condicion="";
if($fabricante!="0")
{
if($condicion=="")
$condicion.=" fabricante='$fabricante'";

}
if($cap!="0")
{
if($condicion=="")
$condicion.= " capacidad='$cap' ";
else
$condicion.= " and capacidad='$cap' ";

}
if($cat!="0")
{
if($condicion=="")
$condicion.= " categoria='$cat' ";
else
$condicion.= " and categoria='$cat' ";
}
if($propulsion!="0")
{
if($condicion=="")
$condicion.= " propulsion='$propulsion' ";
else
$condicion.= " and propulsion='$propulsion' ";
}
if($condicion=="")
$sql="select * from carretillas";
else
$sql="select * from carretillas where " . $condicion ;


$cursor=mysql_query($sql, $cn);
echo "<table border=2>";
while($reg=mysql_fetch_array($cursor,MYSQL_ASSOC))
{
echo "<tr>";
foreach($reg As $v)
{
echo "<td>$v</td>";
}
echo "</tr>";
}
echo "</table>";


echo "el error es "."mysql_error($cn)";
mysql_close($cn);
  #6 (permalink)  
Antiguo 09/09/2011, 13:56
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Realizar consulta desde varios select a un BBDD

Me respondo:
Todo funcionaba perfecto, era un problema de bbdd.
Gracias porque me parece una solución elegante.
  #7 (permalink)  
Antiguo 09/09/2011, 14:25
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 4 meses
Puntos: 22
Respuesta: Realizar consulta desde varios select a un BBDD

Te falta el else aqui si la condicion no cumple.

Código PHP:
Ver original
  1. if($fabricante!="0")
  2. {
  3.     if($condicion=="")
  4.         $condicion.=" fabricante='$fabricante'";
  5.     else
  6.         $condicion.= " and fabricante='$fabricante' ";
  7. }

Saludos.

Última edición por ginitofl; 09/09/2011 a las 14:26 Razón: condicion
  #8 (permalink)  
Antiguo 09/09/2011, 14:44
 
Fecha de Ingreso: marzo-2007
Mensajes: 58
Antigüedad: 17 años, 1 mes
Puntos: 0
Respuesta: Realizar consulta desde varios select a un BBDD

Ya la he puesto, he empezado no poniendol el else porque era la primera que concatenaba, pero luego la he puesto por si acaso no empezaba por ahí.
Gracias ginitofl, cuando la termine, si me la aprueban, la subiré para que veáis el resultado, es lo menos por todo el esfuerzo que ponéis en ayudar.
Un saludo

Etiquetas: bbdd, realizar, 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 01:31.