Autor Tema: Buscador PHP en dos tablas  (Leído 1071 veces)

Desconectado adonis

  • PHPerit@
  • *
  • Mensajes: 13
  • Karma: 0
    • Ver Perfil
Buscador PHP en dos tablas
« en: 02 de Febrero de 2008, 05:34:10 am »
Hola tengo un problema :

tengo dos tablas

Categorias
  id_cat
  nombrecat

Producto
  id
  nombre
  detalles
  id_cat

Hasta ahi no hay problema, pero tengo un buscador y quiero que busque todos los productos de la tabla "Producto" y que busque por nombre o detalles y por nombre de la categoria que contiene en id_cat .

Gracias

Comunidad PHPeros

Buscador PHP en dos tablas
« en: 02 de Febrero de 2008, 05:34:10 am »

Desconectado naveda

  • Administrador General
  • PHPero Master
  • *****
  • Mensajes: 2.282
  • Karma: 165
  • Sexo: Masculino
    • Ver Perfil
    • naveda.me
Re: Buscador PHP en dos tablas
« Respuesta #1 en: 02 de Febrero de 2008, 14:40:41 pm »
puedes poner un ejemplo? Para no hablar en vano.. ;)
Por favor, leete las Normas


Desconectado christian martinez

  • PHPerit@
  • *
  • Mensajes: 19
  • Karma: 1
  • Sexo: Masculino
  • <? :P >
    • Ver Perfil
Re: Buscador PHP en dos tablas
« Respuesta #2 en: 02 de Febrero de 2008, 16:35:50 pm »
Pues si te entiendo bien, quieres mostrar los datos de la tabla productos, y no el id de la variable id_cat sino nombrecat. Si este es el caso puedes solucionar tu problema utilizando un join. Por ejemplo supongamos que quieres hacer una búsqueda por el nombre del producto, entonces tu qwery tendría que ser algo como esto:

Código: [Seleccionar]
$qwery= "SELECT p.id 'ID DE PRODUCTO', p.nombre 'NOMBRE DE PRODUCTO', p.detalles 'DETALLES DE PRODUCTO', c.nombrecat 'NOMBRE DE LA CATEGORIA' FROM producto p, categorias c WHERE (p.nombre LIKE  '%$variable_producto%') AND (c.id_cat=p.id_cat)
";

pero, que significa esto??????
Código: [Seleccionar]
SELECT p.id 'ID DE PRODUCTO', p.nombre 'NOMBRE DE PRODUCTO', p.detalles 'DETALLES DE PRODUCTO', c.nombrecat 'NOMBRE DE LA CATEGORIA' bueno, simplemente le decimos a la base de datos que queremos recuperar los campos id, nombre y detalles de la tabla producto, además de que también queremos recuperar el campo nombrecat de la tabla categoria.

Código: [Seleccionar]
FROM producto p, categorias c WHERE (p.nombre LIKE  '%$variable_producto%') AND (c.id_cat=p.id_cat) ahora le indicamo a la BD que estos datos estan en la tabla producto y categorias (p y c son alias que se pueden utilizar siempre que sean definidos despues del nombre de la tabla), lo importante de todo esto es la condición WHERE, en este caso en particular le estamos indicando que compare la variable $variable_producto con el campo nombre de la tabla producto y que los id´s_cat de ambas tablas coincidan para que se muestre el nombre o descripcion en lugar del identificador.

Siento que me estoy extendiendo sin saber realmente si esto es la ayuda que buscas, así que si puedes ser mas específico intentaria ayudarte mas. 

Por cierto administradores, esto que hice es correcto? leí en las reglas que no se puede dar código hecho, aunque también leí que si pongo código debo explicarlo, si lo que hice no es correcto, por favor, eliminenlo.

Salu2 a todos =)
Saludos, desde el País de los Tacos!!!!!!! =)

Desconectado adonis

  • PHPerit@
  • *
  • Mensajes: 13
  • Karma: 0
    • Ver Perfil
Re: Buscador PHP en dos tablas
« Respuesta #3 en: 02 de Febrero de 2008, 20:31:35 pm »
Voy ver el codigo anteiror , pero para aclararlo naveda voy a dar un ejemplo  :o

Tengo mis tablas

Categorias
Código: [Seleccionar]
 
  id_cat    nombrecat
  1           Pastillas
  2           Jarabes
  3           Capsulas
 
Producto

Código: [Seleccionar]

  id  |  nombre | detalles                         | id_cat
  1   |  Pepto   | Jarabe para el estomago.  | 2 
  2   | Panadol  | Dolor de cabeza .            | 1
  3   | Panadol Gripe |  Para gripe              | 1




Por ejemplo tengo un buscador :

 
Código: [Seleccionar]
SELECT * from productos where nombre  LIKE '%{$_POST['palabra']}%' or detalles LIKE '%{$_POST['palabra']}%'
Hasta ahi es todo Ok, pero me gustaria que si escribo pastillas aparesca como resultado Panadol y Panadol Gripe. como dice en el ejemplo

Gracias


« Última modificación: 02 de Febrero de 2008, 20:33:24 pm por adonis »

Desconectado Blackenger

  • PHPer@ Fijo
  • ***
  • Mensajes: 114
  • Karma: 5
    • Ver Perfil
Re: Buscador PHP en dos tablas
« Respuesta #4 en: 09 de Febrero de 2008, 08:40:39 am »
¿Por que no le agregas la una fila llamada categorias a la tabla productor y así te complicas menos?  ???

Saludos.