Foros del Web » Programando para Internet » PHP »

problema con un buscador

Estas en el tema de problema con un buscador en el foro de PHP en Foros del Web. hola maestr@s de php, me comunico con ustedes porque hice un bscador en php , le cual busca en una base de datos la palabra ...
  #1 (permalink)  
Antiguo 07/03/2002, 09:40
Usuario no validado
 
Fecha de Ingreso: enero-2002
Ubicación: Bueno Aires
Mensajes: 156
Antigüedad: 22 años, 10 meses
Puntos: 0
problema con un buscador

hola maestr@s de php, me comunico con ustedes porque hice un bscador en php , le cual busca en una base de datos la palabra que se escriba en un form y se enviada, obviamente,...
esto lo estoy hacindo con una consulta a mysql con LIKE '%$palabra%'.
el problema surge cunado un usuario en el buscador , por ejemplo pone dos o mas palabras... como puedo hace para que las busque a las dos!!???

bueno, espero que me entiendan, y muchas gracias desde ya!!!

:cantar: :cantar:

Sebastián Guidobono
Diseñador Multimedial
  #2 (permalink)  
Antiguo 07/03/2002, 10:34
 
Fecha de Ingreso: noviembre-2001
Ubicación: Quito - Ecuador
Mensajes: 87
Antigüedad: 23 años
Puntos: 0
Re: problema con un buscador

Esta es una forma y funciona. Suponiendo que la variable $parametros viene del form y contiene la búsqueda se puede construir un select dinamico de la siguiente forma:

Suponiendo que en el form ingresaste:

$parametros="php mysql instalacion";

<?php

$terms = explode(" ", $parametros);
$select = 'SELECT * FROM datos WHERE ';
for(@reset($terms); list(, $term) = @each($terms); $select .= 'AND ') {
$select .= "text LIKE '%$term%' ";

}

/* Se debería generar:
* SELECT * FROM datos
* WHERE text LIKE '%php%' AND
* text LIKE '%mysql%' AND
* text LIKE '%instalacion%'
*/

?>

Debes probar y ajustar algo el código, pero ya tienes la idea.

espero te sirva

EduH
  #3 (permalink)  
Antiguo 07/03/2002, 13:25
Usuario no validado
 
Fecha de Ingreso: enero-2002
Ubicación: Bueno Aires
Mensajes: 156
Antigüedad: 22 años, 10 meses
Puntos: 0
Re: problema con un buscador

muchas gracias!!
pero una duda, pongo eso en el codigo, peros despues tengo poner una linea parecida a esta no?:

$c1= mysql_query($select);

nuevamente gracias y espera la respuesta!

Sebastián Guidobono
Diseñador Multimedial
  #4 (permalink)  
Antiguo 07/03/2002, 16:12
 
Fecha de Ingreso: noviembre-2001
Ubicación: Quito - Ecuador
Mensajes: 87
Antigüedad: 23 años
Puntos: 0
Re: problema con un buscador

a esta altura me imagino que ya te funciona, efectivamente debes poner el mysql_query($select);

suerte
  #5 (permalink)  
Antiguo 08/03/2002, 07:48
 
Fecha de Ingreso: febrero-2002
Mensajes: 27
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: problema con un buscador

Gracias, gracias, gracias, ......

No os podeis imaginar lo bien q me ha venido este mensaje pq yo tenia ese problema, pero lo triste es q ni lo sabia. Buscaba en el LIKE todos los parametros juntos lo q significa q solo me los encontraba si estaban uno a continuacion del otro.

No llevo mucho tiempo en el foro, pero os aseguro q me habeis ayudado mucho y al leer los mensajes siempre aprendes algo q no sabias.

Vuelvo a reiterarme el lo dicho, gracias a todas esas presonas q comparten sus dudas y concimientos con los demas.

Un saludo
Susana
  #6 (permalink)  
Antiguo 08/03/2002, 08:28
 
Fecha de Ingreso: febrero-2002
Mensajes: 27
Antigüedad: 22 años, 9 meses
Puntos: 0
Re: problema con un buscador

Un comentario mas.

La consulta generada por el bucle tiene un AND de mas, es decir, en vez de generar
Cita:
/* Se debería generar:
* SELECT * FROM datos
* WHERE text LIKE '%php%' AND
* text LIKE '%mysql%' AND
* text LIKE '%instalacion%'
*/
lo q hace es:

/* Se debería generar:
* SELECT * FROM datos
* WHERE text LIKE '%php%' AND
* text LIKE '%mysql%' AND
* text LIKE '%instalacion%' AND
*/

Solo era por si alguien no se habia dado cuenta
  #7 (permalink)  
Antiguo 08/03/2002, 16:55
 
Fecha de Ingreso: noviembre-2001
Ubicación: Quito - Ecuador
Mensajes: 87
Antigüedad: 23 años
Puntos: 0
Re: problema con un buscador

Me habia olvidado de comentar lo del AND al final, yo lo solucione asi:

$select = substr($select, 0,-5);

espero les sirva

EduH
  #8 (permalink)  
Antiguo 09/03/2002, 19:47
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 9 meses
Puntos: 5
Re: problema con un buscador

Son ustedes todos unos maestros!!!

Creo que debo olvidarme por un tiempo de mi viejo romance con "IF" y con "WHILE" y dedicarle algunas horas de calidad a "FOR", porque ya veo que existen cosas que solo asi pueden lograrse facilmente...

La verdad es que este bucle me ha costado mucho trabajo para visualizarle aplicaciones, pero en fin, tendre que comenzar a probarlo...

Gracias!

<tr>
<td bgcolor="#339933"> <font face="Verdana, Arial" size="1" color="#FFFFFF">www.ideasfreelance.com
[/CODE]</td> <td align="right" bgcolor="#666666"></td></tr>
  #9 (permalink)  
Antiguo 09/03/2002, 19:52
Avatar de Manoloweb  
Fecha de Ingreso: enero-2002
Ubicación: Monterrey
Mensajes: 2.454
Antigüedad: 22 años, 9 meses
Puntos: 5
Re: problema con un buscador

Ahora que estoy &quot;masticando&quot; el codigo me encuentro con una duda existencial...

Que efecto tiene la &quot;@&quot; ??

Gracias de antemano!

<tr>
<td bgcolor="#339933"> <font face="Verdana, Arial" size="1" color="#FFFFFF">www.ideasfreelance.com
[/CODE]</td> <td align="right" bgcolor="#666666"></td></tr>
  #10 (permalink)  
Antiguo 09/03/2002, 20:18
Avatar de Webstudio
Colaborador
 
Fecha de Ingreso: noviembre-2001
Ubicación: 127.0.0.1
Mensajes: 3.499
Antigüedad: 23 años
Puntos: 69
Re: problema con un buscador

Manolo, la @ sirve para &quot;acallar&quot; a la función en caso de que produzca algún error. De esa manera, te evitas de mostrar información sustancial al usuario que podría utilizarla en un ataque contra tu sitio.

Saludos.

<hr><font size=2 face="verdana">- Pablo Daniel Rigazzi (Webstudio)
<font size=1 color="#333333">COORDINADOR PROYECTO REGIONALIZACION ARGENTINA
Visita <a href="http://www.web-studio.com.ar" target="_blank">Web Studio</a> - Tutoriales Photoshop</fo
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 21:30.