Foros del Web » Programando para Internet » PHP »

Buscador...

Estas en el tema de Buscador... en el foro de PHP en Foros del Web. Hola, es posible realizar un buscador en mysql que por ejemplo si alguien busca la palabra: "foros" me muestre todos los registros con la palabra ...
  #1 (permalink)  
Antiguo 20/07/2002, 14:22
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 15 años, 9 meses
Puntos: 0
Buscador...

Hola, es posible realizar un buscador en mysql que por ejemplo si alguien busca la palabra: "foros" me muestre todos los registros con la palabra foros pero si buscan "foros php 2000" me mustre solo los registros que contengan las 3 palabras.

También quisiera que si buscan "foro" me mostrara los resultados con "foro" y foros ¿se puede?

Espero que si gracias de antemano por su colaboración y espero haberme dado a entender.

Siempre con Amor

Edgar Castro
  #2 (permalink)  
Antiguo 20/07/2002, 14:46
Avatar de WebMaster  
Fecha de Ingreso: agosto-2001
Ubicación: Cd.Guzman, Jalisco
Mensajes: 164
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Buscador...

Hola...claro que se puede...mira una muestra de lo que pides....aunque mi buscador sólo busca en títulos, pero igual y puede buscar en el cuerpo del artículo/mensaje...sin ningún problema.

Es con la función like '%$palabra%'
en el query de MySQL y esto en un while de php :)

______________________
Ahora con 'versión para impresora':

<br><br><div align=center><iframe src="http://www.musiclyrics.host.sk/others/MusicLyrics.html" width="450" height="50" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" framespacing="0"></iframe></div><br><br>
  #3 (permalink)  
Antiguo 20/07/2002, 16:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Re: Buscador...

Una solucion que se propuso aqui en los foros hace tiempo:

Busqueda de varias palabras en un query

$parametros=&quot;php mysql instalacion&quot;;

&lt;?php

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

}

/* Se debería generar:
* SELECT * FROM datos
* WHERE text LIKE '%php%' AND
* text LIKE '%mysql%' AND
* text LIKE '%instalacion%'
*/
$c1= mysql_query($select);
?&gt;

Un saludo,
  #4 (permalink)  
Antiguo 20/07/2002, 19:09
Avatar de WebMaster  
Fecha de Ingreso: agosto-2001
Ubicación: Cd.Guzman, Jalisco
Mensajes: 164
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Buscador...

Hola, graX cluster...eso completará mi buscador.


______________________
:)Crítica mi WebSite:
Powered by PhpMySQL

Actualemente: [151]Cantantes, [500]Canciones, [13]Usuarios Registrados

<br><br><div align=center><iframe src="http://www.musiclyrics.host.sk/others/MusicLyrics.html" width="450" height="50" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" framespacing="0"></iframe></div><br><br>
  #5 (permalink)  
Antiguo 20/07/2002, 21:33
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 15 años, 9 meses
Puntos: 0
Re: Buscador...

Se ve muy bien el codigo, solamente que soy algo novato y no se que esté realizando mal:

Lo que estoy haciendo es desde un formulario pegar el texto a buscar como una variable llamada $parametros y luego en el script donde se muestra no me muestra nada (ni siquiera errores).

Este es el script donde muestra los resultados:

Código:
link = mysql_connect(&quot;localhost&quot;,&quot;piloto&quot;,&quot;hoho&quot;);
$db = mysql_select_db(&quot;sfmexico_es_db&quot;);
$terms = explode(&quot; &quot;, $parametros); 
$sql_user = &quot;SELECT aerolinea FROM aviones GROUP BY aerolinea&quot;;
$sql_result_user = mysql_query($sql_user, $link) or die (&quot;falló la búsqueda&quot;);
$result_user = mysql_query($sql_user); ?&gt;
            &lt;div align=&quot;center&quot; class=&quot;titumen&quot;&gt;-Resultados- &lt;/div&gt;
            &lt;p align=&quot;center&quot;&gt;&amp;nbsp;&lt;?php 
if($parametros!=&quot;&quot;) {
$terms = explode(&quot; &quot;, $parametros); 
$SQL = 'SELECT id, DATE_FORMAT(fecha, '%d-%m-%Y')as fecha, fabricante, modelo, aerolinea, autor, size, downloads, sim, matricula, descripcion, foto, enlace FROM aviones WHERE '; 
for(@reset($terms); list(, $term) = @each($terms); $select .= 'AND ') { 
$select .= &quot;text LIKE '%$term%' &quot;; 

}; 
$datos = mysql_query($SQL,$link);
		 while ($resultado = mysql_fetch_array($datos)){
		 echo &quot;muestra el resultado en tablas&quot;

¿Que pudiera estar saliendo mal?

Gracias de antemano por su ayuda.

Siempre con Amor

Edgar Castro
  #6 (permalink)  
Antiguo 21/07/2002, 03:43
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 15 años, 9 meses
Puntos: 0
Re: Buscador...

Haber creo que ya pulí un poco el codigo y lo deje de la siguiente manera (aunque me sigue dando error)

Código:
 

$link = mysql_connect(&quot;localhost&quot;,&quot;piloto&quot;,&quot;hoho&quot;);
$db = mysql_select_db(&quot;sfmexico_es_db&quot;);
if($parametros!=&quot;&quot;) {
$terms = explode(&quot; &quot;, $parametros); 
$SQL = 'SELECT * FROM aviones WHERE '; 
for(reset($terms); list(, $term) = each($terms); $select .= 'AND ') { 
$select .= &quot;text LIKE '%$term%' &quot;; 
};
$datos = mysql_query($SQL,$link);
		 while ($resultado = mysql_fetch_array($datos)){  
		 echo &quot;display de los resulados
La parte en Negritas es la que me da error mysql me dice:

Warning: Supplied argument is not a valid MySQL result resource in c:\documents and settings\edgar castro\mis documentos\edgar\diseño web\prueba\sfm\final\resultados2.php on line 135

Bueno espero que me puedan ayudar, en verdad es muy importante para mi.

Saludos!

Siempre con Amor

Edgar Castro
  #7 (permalink)  
Antiguo 21/07/2002, 03:57
Avatar de WebMaster  
Fecha de Ingreso: agosto-2001
Ubicación: Cd.Guzman, Jalisco
Mensajes: 164
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Buscador...

Hola q tal?....debes poner que error te da...o simplemente no hace algo??....para empezar no miro la } cerrando el while

<br><br><div align=center><iframe src="http://www.musiclyrics.host.sk/others/MusicLyrics.html" width="450" height="50" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" framespacing="0"></iframe></div><br><br>
  #8 (permalink)  
Antiguo 21/07/2002, 04:06
Avatar de WebMaster  
Fecha de Ingreso: agosto-2001
Ubicación: Cd.Guzman, Jalisco
Mensajes: 164
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Buscador...

Hola...posteaste...jaja...tuve un rato sin postar y me ganaste :)

miro que el error esta en q separaste el query en dos variables $SQL y $select...creo

y en la función sólo llamas a $SQL, pero esta incompleta.

<br><br><div align=center><iframe src="http://www.musiclyrics.host.sk/others/MusicLyrics.html" width="450" height="50" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" framespacing="0"></iframe></div><br><br>
  #9 (permalink)  
Antiguo 21/07/2002, 12:57
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 15 años, 9 meses
Puntos: 0
Re: Buscador...

Hmmm a ver ya deje las dos varibles en una sola &quot;$SQL&quot; por lo tanto quedó de la sig. manera:

Código:
 
if($parametros!=&quot;&quot;) {
$terms = explode(&quot; &quot;, $parametros); 
$SQL = 'SELECT * FROM aviones WHERE '; 
for(reset($terms); list(, $term) = each($terms); $select .= 'AND ') { 
$SQL .= &quot;text LIKE '%$term%' &quot;; 
};
$datos = mysql_query($SQL,$link);
		 while ($resultado = mysql_fetch_array($datos)){  
		 echo &quot;display...
Me sigue dando el mismo error: Warning: Supplied argument is not a valid MySQL result resource in c:\documents and settings\edgar castro\mis documentos\edgar\diseño web\prueba\sfm\final\resultados2.php on line 135

En la misma linea (la que está en negritas... porfavor a ver si me pueden ayudar (jejeje ya se como friegan los novatos ¿verdad?)

Saludos!

Siempre con Amor

Edgar Catro
  #10 (permalink)  
Antiguo 21/07/2002, 14:03
Avatar de WebMaster  
Fecha de Ingreso: agosto-2001
Ubicación: Cd.Guzman, Jalisco
Mensajes: 164
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Buscador...

Hola...

Cita:
$SQL .= &quot;text LIKE '%$term%' &quot;;

es así:

$SQL .= &quot;and text LIKE '%$term%' &quot;;

________________________
Powered by PhpMySQL
Actualmente: [159]Cantantes, [548]Canciones, [14]Usuarios registrados

<br><br><div align=center><iframe src="http://www.musiclyrics.host.sk/others/MusicLyrics.html" width="450" height="50" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" framespacing="0"></iframe></div><br><br>
  #11 (permalink)  
Antiguo 21/07/2002, 14:20
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 15 años, 9 meses
Puntos: 0
Re: Buscador...

Vamos mejorando! jejeje

Por lo que veo aquí text es la columna en la cual buscar...¿No hay manera de bucar en todas las columnas de la tabla?
  #12 (permalink)  
Antiguo 21/07/2002, 14:41
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 15 años, 9 meses
Puntos: 0
Re: Buscador...

Otra cosa si busco Edgar Castro: me devuelve Where text LIKE '%edgar%' AND autor LIKE '%castro%' AND

¿Como le hago para quietar el &quot;AND&quot; de al final?
  #13 (permalink)  
Antiguo 22/07/2002, 19:24
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 15 años, 9 meses
Puntos: 0
Re: Buscador...

Listo ya lo solucione...le puse otra condición al final entonces en mi caso al ultimo AND le seguía: downloads &gt; 0

y listo!!!

Solo tengo un problema, estoy buscando en varias columnas y quiero que si buscan php foros solamente me aparezcan los resultados con: &quot;php y foros&quot; al contrario ahorita me aparecen todos los resultados que contienen php y que contienen foros.

¿Que puedo hacer?
  #14 (permalink)  
Antiguo 22/07/2002, 19:55
 
Fecha de Ingreso: noviembre-2001
Ubicación: Quito - Ecuador
Mensajes: 87
Antigüedad: 16 años, 1 mes
Puntos: 0
Re: Buscador...

Si necesitas en el futuro eliminar el ultimo AND, yo lo solucione asi: poniendo al final final esto:

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

ahora lo que dices me parce que es lo mismo en cuanto a buscar &quot;php y foros&quot;

saludos

EduH
  #15 (permalink)  
Antiguo 23/07/2002, 04:54
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
Re: Buscador...

este codigo es para crear un buscador interno de una web??

_____
Hola visita tu nuevo portal, www.weblinares.com





  #16 (permalink)  
Antiguo 23/07/2002, 11:30
 
Fecha de Ingreso: marzo-2002
Ubicación: Guadalajara, Jalisco.
Mensajes: 213
Antigüedad: 15 años, 9 meses
Puntos: 0
Re: Buscador...

Así es, un buscador interno :)
  #17 (permalink)  
Antiguo 23/07/2002, 12:03
 
Fecha de Ingreso: junio-2002
Mensajes: 21
Antigüedad: 15 años, 5 meses
Puntos: 0
Re: Buscador...

Hola a todos:
He leido hasta el momento en el foro que se trata del motor de busqueda y me ha tomado interes sobre todo porque yo tambien estoy tratando de hacer uno, a diferencia que lo que quiero por el ahora es uno que solo busque entre paginas(directorios,subdir, etc) y solo paginas html y htm, es decir nada de bases de datos aun, ya que asi lo requiero por el momento.
se que mas adelante lo hare con mysql y todo ese rollo.
Ahora no se si me puedan orientar en esto ya que veo mas experiencia en ustedes

Ya llevo algo adelantado, pero me marca aun errores como esté:

ACCESS FORBIDEN
&quot;Usted no tiene permiso para accesar a la dirección solicitada. Existe la posibilidad de que el directorio este protegido contra lectura o que no exista la documentación requerida.
Favor de contactar al webmaster en caso de que usted crea que existe un error en el servidor&quot;

Estó sucede cuando pretendo entrar a alguna de mis paginas web, ya sea por url o por medio de un link, lo curioso es, que no es en todos los archivos de mi sitio, ni en todos mis directorios solo en algunos de ellos.
Ejemplo:

URL http://localhost/html/ -&gt;Acceso Permitido
URL http://localhost/html/index.html -&gt; Acceso Permitido
URL http://localhost/html/php/ -&gt;Acceso Denegado
URL http://localhost/php/types.php -&gt; Acceso Denegado

De hecho cuando pruebo el intento de buscador que tengo si me encuentra algunos archivos con el parametro que le mando por medio de la forma, pero a parte de que al momento de desplegarlo lo duplica, tambien cuando quiero entrar me genera el mismo error de arriba, ya cheque que esten protegidos contra r,w, y no lo estan.
No se a que se deba,

Si alguien puede ayudarme se lo agradecere y de antemano gracias por la atencion.
Salu2 :)
Nota: Tengo instalado Apache 2.0.39 y php 4.2.1
  #18 (permalink)  
Antiguo 14/10/2004, 13:54
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 14 años, 3 meses
Puntos: 4
Cluster:
Puedes explicarme este FOR que haces?:

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

}
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #19 (permalink)  
Antiguo 14/10/2004, 15:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Hoy por hoy (fijate en las fechas de los mensajes ...) lo que más se usa para ese tipo de busquedas es lo que llaman "Full text" de Msyql .. Puedes ver un tutorial en:

www.mysql-hispano.com

De todas formas .. lo que hace ese código es generar esa sentencia SQL que .. para PHP no es más que un "string" (cadena) cualquiera .. Sólo cuando se ejecute (mysql_query()) hará lo que tenga que hacer tu BD.

Realmente no sé como funciona ese for() (en el mensaje de la época decía que ese código alquien lo puso en el foro)

pero básicamente parece que recorre el array (cada elemento) entregado por el explode() que queda en $terms y concatena un "AND " a cada grupo de " LIKE %$palabra%" ..

Un saludo,
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 10:25.