Foros del Web » Programando para Internet » PHP »

consulta múltiple por formulario

Estas en el tema de consulta múltiple por formulario en el foro de PHP en Foros del Web. Tengo un formulario desde el cual un usuario puede marcar varias opciones (marca, modelo, desde el año hasta el año, desde precio hasta precio y ...
  #1 (permalink)  
Antiguo 01/05/2011, 06:58
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Pregunta consulta múltiple por formulario

Tengo un formulario desde el cual un usuario puede marcar varias opciones (marca, modelo, desde el año hasta el año, desde precio hasta precio y una tabla donde según la consulta aparece el resultado la foto del coche, la marca, el modelo y se enlaza a una url, pero cuando se carga el buscador al cambiar cualquiera de las opciones no me funciona bien. Lo que quiero conseguir es que cuando el usuario cambie alguna de las funciones se busque en mysql según la nueva opción con respecto al resto de las opciones, p. ejemplo, en la marca de coches tengo una opción que muestre todos los coches x marca y modelo y que si el usuario elige una marca determinada, un modelo y un rango de precios entre - hasta lo muestre según esta selección, no se si me explico.., cuando hago la consulta no me da error, pero tampoco muestra ningún resultado... , les pongo el código a ver si me pueden ayudar, muchas gracias anticipadas ...

Conexión DB ---

datos elegidos desde el formulario....

$marca=$_POST['marca'];
$modelo=$_POST['modelo'];
$ciudad=$_POST['ciudad'];
$precio_desde=$_POST['precio_desde'];
$precio_hasta=$_POST['precio_hasta'];
$year_desde=$_POST[‘year_desde'];
$year_hasta=$_POST['year_hasta'];

CONSULTA MYSQL..

$query="SELECT coche.marca, coche.modelo, coche.year_desde, coche.year_hasta, coche.imagen, coche.enlace, ciudad.ciudad, tarifas.precio_desde, tarifas.precio_hasta,
FROM coche, ciudad, tarifas
WHERE coche.ciudad_idciudad=ciudad.idciudad
AND coche.precio_idprecio=precio.idprecio
AND coche.year_idyear=coche.idyear
AND coche.tarifas_idtarifas=tarifas.idtarifas
AND coche.marca='$marca'
AND coche.modelo='$modelo'
AND ciudad.ciudad='$ciudad'
AND tarifas.precio_desde= '$precio_desde'
AND tarifas.precio_hasta= '$precio_hasta'
AND coche.year_desde='$year_desde'
AND coche.year_hasta='$year_hasta'
ORDER BY ciudad ASC ;
";

$result=mysql_query($query,$conn);
if (!$result) {
echo("Error en la query: ".mysql_error());
mysql_close($conn);
exit;
}
?>

TABLA DONDE SE MUESTRAN LOS DATOS...

<table border="0" cellpadding="0" cellspacing="20">
<tr>

<?
$columnes = 5;
for($i=1;$row=mysql_fetch_array($result);$i++){
$resto = ($i % $columnes);
if ($resto == 1) {

?>


<?php
}
?>
<td align="center" width="170" height="300" >

<table border="0" cellpadding="0" cellspacing="0">


<tr>
<td>

<div id"wrapper2">

<a href="<? echo ($row['enlace']); ?>"> <div class="imagen"> <img src="<? echo ($row['imagen']); ?>"/></div><div class="fd1"><div class="marca"><? echo ($row['marca']); ?></div><div class="modelo"><? echo ($row['modelo']); ?>
</div></div></a>
</div>
</td>
</tr>
<tr>
<td height="7">&nbsp;</td>
</tr>
</table>

</td>
<?php if ($resto == 0) { ?>
</tr>

<?php }
}

if ($resto <> 0) {
$ajust = $columnes - $resto;
for ($j = 2; $j < $ajust; $j++) {
?>
<tr>
<td>&nbsp;</td>
<?php } ?>
</tr>
<?php
}


?>
</table>
  #2 (permalink)  
Antiguo 01/05/2011, 09:27
 
Fecha de Ingreso: abril-2006
Ubicación: Bogotá
Mensajes: 251
Antigüedad: 18 años
Puntos: 14
Respuesta: consulta múltiple por formulario

Hola,

Mira tu consulta, estas dejando todos los parametros del WHERE con AND, es decir que si (por ejemplo), yo no lleno el campo de fecha va a poner AND fecha = '', y así con los demás campos porque no son excluyentes uno del otro.

Lo que debes hacer es primero evaluar qué variables de las que recibes(en este caso vía $_POST) tienen alguna información y completar la consulta, algo como esto:

Código PHP:
if(!empty( $_POST['marca'] )) //Si no esta vacía
{
   
$complemento .= " AND coche.marca = '{$_POST[',marca']}'";
}
if( !empty(
$_POST['modelo']))
{
   
$complemento .= " AND coche.modelo = '{$_POST['modelo']}'";
}
..... 

Y así vas a concatenar la sentencia final que luego agregaras a la query simplemente con:
Código PHP:
$query "SELECT ...... FROM ..... WHERE coche.ciudad ... $complemento"
Con esto logras que sólo a la consulta agregues la información que efectivamente el usuario completo en el formulario anterior.

Espero te sirva.
  #3 (permalink)  
Antiguo 01/05/2011, 16:14
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: consulta múltiple por formulario

Hola delta132, no es exactamente esto, pues el formulario recoge los datos desde un select, por lo que siempre va ha tener una opción marcada y cada vez que el usuario elige algo se envía el formulario con un onChange, lo que quiero conseguir es que cuando marque en coches ford pues salgan todos los ford y si además marca fiesta salgan todos los fiesta y si marca un modelo que no existe pues que conteste con un "opción no disponible o algo así...", después que pase lo mismo con el año, que se puedan elegir desde tal año a tal otro y con el precio igual y si no existe entre dichos rangos pues que devuelva lo de antes "opción no disponible elija otra opción...", gracias de todos modos
  #4 (permalink)  
Antiguo 01/05/2011, 16:14
Avatar de vcarr  
Fecha de Ingreso: marzo-2011
Mensajes: 29
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: consulta múltiple por formulario

Hola delta132, no es exactamente esto, pues el formulario recoge los datos desde un select, por lo que siempre va ha tener una opción marcada y cada vez que el usuario elige algo se envía el formulario con un onChange, lo que quiero conseguir es que cuando marque en coches ford pues salgan todos los ford y si además marca fiesta salgan todos los fiesta y si marca un modelo que no existe pues que conteste con un "opción no disponible o algo así...", después que pase lo mismo con el año, que se puedan elegir desde tal año a tal otro y con el precio igual y si no existe entre dichos rangos pues que devuelva lo de antes "opción no disponible elija otra opción...", gracias de todos modos

Última edición por vcarr; 01/05/2011 a las 16:47

Etiquetas: múltiple, formulario
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 12:35.