Foros del Web » Programando para Internet » PHP »

buscar varias palabras

Estas en el tema de buscar varias palabras en el foro de PHP en Foros del Web. Hola, Estoy haciendo un buscador y no creia que seria tan complicado. Bien, hice un codigo que me coge en un arrays de cadenas cada ...
  #1 (permalink)  
Antiguo 14/10/2004, 12:15
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 21 años, 2 meses
Puntos: 4
buscar varias palabras

Hola,
Estoy haciendo un buscador y no creia que seria tan complicado.
Bien, hice un codigo que me coge en un arrays de cadenas cada cadena que el usuario mete en la caja de texto del formulario. Por lo tanto tengo que hacer tantos querys(consultas) como cadenas se quiere buscar.
Hasta aqui bien.
A la hora de mostrar los datos uso el mysql_result(). Entonces lo que tengo que hacer es mostrar los datos de cada consulta que haya hecho.
El problema es que si busca 2 palabras que aparecen, ambas, en un mismo registro (aunque en diferentes campos del registro) me muestra los registros 2 veces, ya que se han hecho dos consultas.
Ahora no tengo el codigo aqui, pero mañana lo pongo para que podais echarle un vistazo a ver si me podeis ayudar.

Gracias.
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #2 (permalink)  
Antiguo 14/10/2004, 12:45
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 9 meses
Puntos: 10
A ver si algo asi te sirve...

Código PHP:

        $terms 
explode(" "$n); // $n seria el input de texto de  la busqueda
        
$select "SELECT * FROM tabla WHERE ";
        
        for(@
reset($terms); list(, $term) = @each($terms); $select .= 'and ') {
            
$select .= "campo LIKE '%$term%' ";
        }
        
        
$select substr($select,0,-5);
        
$sql=mysql_query($select$conn); 
lo que hace es crear un array con todas las palabras introducidas y las agrega a la consulta como parte del where (ej: ".... WHERE campo='%alguntermino%' AND campo='%otrotermino%'..."
__________________
oohh... quisiera ser godines!!!

Última edición por safe; 14/10/2004 a las 12:47
  #3 (permalink)  
Antiguo 14/10/2004, 12:58
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 21 años, 2 meses
Puntos: 4
Gracias.
Puedes explicarme que es eso de @reset, osea, lo que tienes en los aprentesis del FOR?.
Gracias por la ayuda, creo que es eso lo que necesito.
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #4 (permalink)  
Antiguo 14/10/2004, 13:32
Avatar de Genetix  
Fecha de Ingreso: febrero-2002
Ubicación: Lima - Perú
Mensajes: 1.600
Antigüedad: 22 años, 9 meses
Puntos: 45
Hola elangelcaido

Manual
Cita:
reset -- Fija el puntero interno de una matriz a su primer elemento
"@" esto se usa para no mostrar los posibles mensajes de error.

Saludos
  #5 (permalink)  
Antiguo 14/10/2004, 14:03
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 9 meses
Puntos: 10
Genetix me salvaste... porque no tenia idea de que era eso

Era un codigo que encontre en el foro hace un tiempo y nunca deje de usarlo.
__________________
oohh... quisiera ser godines!!!
  #6 (permalink)  
Antiguo 02/02/2005, 13:47
Avatar de ferent  
Fecha de Ingreso: junio-2002
Ubicación: Madrid
Mensajes: 633
Antigüedad: 22 años, 5 meses
Puntos: 0
Ok, y si quisiera buscar en varias columnas de la tabla a la vez... ¿como lo haría para que no salieran resultados repetidos?
__________________
Culto es aquel que sabe donde encontrar lo que no sabe.
  #7 (permalink)  
Antiguo 02/02/2005, 14:11
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.047
Antigüedad: 21 años, 9 meses
Puntos: 10
no lo probe, pero podria ser algo como esto:

Código PHP:
        $terms explode(" "$n); // $n seria el input de texto de  la busqueda
        
$terms2 explode(" "$n); // $n seria el input de texto de  la busqueda
        
$select "SELECT * FROM tabla WHERE ";
        
        for(@
reset($terms); list(, $term) = @each($terms); $select .= 'and ') {
            
$select .= "campo LIKE '%$term%' ";
        }

        for(@
reset($terms2); list(, $term2) = @each($terms2); $select .= 'and ') {
            
$select .= "otrocampo LIKE '%$term2%' ";
        }
        
        
$select substr($select,0,-5);
        
$select .=  " GROUP BY id" // donde id es algun campo autonumerico o que no se repita.
        
$sql=mysql_query($select$conn); 
__________________
oohh... quisiera ser godines!!!
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 14:44.