Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/07/2008, 07:42
Okiro
 
Fecha de Ingreso: mayo-2005
Mensajes: 51
Antigüedad: 19 años
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?