Foros del Web » Programando para Internet » PHP »

construir SELECT

Estas en el tema de construir SELECT en el foro de PHP en Foros del Web. Hola a [email protected]: Mi problema es que quiero construir un SELECT y por lo visto algo esta mal y no lo consigo. El tema es ...
  #1 (permalink)  
Antiguo 21/11/2004, 04:43
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 15 años, 11 meses
Puntos: 0
construir SELECT

Hola a [email protected]:
Mi problema es que quiero construir un SELECT y por lo visto algo esta mal y no lo consigo.
El tema es el que sigue:
De un formulario paso un numero no definido de valores y segun estos valores construir el SELECT.
el mensaje de error es:
Cita:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE coche.id_modelo = '20' AND modelo.id_modelo = '7' AND mar
Tengo que decir que si no selecciona algo del formulario lo que envia este es"%" menos en $_POST['modelo'] que envia "" (vacio).

El codigo es el que sigue:
Realizo las conexiones a la bd

Código PHP:
$condicion="WHERE ";
 if (
$_POST['marca']!="%"||$_POST['modelo']!=""){
 
$consulta=$condicion."coche.id_modelo = '".$_POST['modelo']."' AND modelo.id_modelo = '".$_POST['marca']."' AND marca.id_marca = '".$_POST['marca']."'";
  }
  if (
$_POST['tipo']!="%"){
  if (isset(
$consulta)){
  
$condicion="";
  
$consulta.=" and coche.id_tipo_coche=tipo_coche.id_tipo_coche";
  }
  else{
  
$consulta=$condicion."coche.id_tipo_coche=tipo_coche.id_tipo_coche";
  }
  }
  
  if (
$_POST['kms']!="%") {
  if (isset(
$consulta)){
  
$condicion="";
  
$consulta.=" and coche.km_coche<=".$_POST['kms'];
  }
  else{
  
$consulta=$condicion." coche.km_coche<=".$_POST['kms'];
  }
}
  
  if (
$_POST['presupuesto']!="%"){
   if (isset(
$consulta)){
   
$condicion="";
    
$consulta.=" and coche.precio_coche<=".$_POST['presupuesto'];
   }
   else{
    
$consulta=$condicion." coche.precio_coche<=".$_POST['presupuesto'];
   }
   }
  if (
$_POST['antiguedad']!="%"){
   if (isset(
$consulta)){
   
$condicion="";
    
$consulta.=" and coche.anio_coche>=".$_POST['antiguedad'];
   }
   else{
    
$consulta=$condicion." coche.anio_coche>=".$_POST['antiguedad'];
   }
   }
  if (
$_POST['combustible']!="%"){
     if (isset(
$consulta)){
     
$condicion="";
      
$consulta.=" and coche.gasolina_coche = ".$_POST['combustible'];
  }
  else{
  
$consulta=$condicion." coche.gasolina_coche = ".$_POST['combustible'];
  }
  }
  if (
$_POST['marca']=="%"||$_POST['modelo']==""&&$_POST['combustible']=="%"&&$_POST['tipo']=="%"&&$_POST['kms']=="%"&&$_POST['presupuesto']!="%"&&$_POST['antiguedad']=="%"&&$_POST['combustible']=="%"){
  
  echo 
"no ha seleccionado nada";
  
$condicion="";
  
  }
$sql="SELECT * FROM marca, tipo_coche, modelo, coche $condicion $consulta";
$consulta_SQL=$sql;
mysql_select_db($database_automoviles$automoviles);
$query_busc_coche $consulta_SQL
$busc_coche mysql_query($query_busc_coche$automoviles) or die(mysql_error());
$row_busc_coche mysql_fetch_assoc($busc_coche);
$totalRows_busc_coche mysql_num_rows($busc_coche);


 do {
echo 
"id coche: ".$row_busc_coche['id_coche']."<br>"
echo 
"Marca: ".$row_busc_coche['nombre_marca']."<br>"
echo 
"modelo: ".$row_busc_coche['nombre_modelo']."<br>"
echo 
"tipo coche: ".$row_busc_coche['nombre_tipo_coche']."<br>"
echo 
"km:".$row_busc_coche['km_coche']."<br>";
echo 
"precio:"$row_busc_coche['precio_coche']."<br>";
echo 
"Año del vehiculo:".$row_busc_coche['anio_coche']."<br>";
echo 
"Combustible: "$row_busc_coche['gasolina_coche']."<br>";
echo 
"Tipo de coche:"$row_busc_coche['id_tipo_coche']."<br>";

 } while (
$row_busc_coche mysql_fetch_assoc($busc_coche)); ?> 
Quiza me este complicando la vida pero he llegado a un punto que no se ni como me llamo
Gracias
__________________
Hay tanto que aprender y tan poco tiempo

Última edición por Torus; 21/11/2004 a las 04:44
  #2 (permalink)  
Antiguo 21/11/2004, 08:13
Avatar de Parzival  
Fecha de Ingreso: junio-2004
Ubicación: Vive en el foro
Mensajes: 190
Antigüedad: 13 años, 6 meses
Puntos: 2
No puedes usar 'comillas' si la igualdad es entre valores numéricos.

"WHERE coche.id_modelo = '20' AND modelo.id_modelo = '7' AND mar"

En todo caso sería: WHERE coche.id_modelo LIKE '20' AND modelo.id_modelo LIKE '7' AND mar <- Si los valores son cadenas de texto

o: WHERE coche.id_modelo = 20 AND modelo.id_modelo = 7 AND mar <- Si los valores son numéricos (deberías usar esta forma)


No me he dedicado a ver todo el código, pero en principio es lo q veo en el resultado final del query. Prueba a ver como te he dicho.

PD: el error está en esta línea:

$consulta=$condicion."coche.id_modelo = '".$_POST['modelo']."' AND modelo.id_modelo = '".$_POST['marca']."' AND marca.id_marca = '".$_POST['marca']."'";
  #3 (permalink)  
Antiguo 21/11/2004, 12:08
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 15 años, 11 meses
Puntos: 0
Antes de nada gracias por responder Parzival, pero....si quito las comilla sigue dando error.

$consulta=$condicion."coche.id_modelo = ".$_POST['modelo']." AND modelo.id_modelo = ".$_POST['marca']." AND marca.id_marca = ".$_POST['marca'];
Saludos
__________________
Hay tanto que aprender y tan poco tiempo
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 19:03.