Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Como hacer buscador en mysql

Estas en el tema de Como hacer buscador en mysql en el foro de Bases de Datos General en Foros del Web. Hola: Estoy intentando hacer un buscador con multiples opciones. Buscar el nombre de una pelicula a la vez que en su descripcion aparezca una palabra, ...
  #1 (permalink)  
Antiguo 30/06/2005, 07:07
 
Fecha de Ingreso: junio-2005
Mensajes: 30
Antigüedad: 18 años, 10 meses
Puntos: 0
Como hacer buscador en mysql

Hola: Estoy intentando hacer un buscador con multiples opciones. Buscar el nombre de una pelicula a la vez que en su descripcion aparezca una palabra, y así hasta 7 campos distintos.

He conseguido hacer un buscador pero al realizar la busqueda me salen repetidamente los campos, Ej busco matrix i me saca 8 veces el mismo campo. No se que hacer

Aqui dejo el codigo por si alguien me puede ayudar, Gracias


"SELECT Comun.id_comun, Comun.Nombre as programa, Comun.Fotografia, Comun.Valoracion, Comun.Tipo, Comun.Resumen, Comun.Comentario, Comun.Valoracion, Comun_Pelicula.id_comun, r_cine_genero.id_comun, r_cine_genero.id_genero_cine, r_cine_director.id_comun, r_cine_director.id_director, r_cine_interprete.id_interprete, r_cine_interprete.id_comun, r_cine_guionista.id_comun, r_cine_guionista.id_guionista, r_tv_cadena.id_comun FROM Comun, Comun_Pelicula, r_cine_genero, r_cine_director, r_cine_interprete, r_cine_guionista, r_tv_cadena
WHERE (Comun.Nombre LIKE '%$busqueda%')&&(Comun.Valoracion LIKE '%$valoracion%')&&(Comun.Tipo LIKE '%$categoria%')&&(Comun.id_comun=r_tv_cadena.id_co mun)&&(Comun.Resumen LIKE '%$resumen%')&&(Comun.Comentario LIKE '%$comentario%')&&(Comun.id_comun=Comun_Pelicula.i d_comun)&&(Comun_Pelicula.texto_cineforum LIKE '%$comentario_cineforum%')&&(Comun.id_comun=r_cine _genero.id_comun)&&(r_cine_genero.id_genero_cine LIKE '%$genero%') &&(Comun.id_comun=r_cine_director.id_comun)&&(r_ci ne_director.id_director LIKE '%$director%') &&(Comun.id_comun=r_cine_interprete.id_comun)&&(r_ cine_interprete.id_interprete LIKE '%$interprete%')&&(Comun.id_comun=r_cine_guionista .id_comun)&&(r_cine_guionista.id_guionista LIKE '%$guionista%')"
;
  #2 (permalink)  
Antiguo 30/06/2005, 10:11
 
Fecha de Ingreso: junio-2005
Mensajes: 63
Antigüedad: 18 años, 10 meses
Puntos: 0
si vas a hacer consultas con varias tablas debes hacer un join
Código:
select blah blah from comun 
inner join comun_pelicula on comun.id_comun=comun_pelicula.id_comun 
inner join r_cine_genero on comun.id_comun=r_cine_genero.id_comun
inner join etcetera
where blah
  #3 (permalink)  
Antiguo 01/07/2005, 05:24
 
Fecha de Ingreso: junio-2005
Mensajes: 30
Antigüedad: 18 años, 10 meses
Puntos: 0
Me han recomendado utilizar left join, alguien me puede explicar como se hace?
  #4 (permalink)  
Antiguo 01/07/2005, 08:47
 
Fecha de Ingreso: junio-2005
Mensajes: 63
Antigüedad: 18 años, 10 meses
Puntos: 0
solo cambia inner por left
segun tengo entendido la diferencia es que si usas left join primero saca todos los de la tabla de la izquierda y luego busca su correspondiente en la de la derecha y el inner saca todos los de la derecha e izquierda tengan o no tengan correspondiente en la orta tabla(el campo devuelve NULL si no hay correspondiente)
  #5 (permalink)  
Antiguo 01/07/2005, 10:37
 
Fecha de Ingreso: mayo-2005
Mensajes: 15
Antigüedad: 19 años
Puntos: 0
Hola
yo creo que puedes hacerlo con join o sin join

1. utiliando join

a. con inner join. si utilias inner join te muestra las coincidencias entre ambas tablas
b. con left join. muestra coincidencias y ademas las filas de la tabla de la izqda que no tienen coincidencias en la derecha
c. con right join. al contrario que inner join

2. sin utilizar join. en la clausula from al especificar varias tabla se obtiene como resultado lo que se llama un producto carteriano, mezclar todas las filas de una tabla con cada fila de la otra (u otras si existieran) para evitar registros no deseados debes especificar las condiciones de coincidencia ademas de las de busqueda.

espero te sea de utilidad
  #6 (permalink)  
Antiguo 05/07/2005, 03:10
 
Fecha de Ingreso: junio-2005
Mensajes: 30
Antigüedad: 18 años, 10 meses
Puntos: 0
Me han comentado este sistema:

cuando el usuario pulse el botón para buscar compruebas qué campos están cubiertos y en función de ello creas una consulta u otra:

$consulta="SELECT * FROM tabla WHERE";

if ($_POST['campo1']!="") $consulta.=" campo1 LIKE '".$_POST['campo1']."%' and ";

if ($_POST['campo2']!="") $consulta.=" campo2 LIKE '".$_POST['campo2']."%' ";

[...]


Es una forma nueva de programar y no acabo de entender muy bien su fundamento. me podriais dar un ejemplo con algunos de mis datos reales y yo ya seguire con el resto?

por ejemplo:
Cogo informacion de un campo del formulario a traves de:
HTTP_GET_VARS['general']
HTTP_GET_VARS['director'] --->este me lo pueden enviar vacio o no

la sentencia de busqueda actual que tengo es:
$query_hoytv = "SELECT Comun.id_comun, Comun.Nombre, r_cine_director.id_comun, r_cine_director.id_director, Director.id_director, Director.Nombre
FROM Comun, r_cine_director, Director
WHERE (Comun.Nombre LIKE '%$busqueda%')&&(Comun.id_comun=r_cine_director.id _comun)&&(r_cine_director.id_director=Director.id_ director) && (Director.Nombre LIKE '%$director%')";
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 18:46.