Foros del Web » Programando para Internet » PHP »

Buscar en todos los campos

Estas en el tema de Buscar en todos los campos en el foro de PHP en Foros del Web. Buenas: Estoy creando un bucador que busca en varias tablas. Dependiendo donde se quiera buscar. uso esto: Código PHP: // si se busca en muscia if( $where == "musica" ) { ...
  #1 (permalink)  
Antiguo 22/03/2003, 14:09
Avatar de kaslierx  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 190
Antigüedad: 14 años, 10 meses
Puntos: 0
Buscar en todos los campos

Buenas:

Estoy creando un bucador que busca en varias tablas. Dependiendo donde se quiera buscar.

uso esto:
Código PHP:

// si se busca en muscia
if($where=="musica") {
$table "musica";
}

// Si se busca en links
if($where=="links") {
$table "links";
}

OpenBDD();
mysql_query("SELECT * FROM $table where campo LIKE '% $word %' "); 
El problema que tengo es que en cada tabla tengo unos campos distintos, entonces necesito que busque en todos los campos, pero no puedo hacerlo poniendo todos los campos en el query.

Es decir lo que quiero evitar e esto:
Código PHP:
mysql_query("SELECT * FROM $table WHERE campo1 LIKE '".$texto."' OR campo2 LIKE '".$texto."' OR..."); 
¿Como lo hago? ¿No hay ninguna funcion que busque en todos los campos de la tabla?

Gracias
  #2 (permalink)  
Antiguo 22/03/2003, 14:15
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 16 años, 1 mes
Puntos: 2
NO pongas "where campo"

Código PHP:
mysql_query("SELECT * FROM $table LIKE '%$word%' "); 
a menos que necesites buscar en algun determinado campo

___
JmN
  #3 (permalink)  
Antiguo 22/03/2003, 14:25
Avatar de kaslierx  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 190
Antigüedad: 14 años, 10 meses
Puntos: 0
He probado como me dijistes y me fa esto:

[cita]
Ocurrió un error al ejecutar el query "SELECT COUNT(*) FROM noticias LIKE '%one%' AND LIKE '%two%' ".
La base dijo : You have an error in your SQL syntax near 'LIKE '%one%' AND LIKE '%two%' ' at line 1.
[/cita]
  #4 (permalink)  
Antiguo 22/03/2003, 14:32
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 16 años, 1 mes
Puntos: 2
Te conteste cuaquiera tenes que usar el "where campo"

___
JmN

Última edición por jmn2k1; 22/03/2003 a las 14:39
  #5 (permalink)  
Antiguo 22/03/2003, 14:43
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Mira, yo personalmente nunca he oido eso de hacer que busque en todos los campos. Creo que tendras que crear una consulta especifica para tabla y escogerla en funcion de la variable $table. Aun asi, si tienes curiosidad, revisa el manual en www.mysql.com

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 22/03/2003, 16:29
Avatar de kaslierx  
Fecha de Ingreso: febrero-2003
Ubicación: Valencia
Mensajes: 190
Antigüedad: 14 años, 10 meses
Puntos: 0
Estoy usando esto:

SELECT COUNT(*) FROM noticias WHERE title LIKE '%one%' AND LIKE '%two%' OR subtitle LIKE '%one%' AND LIKE '%two%' OR body LIKE '%one%' AND LIKE '%two%'

Pero me da este error:
You have an error in your SQL syntax near 'LIKE '%two%' OR subtitle LIKE '%one%' AND LIKE '%two%' OR body LIKE '%one%' ' at line 1.

¿Que es lo que pasa?
  #7 (permalink)  
Antiguo 23/03/2003, 14:45
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

¿Has leido el manual? Ahi esta la respuesta. Si no lo entiendes, pregunta lo que no entiendes. Creo que tu problema es que no entiendes que las condiciones son independientes entre si. Ademas, ten en cuenta que esto es como las matematicas. Depende de como agrupes las condiciones, el resultado sera uno u otro.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 09:27.