Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] mostrar campos de varias tablas

Estas en el tema de mostrar campos de varias tablas en el foro de PHP en Foros del Web. Muy buenas , tengo un problema: necesito mostrar en pantalla campos de varias tablas.El usuario buscara una palabra , si es un numero mostrara el ...
  #1 (permalink)  
Antiguo 02/09/2013, 09:42
 
Fecha de Ingreso: agosto-2013
Mensajes: 40
Antigüedad: 10 años, 8 meses
Puntos: 0
Busqueda mostrar campos de varias tablas

Muy buenas , tengo un problema: necesito mostrar en pantalla campos de varias tablas.El usuario buscara una palabra , si es un numero mostrara el codigo del producto
y si es una palabra deberá mostrar el nombre del producto o la categoria del mismo
Las tablas son las siguientes:

tabla categorias:
id_categorias int(11)
catnombre varchar(15)
catdescripcion longtext

tabla productos:
ProductID int(11)
pronombre varchar(40)
id_categorias int(11)
cantidad varchar(20)
proprecio double
proexistencia smallint(6)
proobservaciones varchar(50)
procodigo int(6)

Asi se muestra en pantalla:
http://subefotos.com/ver/?975c602829ab18ff90b9dfcd3820bddco.jpg

Codigo PHP:
http://codepad.org/A2L8Mt31
Código:


Código PHP:
Ver original
  1. <?php
  2. include("conexion.php");
  3. error_reporting(E_ALL & ~E_NOTICE);
  4. //filtro
  5. //si pulso el boton buscar y el cuadro busqueda contiene una palabra hacer...
  6.  
  7.  
  8. if ($_REQUEST["btnBuscar"] !="" && $_REQUEST["busqueda"]!="")
  9. {
  10.     if (is_numeric($_REQUEST["busqueda"] ))
  11.         $filtro=" and procodigo = ".$_REQUEST["busqueda"];
  12.     else
  13.         $filtro=" and (pronombre like '% ".$_REQUEST["busqueda"]." %' or catnombre like '% ".$_REQUEST["busqueda"]." %')";
  14. }
  15. else
  16. {
  17.     $filtro ="";
  18.     $mensaje = "<font color ='red'> Por favor escriba algo en el cuadro de texto antes de realizar la busqueda  </font> ";
  19. }
  20. //fin filtro
  21.  
  22. $rst_productos = mysql_query (" SELECT * FROM productos,categorias WHERE procategoria=catcodigo $filtro ; ", $conexion) or die(mysql_error());
  23. $num_registros=mysql_num_rows($rst_productos);
  24.  
  25. //informa el numero de registros encontrados
  26. if ($num_registros == 0)
  27. {
  28.    
  29.     if ($_REQUEST["busqueda"] != "")    //estamos buscando algo
  30.         $mensaje = "no se encontraron registros con la busqueda: " .$_REQUEST["busqueda"]." <a href='productos.php'> Ver todos </a> ";
  31.     else    //no estamos buscando nada
  32.         $mensaje = "no se han encontrado productos en la base de datos ";
  33. }
  34. else
  35. {
  36.     if ($_REQUEST["busqueda"] != "")    //estamos buscando algo
  37.         $mensaje = "se encontraron $num_registros registros con la busqueda: " .$_REQUEST["busqueda"]." <a href='productos.php'> Ver todos </a>";
  38.     else    //no estamos buscando nada
  39.         $mensaje = "Mostrando $num_registros productos en la base de datos ";      
  40. }
  41.  
  42.  
  43. $registros = 20;
  44. if(isset($_REQUEST['num']))
  45. {
  46.     $pagina = $_GET['num'];
  47. }
  48. else
  49. {
  50.     $pagina = 1;
  51. }
  52.  
  53. if (is_numeric($pagina))
  54.     $inicio = (($pagina -1) * $registros);
  55. else
  56.     $inicio = 0;   
  57. $rst_productos = mysql_query (" SELECT * FROM productos,categorias WHERE procategoria=catcodigo $filtro  LIMIT $inicio,$registros;", $conexion) or die(mysql_error());
  58. $paginas = ceil ($num_registros / $registros);
  59.        
  60.  
  61. ?>
  62. <a href="productonuevo.php">Nuevo Producto</a>
  63. <form id="form1" name="form1" method="get" action="productos.php">
  64.     Buscar:
  65.     <input name="busqueda" type="text" id="busqueda" value="<?php echo $_GET["busqueda"]; ?>" />
  66.     <input type="submit" name="btnBuscar" id="btnBuscar" value="Buscar" />
  67. </form>
  68.    
  69. <?php
  70. echo $mensaje ;
  71. ?>  
  72.  
  73. <table width="957" border="1">
  74.   <tr bgcolor="#FF9900">
  75.     <td width="68"><strong>Codigo</strong></td>
  76.     <td width="201"><strong>Nombre producto</strong></td>
  77.     <td width="88"><strong>Precio</strong></td>
  78.     <td width="69"><strong>Existencia</strong></td>
  79.     <td width="66"><strong>Categoria</strong></td>
  80.     <td width="295"><strong>Observaciones</strong></td>
  81.     <td width="66"><strong>Modificar</strong></td>
  82.     <td width="52"><strong>Eliminar</strong></td>
  83.   </tr>
  84.  
  85. <?php
  86.     while ($fila =mysql_fetch_array($rst_productos))
  87.     {
  88. ?>
  89.   <tr>
  90.     <td> <?php echo $fila["procodigo"]; ?></td>
  91.     <td><?php echo $fila["pronombre"]; ?></td>
  92.     <td><?php echo $fila["proprecio"]; ?></td>
  93.     <td><?php echo $fila["proexistencia"]; ?></td>
  94.     <td><?php echo $fila["catnombre"]; ?></td>
  95.     <td><?php echo $fila["proobservaciones"]; ?></td>
  96.     <td><a href="producto_modificar.php?cod=<?php echo $fila["procodigo"]; ?>">Modificar</a></td>
  97.     <td><a href="producto_eliminar_confirmar.php?cod=<?php echo $fila["procodigo"]; ?>">Eliminar</a></td>
  98.   </tr>
  99.  
  100. <?php
  101.     }
  102. ?>
  103. </table>
  104.  
  105. <?php
  106. //paginacion
  107. //imprimir anterior
  108. if ($pagina > 1)
  109.     echo "<a href='productos.php?num= ". ($pagina -1) ."&busqueda=". $_REQUEST["busqueda"]."&btnBuscar=Buscar '> Anterior </a> ";
  110.  
  111. //imprimir numero de paginas
  112. if ($paginas>1)
  113. {
  114.     for ($cont = 1; $cont <= $paginas; $cont++)
  115.     {
  116.         if ($cont == $pagina)
  117.             echo $cont. " ";
  118.         else
  119.             echo "<a href='productos.php?num= ". $cont ." &busqueda=". $_REQUEST["busqueda"]."&btnBuscar=Buscar'> $cont </a> ";
  120.     }
  121. }
  122.  
  123. //imprimir siguiente
  124. if ($pagina < $paginas && $paginas>1)
  125.     echo "<a href='productos.php?num= ". ($pagina +1) ."&busqueda=". $_REQUEST["busqueda"]."&btnBuscar=Buscar'> Siguiente </a> ";
  126. //fin paginacion
  127. ?>

PD: soy novato , paciencia
  #2 (permalink)  
Antiguo 02/09/2013, 13:34
 
Fecha de Ingreso: agosto-2013
Mensajes: 40
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: mostrar campos de varias tablas

El problema es q no me muestra los registros cuando ingreso una palabra en la caja de texto pero si cuando ingreso un numero.
He modificado la consulta quedando asi:

Código PHP:
Ver original
  1. $rst_productos = mysql_query (" SELECT * FROM productos INNER JOIN categorias ON productos.id_categorias=categorias.id_categorias  $filtro  ; ", $conexion) or die(mysql_error());

Supongo que esta fallando el else de este bloque:

Código PHP:
Ver original
  1. if ($_GET["btnBuscar"] !="" && $_GET["busqueda"]!="")
  2. {
  3.     if (is_numeric($_GET["busqueda"] ))
  4.         $filtro=" WHERE procodigo = ".$_GET["busqueda"];
  5.     else
  6.         $filtro=" WHERE (pronombre like '% ".$_GET["busqueda"]." %' or catnombre like '% ".$_GET["busqueda"]." %')";
  7. }
  8. else
  9. {
  10.     $filtro ="";
  11.     $mensaje = "<font color ='red'> Por favor escriba algo en el cuadro de texto antes de realizar la busqueda  </font> ";
  12. }

Gracias de antemano
  #3 (permalink)  
Antiguo 02/09/2013, 13:40
Avatar de andinog  
Fecha de Ingreso: febrero-2012
Mensajes: 50
Antigüedad: 12 años, 2 meses
Puntos: 6
Respuesta: mostrar campos de varias tablas

Hola, creo que estas dejando espacios de mas en ciertos lugares:



Código PHP:
Ver original
  1. $filtro=" WHERE (pronombre like '%".$_GET["busqueda"]."%' or catnombre like '%".$_GET["busqueda"]."%')";

Como podes observar borre 4 espacios de mas cerca de los %

saludos
__________________
"El que nada duda nada sabe"
Ser Programador
  #4 (permalink)  
Antiguo 02/09/2013, 15:16
 
Fecha de Ingreso: agosto-2013
Mensajes: 40
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: mostrar campos de varias tablas

Muchas gracias andinog, esa modificación resolvió el problema , ahora solo me resta modificar la paginacion de resultados que por algún motivo no esta funcionando.
Se agradece tu tiempo y la pronta respuesta.
  #5 (permalink)  
Antiguo 03/09/2013, 12:20
Avatar de p414  
Fecha de Ingreso: agosto-2009
Ubicación: casi casi casi... a un lado de la cuna...
Mensajes: 575
Antigüedad: 14 años, 7 meses
Puntos: 44
Respuesta: mostrar campos de varias tablas

muy bien andinog!!! :O
__________________
Desde hace tiempo estoy esperandote... bienvenido mi pequeño Diego!!!

Etiquetas: tablas
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 05:53.