Foros del Web » Programando para Internet » PHP »

necesito ayuda con formulario de busqueda

Estas en el tema de necesito ayuda con formulario de busqueda en el foro de PHP en Foros del Web. Hola he creado un formulario con varios campos para que haga busqueda de registros en una base de datos. El problema que tengo es que ...
  #1 (permalink)  
Antiguo 21/08/2008, 10:35
 
Fecha de Ingreso: julio-2005
Mensajes: 259
Antigüedad: 19 años, 3 meses
Puntos: 0
necesito ayuda con formulario de busqueda

Hola he creado un formulario con varios campos para que haga busqueda de registros en una base de datos.

El problema que tengo es que si quiero que funcione el buscador debo rellenar todos los campos de busqueda. Si dejo algun campo vacio o sin usar, me da cero resultados la busqueda.

¿como puedo hacer para que la busqueda se haga solo con los campos usados en el formulario?
  #2 (permalink)  
Antiguo 21/08/2008, 10:40
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Exclamación Respuesta: necesito ayuda con formulario de busqueda

Solo comprueba que los datos no estén vacíos, y si lo están no incluirlos en la consulta SQL.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 21/08/2008, 10:43
 
Fecha de Ingreso: julio-2005
Mensajes: 259
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: necesito ayuda con formulario de busqueda

Cita:
Iniciado por David el Grande Ver Mensaje
Solo comprueba que los datos no estén vacíos, y si lo están no incluirlos en la consulta SQL.
Soy novato en esto ¿me puedes poner un ejemplo? gracias
  #4 (permalink)  
Antiguo 21/08/2008, 10:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
De acuerdo Respuesta: necesito ayuda con formulario de busqueda

Si pones el código con que estás haciendo la búsqueda te puedo ayudar a modificarlo .
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 21/08/2008, 10:50
 
Fecha de Ingreso: julio-2005
Mensajes: 259
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: necesito ayuda con formulario de busqueda

Código PHP:
<form name="form2" method="post" action="buscador2.php">

<table width="591"  border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
     <td colspan=4 height="37" width='591' background="imagenes/in14.jpg" class="Estilo1"><div align="left"><span class="Estilo1"><strong><img src="imagenes/n.gif" width="30" height="10">B&Uacute;SQUEDA AVANZADA</strong></span></div> </td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td><div align="left">
                      <select name="inmueble" class="tit3" style="background-color: #ffffff; border:1 solid #000000" >
                      <option>Tipo de inmueble--></option>
                      <option>Apartamento</option>
                      <option>Atico</option>
                      <option>Casa</option>
                      <option>Chalet</option>
                      <option>Estudio</option>
                      <option>Garaje</option>
                      <option>Nave</option>
                      <option>Local</option>
                      <option>Piso</option>
                      <option>Trastero</option>
                      <option>Vivienda playa</option>
                                  </select>
                    </div></td>
    <td colspan="2"><div align="left">
                      <select name="operacion" class="tit3" style="background-color: #ffffff; border:1 solid #000000" >
                      <option>Operacion--></option>
                      <option>Alquiler</option>
                      <option>Venta</option>
                      </select>
                    </div></td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td><div align="left" class="tit3"> Desde <? echo $SITE_moneda?>
                <input type="text" name="precio"  size="8" value="0">
              </div></td>
    <td><div align="left">
                      <select name="plazasgaraje" class="tit3" style="background-color: #ffffff; border:1 solid #000000" >
                      <option>Garaje--></option>
                      <option>Sí</option>
                      <option>No</option>
                      </select>
                    </div></td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td colspan="4">&nbsp;</td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td colspan="4">
      <div align="center"> 
                  <input type="image" value="Buscar" name="B12" src="imagenes/in16.jpg"  >
    </div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td colspan="2">&nbsp;</td>
  </tr>
</table>
  #6 (permalink)  
Antiguo 21/08/2008, 11:05
 
Fecha de Ingreso: julio-2005
Mensajes: 259
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: necesito ayuda con formulario de busqueda

Lo que puse arriba es el formulario de busqueda, ahora el codigo que uso en la busqueda (buscador2.php) no se si es la mejor manera, hasta ahora funciono, excepto que estoy obligado a usar todos los campos de busqueda.

Este es el codigo a modificar:
Código PHP:
 <?  
                          
              
if (!isset($pg))
$pg 0// $pg es la pagina actual
$cantidad10// cantidad de resultados por p&aacute;gina
$inicial $pg $cantidad;
if (
$plazasgaraje == 'Sí')
                    {
$plazasgaraje="1"; }
                    

 
$pegar "SELECT * FROM articulos WHERE inmueble = '$inmueble' AND operacion='$operacion' AND  precio >= $precio AND plazasgaraje = $plazasgaraje  LIMIT $inicial,$cantidad";
$cad mysql_db_query($base_dato,$pegar) or die (mysql_error());


$contar "SELECT * FROM articulos WHERE inmueble = '$inmueble' AND operacion='$operacion'  AND precio >= $precio AND plazasgaraje = $plazasgaraje; 
$contarok= mysql_db_query($base_dato,$contar);
$total_records = mysql_num_rows($contarok);
$pages = intval($total_records / $cantidad);


echo "
<table width="450\"  boder=\"1\" cellpadding=\"3\" cellspacing=\"3\" align='center'>";


while(
$array mysql_fetch_array($cad)) {

................
  #7 (permalink)  
Antiguo 21/08/2008, 11:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Exclamación Respuesta: necesito ayuda con formulario de busqueda

Lo que me extraña es que en tu formulario ninguno de los <option> tienen value, que es el dato que vamos a obtener desde el php.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 21/08/2008, 11:40
 
Fecha de Ingreso: julio-2005
Mensajes: 259
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: necesito ayuda con formulario de busqueda

Cita:
Iniciado por David el Grande Ver Mensaje
Lo que me extraña es que en tu formulario ninguno de los <option> tienen value, que es el dato que vamos a obtener desde el php.
Pues hasta ahora me funciono asi, tomando un valor para cada campo.

¿Como controlo los valores para hacer la busqueda que me decias antes?
  #9 (permalink)  
Antiguo 21/08/2008, 12:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: necesito ayuda con formulario de busqueda

Bueno, sería algo así como esto:
Código PHP:
$consulta "SELECT * FROM articulos WHERE ";
if (
$inmueble != "Tipo de inmueble--") { $consulta .= " inmueble = '$inmueble'"; }
if (
$operacion != "Operacion-->") { $consulta .= " AND operacion = '$operacion'"; }
if (!empty(
$precio)) { $consulta .= " AND precio >= $precio"; }
if (
$plazasgaraje != "Garaje-->") { $consulta .= " AND plazasgaraje = $plazasgaraje"; } 
Luego, solo aplicas la variable $consulta a la base de datos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 21/08/2008, 12:37
 
Fecha de Ingreso: julio-2005
Mensajes: 259
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: necesito ayuda con formulario de busqueda

Cita:
Iniciado por David el Grande Ver Mensaje
Bueno, sería algo así como esto:
Código PHP:
$consulta "SELECT * FROM articulos WHERE ";
if (
$inmueble != "Tipo de inmueble--") { $consulta .= " inmueble = '$inmueble'"; }
if (
$operacion != "Operacion-->") { $consulta .= " AND operacion = '$operacion'"; }
if (!empty(
$precio)) { $consulta .= " AND precio >= $precio"; }
if (
$plazasgaraje != "Garaje-->") { $consulta .= " AND plazasgaraje = $plazasgaraje"; } 
Luego, solo aplicas la variable $consulta a la base de datos.

Muchas gracias lo voy a probar y te comento.
  #11 (permalink)  
Antiguo 21/08/2008, 17:16
 
Fecha de Ingreso: julio-2005
Mensajes: 259
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: necesito ayuda con formulario de busqueda

Estuve probando y al menos debe usarse 2 condiciones. Hasta ahi bien,

Pero a veces me sale errores tipo:

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 'AND ciudad = 'Aguadulce' AND dormitorios >= 2 LIMIT 0,10' at line 1


¿es que no se cumple la condicion y no puede mostrarse nada? no entiendo este mensaje. quizas porque sea obligario seleccionar el inmueble y despues cualquier otra condicion ¿es por el and?
  #12 (permalink)  
Antiguo 22/08/2008, 08:01
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Pregunta Respuesta: necesito ayuda con formulario de busqueda

¿Podrías poner el código de la consulta tal y como lo tienes?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #13 (permalink)  
Antiguo 22/08/2008, 18:20
 
Fecha de Ingreso: julio-2005
Mensajes: 259
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: necesito ayuda con formulario de busqueda

Cita:
Iniciado por David el Grande Ver Mensaje
¿Podrías poner el código de la consulta tal y como lo tienes?
es por el and, que segui tu ejemplo. Si no se toma el primer campo y luego cualquiera del resto da ese error. puse un aviso de que seleccionen primero el primer campo y luego cualquiera de ellos,
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 21:26.