Estimados expertos en PHP recurro a uds. con el fin de obtener ayuda en mi código fuente. Adjunto base de datos ,codigo fuente y error.
Base de datos:
http://s2.subirimagenes.com/otros/previo/thump_8599600categorias.jpg
http://s2.subirimagenes.com/otros/previo/thump_8599603productos.jpg
Codigo:
Código:
<?php
include("conexion.php");
error_reporting(E_ALL & ~E_NOTICE);
//filtro
//si pulso el boton buscar y el cuadro busqueda contiene una palabra hacer...
if ($_REQUEST["btnBuscar"] !="" && $_REQUEST["busqueda"]!="")
{
if (is_numeric($_REQUEST["busqueda"] ))
$filtro=" and procodigo = ".$_REQUEST["busqueda"];
else
$filtro=" and (pronombre like '% ".$_REQUEST["busqueda"]." %' or catnombre like '% ".$_REQUEST["busqueda"]." %')";
}
else
{
$filtro ="";
$mensaje = "<font color ='red'> Por favor escriba algo en el cuadro de texto antes de realizar la busqueda </font> ";
}
//fin filtro
$rst_productos = mysql_query (" SELECT * FROM productos,categorias WHERE procategoria=catcodigo $filtro ; ", $conexion) or die(mysql_error());
$num_registros=mysql_num_rows($rst_productos);
//informa el numero de registros encontrados
if ($num_registros == 0)
{
if ($_REQUEST["busqueda"] != "") //estamos buscando algo
$mensaje = "no se encontraron registros con la busqueda: " .$_REQUEST["busqueda"]." <a href='productos.php'> Ver todos </a> ";
else //no estamos buscando nada
$mensaje = "no se han encontrado productos en la base de datos ";
}
else
{
if ($_REQUEST["busqueda"] != "") //estamos buscando algo
$mensaje = "se encontraron $num_registros registros con la busqueda: " .$_REQUEST["busqueda"]." <a href='productos.php'> Ver todos </a>";
else //no estamos buscando nada
$mensaje = "Mostrando $num_registros productos en la base de datos ";
}
$registros = 20;
if(isset($_REQUEST['num']))
{
$pagina = $_GET['num'];
}
else
{
$pagina = 1;
}
if (is_numeric($pagina))
$inicio = (($pagina -1) * $registros);
else
$inicio = 0;
$rst_productos = mysql_query (" SELECT * FROM productos,categorias WHERE procategoria=catcodigo $filtro LIMIT $inicio,$registros;", $conexion) or die(mysql_error());
$paginas = ceil ($num_registros / $registros);
?>
<a href="productonuevo.php">Nuevo Producto</a>
<form id="form1" name="form1" method="get" action="productos.php">
Buscar:
<input name="busqueda" type="text" id="busqueda" value="<?php echo $_GET["busqueda"]; ?>" />
<input type="submit" name="btnBuscar" id="btnBuscar" value="Buscar" />
</form>
<?php
echo $mensaje ;
?>
<table width="957" border="1">
<tr bgcolor="#FF9900">
<td width="68"><strong>Codigo</strong></td>
<td width="201"><strong>Nombre producto</strong></td>
<td width="88"><strong>Precio</strong></td>
<td width="69"><strong>Existencia</strong></td>
<td width="66"><strong>Categoria</strong></td>
<td width="295"><strong>Observaciones</strong></td>
<td width="66"><strong>Modificar</strong></td>
<td width="52"><strong>Eliminar</strong></td>
</tr>
<?php
while ($fila =mysql_fetch_array($rst_productos))
{
?>
<tr>
<td> <?php echo $fila["procodigo"]; ?></td>
<td><?php echo $fila["pronombre"]; ?></td>
<td><?php echo $fila["proprecio"]; ?></td>
<td><?php echo $fila["proexistencia"]; ?></td>
<td><?php echo $fila["catnombre"]; ?></td>
<td><?php echo $fila["proobservaciones"]; ?></td>
<td><a href="producto_modificar.php?cod=<?php echo $fila["procodigo"]; ?>">Modificar</a></td>
<td><a href="producto_eliminar_confirmar.php?cod=<?php echo $fila["procodigo"]; ?>">Eliminar</a></td>
</tr>
<?php
}
?>
</table>
<?php
//paginacion
//imprimir anterior
if ($pagina > 1)
echo "<a href='productos.php?num= ". ($pagina -1) ."&busqueda=". $_REQUEST["busqueda"]."&btnBuscar=Buscar '> Anterior </a> ";
//imprimir numero de paginas
if ($paginas>1)
{
for ($cont = 1; $cont <= $paginas; $cont++)
{
if ($cont == $pagina)
echo $cont. " ";
else
echo "<a href='productos.php?num= ". $cont ." &busqueda=". $_REQUEST["busqueda"]."&btnBuscar=Buscar'> $cont </a> ";
}
}
//imprimir siguiente
if ($pagina < $paginas && $paginas>1)
echo "<a href='productos.php?num= ". ($pagina +1) ."&busqueda=". $_REQUEST["busqueda"]."&btnBuscar=Buscar'> Siguiente </a> ";
//fin paginacion
?>
Error:
Al buscar un numero en la caja de texto muestra el codigo del producto pero cuando escribo una palabra deberia mostrarme los productos con ese nombre o el nombre de la categoria de la tabla categorias y por pantalla me muestra: no se encontraron registros con la busqueda.
PD: Soy novato y calculo q el error esta en la variable filtro o en la consulta.
Gracias de antemano, llevo mucho tiempo depurando este codigo.
edito:el campo catcodigo (tabla categorias) se vincula con el campo procategoria (tabla productos).