Foros del Web » Programando para Internet » PHP »

Problema con buscador sencillo

Estas en el tema de Problema con buscador sencillo en el foro de PHP en Foros del Web. Hola amigos. Estoy intentando crear un buscador con tres opciones de busqueda. El resultado de la busqueda partiria de la información que está alojada en ...
  #1 (permalink)  
Antiguo 17/07/2008, 07:42
 
Fecha de Ingreso: mayo-2005
Mensajes: 51
Antigüedad: 18 años, 10 meses
Puntos: 0
Problema con buscador sencillo

Hola amigos.
Estoy intentando crear un buscador con tres opciones de busqueda.
El resultado de la busqueda partiria de la información que está alojada en la base de datos.

la pagina resultado-buscador-empresas.php tiene un juego de registros y he insertado este codigo:

SELECT *
FROM empresas
WHERE nombre LIKE '%$nombre%' OR categoria LIKE '%$categoria%' OR localidad LIKE '%$localidad%'



El codigo sería:

Código PHP:
<?php
$currentPage 
$_SERVER["PHP_SELF"];

$maxRows_verempresas 8;
$pageNum_verempresas 0;
if (isset(
$_GET['pageNum_verempresas'])) {
  
$pageNum_verempresas $_GET['pageNum_verempresas'];
}
$startRow_verempresas $pageNum_verempresas $maxRows_verempresas;

mysql_select_db($database_empresa$empresa);
$query_verempresas "SELECT * FROM empresas WHERE nombre LIKE '%$nombre%' OR categoria LIKE '%$categoria%' OR localidad  LIKE '%$localidad%'";
$query_limit_verempresas sprintf("%s LIMIT %d, %d"$query_verempresas$startRow_verempresas$maxRows_verempresas);
$verempresas mysql_query($query_limit_verempresas$empresa) or die(mysql_error());
$row_verempresas mysql_fetch_assoc($verempresas);

if (isset(
$_GET['totalRows_verempresas'])) {
  
$totalRows_verempresas $_GET['totalRows_verempresas'];
} else {
  
$all_verempresas mysql_query($query_verempresas);
  
$totalRows_verempresas mysql_num_rows($all_verempresas);
}
$totalPages_verempresas ceil($totalRows_verempresas/$maxRows_verempresas)-1;

$queryString_verempresas "";
if (!empty(
$_SERVER['QUERY_STRING'])) {
  
$params explode("&"$_SERVER['QUERY_STRING']);
  
$newParams = array();
  foreach (
$params as $param) {
    if (
stristr($param"pageNum_verempresas") == false && 
        
stristr($param"totalRows_verempresas") == false) {
      
array_push($newParams$param);
    }
  }
  if (
count($newParams) != 0) {
    
$queryString_verempresas "&" htmlentities(implode("&"$newParams));
  }
}
$queryString_verempresas sprintf("&totalRows_verempresas=%d%s"$totalRows_verempresas$queryString_verempresas);
?>
Esta pagina recoge del formulario estas variables para trabajar:

Código PHP:
<?php $nombre=$_POST['nombre']; ?>
<?php $categoria
=$_POST['categoria']; ?>
<?php $localidad
=$_POST['localidad']; ?>
y el codigo sencillo del buscador seria:

<form action="resultado-buscador-empresa.php" method="post" name="formbuscador" id="formbuscador">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="100%"><table width="235" border="0" cellpadding="0" cellspacing="0">
<tr align="left" valign="top">
<td colspan="3"><img src="imagenes/superior-buscador.jpg" width="235" height="50"></td>
</tr>
<tr align="left" valign="top">
<td background="imagenes/derecha-buscador.jpg"><img src="imagenes/derecha-buscador.jpg" width="10" height="121"></td>
<td bgcolor="4589bf"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><span class="labelcell Estilo3">Nombre de la empresa </span><br>
<input name="nombre" type="text" class="combo" id="nombre" size="40"></td>
</tr>
<tr>
<td><span class="labelcell Estilo3">Producto / Actividad </span><br>
<input name="categoria" type="text" class="combo" id="categoria" size="40">
</td>
</tr>
<tr>
<td><span class="labelcell"><span class="Estilo3">Localidad</span><br>
<input name="localidad" type="text" class="combo" id="localidad" size="40">
</span></td>
</tr>
<tr>
<td height="0"><div align="right"> </div></td>
</tr>
<tr>
<td height="1">&nbsp;</td>
</tr>
<tr>
<td><div align="right">
<input name="Submit2" type="submit" class="messagebox" value="Buscar">
</div></td>
</tr>
</table></td>
<td background="imagenes/derecha-buscador.jpg"><img src="imagenes/derecha-buscador.jpg" width="10" height="121"></td>
</tr>
<tr align="left" valign="top">
<td colspan="3"><img src="imagenes/inferior-menu.jpg" width="235" height="15"></td>
</tr>
</table></td>
</tr>
</table>


El problema es que si pongo más de una opción de busqueda, no realiza la busqueda, pero si solo pongo una opción seleccionando buscar por algunas de estas variables, funciona correctamente,...es decir si pongo esto así:

SELECT *
FROM empresas
WHERE nombre LIKE '%$nombre%' OR categoria LIKE '%$categoria%' OR localidad LIKE '%$localidad%'


no rula, pero si hago esto así:

FROM empresas
WHERE nombre LIKE '%$nombre%'[/B]

va bien...
¿que puede pasar?
  #2 (permalink)  
Antiguo 17/07/2008, 08:30
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Respuesta: Problema con buscador sencillo

Mensaje movido al foro de PHP desde Editores Web.

Saludos,
  #3 (permalink)  
Antiguo 17/07/2008, 08:56
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Problema con buscador sencillo

Holas Okiro

Yo creo que la sentencia de búsqueda original está buena.
La verdad no veo error en el código, al menos en lo que alcanzo a leer ahora.

Para asegurarte que la sentencia sql esté super correcta, yo te sugiero que la armes a partir de los valores de búsqueda recibidos. Esto es:

Código PHP:
<?
//...

$condiciones_verempresas = array();

if (!empty(
$nombre))
{  
$condiciones_verempresas[] = " nombre LIKE '%$nombre%' ";  }

if (!empty(
$categoria))
{  
$condiciones_verempresas[] = " categoria LIKE '%$categoria%' ";  }

if (!empty(
$localidad))
{  
$condiciones_verempresas[] = " localidad  LIKE '%$localidad%' ";  }

if (
count($condiciones_verempresas) > 1)
{  
$condiciones join($condiciones_verempresas" OR ");  }
else
{  
$condiciones $condiciones_verempresas[0];  }

if (!empty(
$condiciones))
{  
$query_verempresas "SELECT * FROM empresas WHERE ".$condiciones;  }
else
{  print
"No ha ingresado ningun parametro de busqueda...";  }

//...
?>
No sé si se entiende. Es algo engorroso de hacer, pero con eso o algo parecido, te aseguras que tu query quede bien formada, y lo mejor, hecha a la medida de tu búsqueda...
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
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 17:06.