Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/08/2013, 19:22
pepeargenti
 
Fecha de Ingreso: agosto-2013
Mensajes: 40
Antigüedad: 11 años, 7 meses
Puntos: 0
Busqueda mostrar busquedas de varias tablas

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).