Foros del Web » Programando para Internet » PHP »

ayuda con buscador en php

Estas en el tema de ayuda con buscador en php en el foro de PHP en Foros del Web. Hola a todos, estoy intentando hacer un buscador a traves de selects, pero no he podido por ejemplo que solo se tenga en cuenta una ...
  #1 (permalink)  
Antiguo 03/03/2011, 12:49
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
ayuda con buscador en php

Hola a todos, estoy intentando hacer un buscador a traves de selects, pero no he podido por ejemplo que solo se tenga en cuenta una de las pestañas y no todas

Tengo el archivo buscar.php:

Código PHP:
Ver original
  1. <form name="busqueda" action="resultados.php" method="post">
  2.  
  3. Tipo de inmueble:
  4.  
  5.  <select name="tipo_inmueble" id="tipo_inmueble">
  6.       <option value="">Selecione tipo inmueble</option>
  7.        <?php
  8. $sqltipo_inmueble="select * from tipo_inmueble order by NOM_TIP_INM ";
  9. $tablatipo_inmueble=mysql_query($sqltipo_inmueble);
  10. while($row = mysql_fetch_row($tablatipo_inmueble) )
  11.     {
  12.         echo "<option value='$row[0]'>$row[1]</option>";
  13.                            
  14.  
  15.     }
  16.  
  17. ?>
  18.       </select>
  19.  
  20. Municipio:
  21.  
  22. <select name="municipio" id="municipio">
  23.       <option value="">Selecione el municipio</option>
  24.   <?php
  25. $sql_municipios="select * from municipios order by NOM_MUN ";
  26. $tabla_municipios=mysql_query($sql_municipios);
  27. while($row = mysql_fetch_row($tabla_municipios) )
  28.     {
  29.         echo "<option value='$row[0]'>$row[1]</option>";
  30.                            
  31.  
  32.     }
  33.  
  34. ?>
  35.       </select>
  36.  
  37. Zona de ubicacion:
  38.   <select name="zona" id="zona">
  39.         <option value="">Selecione la zona</option>
  40.   <?php
  41. $sql_zonas="select * from zonas order by NOM_ZON ";
  42. $tabla_zonas=mysql_query($sql_zonas);
  43. while($row = mysql_fetch_row($tabla_zonas) )
  44.     {
  45.         echo "<option value='$row[0]'>$row[1]</option>";
  46.                            
  47.  
  48.     }
  49.  
  50. ?>
  51.       </select>
  52.  
  53. </form>

Y en resultados.php tengo:

Código PHP:
Ver original
  1. <?php
  2.          
  3.           $tipo_inmueble = $_POST['tipo_inmueble'];
  4.     $municipio = $_POST['municipio'];
  5.     $zona = $_POST['zona'];
  6. $bd = mysql_connect ("localhost", "root", "root");
  7.     if ( !$bd )
  8.         die ("Error en la conexion con el DBMS");
  9.    
  10.     $base_datos = "prueba";
  11.     if ( !mysql_select_db ($base_datos, $bd) )
  12.         die ("Error seleccionando la base de datos");
  13.  
  14. $qry = "SELECT i.COD_INM,i.DES_INM, i.VAL_INM, i.ARE_INM, i.NUM_HAB_INM, i.NUM_BAN_INM, i.NUM_GAR_INM, i.EST_SOC_INM, m.NOM_MUN, ti.NOM_TIP_INM, z.NOM_ZON
  15. FROM (
  16. inmuebles i
  17. INNER JOIN municipios m
  18. USING ( COD_MUN )
  19. )
  20. INNER JOIN tipo_inmueble ti
  21. USING ( COD_TIP_INM )
  22. INNER JOIN zonas z
  23. USING ( COD_ZON )
  24. WHERE ti.COD_TIP_INM = ".$tipo_inmueble."
  25. and m.COD_MUN = ".$municipio." and z.COD_ZON = ".$zona."
  26.  
  27. ";
  28.  
  29.  
  30. $resultado = mysql_query ($qry, $bd);
  31.    
  32.     if ( !$resultado )
  33.         die ("Error ejecutando la consulta");
  34.    
  35.     $num_filas = mysql_num_rows($resultado);
  36.  
  37.    
  38.    
  39.     if ($num_filas > 0){       
  40.    
  41.         $fila = mysql_fetch_array($resultado);
  42.        
  43.        
  44.        
  45.         ?>
  46.  
  47. //MAS ADELANTE MUESTRO LOS RESULTADOS

Ahora mi duda es: como hago para que buscador me tome en cuenta solo una de las opciones de buscar.php

Es decir que la persona o busque por Tipo de inmueble o busque por Municipio
o por zona o bien por dos criterios o los tres

Utilice OR en vez de AND pero me genera error en la consulta

Agradezco me puedan colaborar....
  #2 (permalink)  
Antiguo 03/03/2011, 13:14
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: ayuda con buscador en php

Foreros una pregunta, lo hice asi pero me esta trayendo todos los registros

Código PHP:
Ver original
  1. $qry = "SELECT i.COD_INM,i.DES_INM, i.VAL_INM, i.ARE_INM, i.NUM_HAB_INM, i.NUM_BAN_INM, i.NUM_GAR_INM, i.EST_SOC_INM, m.NOM_MUN, ti.NOM_TIP_INM, z.NOM_ZON
  2. FROM (
  3. inmuebles i
  4. INNER JOIN municipios m
  5. USING ( COD_MUN )
  6. )
  7. INNER JOIN tipo_inmueble ti
  8. USING ( COD_TIP_INM )
  9. INNER JOIN zonas z
  10. USING ( COD_ZON )
  11. WHERE ti.COD_TIP_INM like '%" . $tipo_inmueble . "%' or m.COD_MUN like '%" . $municipio . "%' or z.COD_ZON like '%"  . $zona . "%'";

Como debo hacer entonces el LIKE?
  #3 (permalink)  
Antiguo 03/03/2011, 13:24
 
Fecha de Ingreso: mayo-2009
Mensajes: 61
Antigüedad: 15 años
Puntos: 3
Respuesta: ayuda con buscador en php

Tu problema no esta en el like tu problema son los operadores logicos

cambia los or por and
  #4 (permalink)  
Antiguo 03/03/2011, 13:31
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: ayuda con buscador en php

Lo que pasa es que si dejo and, tendria el usuario que escojer obligatoriamente las tres pestañas

lo hice asi:
WHERE ti.COD_TIP_INM = ".$tipo_inmueble."
or m.COD_MUN = ".$municipio." or z.COD_ZON = ".$zona."

";

Efectivamente funciona, solo que si por ejemplo yo escojo Tipo Apartamento y Municipio Buenos Aires

el tambien me trae los de tipo Casa

Como tendria entonces que hacer los OR ?
  #5 (permalink)  
Antiguo 03/03/2011, 14:00
 
Fecha de Ingreso: mayo-2009
Mensajes: 61
Antigüedad: 15 años
Puntos: 3
Respuesta: ayuda con buscador en php

Ok mira como consejo te dijo que no te sierres a las opciones el limite te lo pones tu

tienes que manejar los and, solo que primero prueba que el usuario escoja una cosa u otra

y concatenas las cadenas es decir

si $tipo_inmueble no esta vacio $condicion1=WHERE ti.COD_TIP_INM = ".$tipo_inmueble."
si $municipio no esta vacio $condicion2= and m.COD_MUN = ".$municipio."
si $zona no esta vacio $condicion2=and z.COD_ZON = ".$zona."

tu te encargas de checar la sintaxis puedes variar los signos de = por los like que tenias al inicio y tambien las condiciones si lo cres conveniente
  #6 (permalink)  
Antiguo 03/03/2011, 14:32
 
Fecha de Ingreso: abril-2009
Ubicación: Colombia
Mensajes: 949
Antigüedad: 15 años
Puntos: 27
Respuesta: ayuda con buscador en php

Si, ahora capto la idea, utilizar if dentro del select....(aunque no tengo bien clara la sintaxis)

Muchas gracias.......

Etiquetas: buscadores
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 22:41.