Foros del Web » Programando para Internet » PHP »

Busqueda anidada mysql

Estas en el tema de Busqueda anidada mysql en el foro de PHP en Foros del Web. Estimados Consulto por lo siguiente. Tengo un buscador de productos el cual al ingresar una palabra clave, el mismo busca en el campo "descripcion" de ...
  #1 (permalink)  
Antiguo 16/06/2011, 20:43
 
Fecha de Ingreso: julio-2010
Mensajes: 59
Antigüedad: 14 años, 4 meses
Puntos: 0
Busqueda anidada mysql

Estimados

Consulto por lo siguiente. Tengo un buscador de productos el cual al ingresar una palabra clave, el mismo busca en el campo "descripcion" de la tabla "productos" que items de la tabla coinciden. Ahora en el buscador quiero agregarle los precios de los productos los cuales los tengo en una segunda tabla llamada "precio"(muy original el nombre) con el cual atraves del campo "codigo" de la tabla productos "productos" deberia buscar su identicon en el campo "codigo" de la tabla "precio" y de esa forma agregar el precio a el producto encontrado.El codigo que utilizo es el siguiente
Código PHP:
Ver original
  1. <?php global $columna;
  2.  
  3. $columna = 0;
  4.  
  5.  
  6.  
  7. $buscar = $_POST['T1'];
  8.  
  9.  
  10.  
  11. if (!isset($buscar)){
  12.  
  13.       echo "Debe especificar una cadena a buscar";
  14.  
  15.       echo "</html></body> \n";
  16.  
  17.       exit;
  18.  
  19. }
  20.  
  21. $link = mysql_connect("localhost","usuario","contraseña");
  22.  
  23. mysql_select_db("base", $link);
  24.  
  25. $result = mysql_query("SELECT * FROM productos WHERE descripcion LIKE '%$buscar%' ORDER BY nombre", $link);
  26.  
  27. if ($row = mysql_fetch_array($result)){
  28.  
  29.       echo "<table width='780' border = '0'cellpadding='0' cellspacing='5'></tr> \n";
  30.  
  31. //Mostramos los nombres de las tablas
  32.  
  33.  
  34.  
  35. do {
  36.  
  37.  
  38.  
  39.  
  40.  
  41.             echo "<td><table border = '0'><form method='POST' action='mostrar.php'>  \n";
  42.  
  43.             echo "<tr><td><input type = 'hidden' name='T1' value = '".$row["id"]."'></td></tr> \n";
  44.  
  45.             echo "<tr><td><img src='".$row["fotochica"]."' border='1' alt='1'cellpadding='1' cellspacing='1'></td> \n";            
  46.            
  47.             echo "<td><center><b><h4>".$row["Nombre"]."</h4></b></center> \n";
  48.  
  49. //            echo "<td>".$row["codigo"]."</td> \n";
  50.  
  51.             echo "<form method='post' action='mostrar.php'>
  52.         <input type = 'hidden' name='T1'    value = '".$row["id"]."'>
  53.  
  54. <a href='mostrar.php?T1=".$row["id"]."'><img alt='verproducto' src='verproducto.jpg'></a>
  55.  
  56.  
  57.  
  58.  
  59. </form>";            
  60.  
  61.             echo "</form></table></td> \n";
  62.  
  63. $columna = $columna + 1;    
  64.  
  65.  
  66.  
  67. if($columna == 2){
  68.  
  69.    echo '</tr><tr>';
  70.  
  71.  $columna = 0;  
  72.  
  73. }  
  74.  
  75.  
  76.  
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83. } while ($row = mysql_fetch_array($result));
  84.  
  85.  
  86.  
  87.  
  88.  
  89.             echo "</td></tr></table> \n";
  90.  
  91. } else {
  92.  
  93. echo "No se ha encontrado el producto que usted desea, es posible que el mismo aun no se encuentre en la base de datos, pruebe con otra palabra clave o comuniquese con nuestros vendedores por el 2487 66 65.";
  94.  
  95. }
  96.  
  97. ?>

Si me dan una mano estaria muy agradecido, ya que no me da la imaginacion ni el conocimiento para arreglarlo.
Muchas gracias
  #2 (permalink)  
Antiguo 16/06/2011, 21:30
 
Fecha de Ingreso: septiembre-2009
Ubicación: Managua
Mensajes: 128
Antigüedad: 15 años, 2 meses
Puntos: 5
Respuesta: Busqueda anidada mysql

Hola Pablo

Es cuestion de solo modificar tu consulta sql men.

Tenes que agregar la otra tabla a tu consulta. Mas o menos asi quedaria tu query:

$result = mysql_query("SELECT precio.idproducto, precio.precio, producto.* FROM productos, precio WHERE descripcion LIKE '%$buscar%' AND precio.idproducto = producto.idproducto ORDER BY nombre", $link);

Asi obtendrias el precio luego solo haces el filtro

echo "<tr><td><img src='".$row["precio"]."' border='1' alt='1'cellpadding='1' cellspacing='1'></td> \n";

Saludos. Cualquier problema a la orden :)
  #3 (permalink)  
Antiguo 17/06/2011, 04:24
 
Fecha de Ingreso: julio-2010
Mensajes: 59
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Busqueda anidada mysql

Muchas gracias por tu respuesta, la estoy tratando de entender ya que creo que mezclaste unos campos. La tabla productos tiene el campo id, descripcion y codigo, que son los que nos interesa en esta busqueda y la tabla precio tiene el campo codigo y que es el unico que nos interesaria en este caso. Si puedes revisarlo denuevo estaria muy agradecido.
  #4 (permalink)  
Antiguo 17/06/2011, 06:59
 
Fecha de Ingreso: julio-2010
Mensajes: 59
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Busqueda anidada mysql

Ya lo resolvi el codigo seria el siguiente
Código HTML:
Ver original
  1. $result = mysql_query("SELECT * FROM productos INNER JOIN precio ON productos.codigo = precio.precio WHERE descripcion LIKE '%$buscar%' ORDER BY nombre",
  2.  
  3. $link);

Muchas gracias equality_211085 tu codigo me ayudo a razonarlo y poder resolverlo, te van unos puntos de karma como agradecimiento.

Etiquetas: mysql
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 22:20.