Foros del Web » Programando para Internet » PHP »

Problema con buscador interno - php y mysql

Estas en el tema de Problema con buscador interno - php y mysql en el foro de PHP en Foros del Web. Hola a todos!, estoy teniendo un problema con mi buscador interno en php y mysql. Lo que intento hacer es que al buscar una palabra ...
  #1 (permalink)  
Antiguo 01/02/2012, 14:49
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años
Puntos: 29
Exclamación Problema con buscador interno - php y mysql

Hola a todos!, estoy teniendo un problema con mi buscador interno en php y mysql.

Lo que intento hacer es que al buscar una palabra o frase, los resultados se ordenen por el lugar donde se encuentre dicha frase o palabra. Quisiera que primero aparezcan los resultados que tengan la palabra en el título, luego los que tengan la palabra en la descripción y por último el que tenga la palabra en las keywords.

Estuve intentando con order by, pero no logro ordenarlos como quiero, algo debo estar haciendo mal, les dejo el código:

Código PHP:
// verificar que se haya enviado una consulta 
if(isset($_GET['buscar']) && $_GET['buscar'] == 'Buscar'){ 
    
$frase htmlspecialchars($_GET['frase']); 
    
// hacer la consulta
$sssql mysql_query("SELECT webTitulo, webDescripcion, weburl, 
                              MATCH (webTitulo, webDescripcion, weburl, webkeywords) 
                              AGAINST ('$frase' IN BOOLEAN MODE) 
                              FROM webs
                              WHERE MATCH (webTitulo, webDescripcion, webkeywords)
                              AGAINST ('$frase' IN BOOLEAN MODE) 
                              ORDER BY webkeywords DESC, webTitulo ASC "
$server_link
                              or die(
mysql_error());
    
$sqlBuscar mysql_query("SELECT webTitulo, webDescripcion, weburl, 
                              MATCH (webTitulo, webDescripcion, weburl, webkeywords) 
                              AGAINST ('$frase' IN BOOLEAN MODE)
                              FROM webs 
                              WHERE MATCH (webTitulo, webDescripcion, webkeywords)
                              AGAINST ('$frase' IN BOOLEAN MODE) 
                              ORDER BY webkeywords DESC, webTitulo ASC
                              LIMIT $inicio, $TAMANO_PAGINA "
$server_link
                              or die(
mysql_error()); 

Resumiendo:

Los resultados deberían aparecer así:

1º Los que tengan la palabra buscada en el título
2º Los que tengan la palabra buscada en la descripción.
3º Los que tengan la palabra buscada en las keywords.

Saludos y gracias!!!
  #2 (permalink)  
Antiguo 01/02/2012, 15:37
 
Fecha de Ingreso: enero-2012
Ubicación: madrid
Mensajes: 14
Antigüedad: 12 años, 2 meses
Puntos: 4
Respuesta: Problema con buscador interno - php y mysql

Este script utiliza JavaScript para buscar contenidos dentro de una página web, el único inconveniente es que la actualización del motor de búsqueda es manual, pero rápida.

Descarga Directa: http://enolgames.es/modules.php?name=Downloads&d_op=getit&lid=468

Espero que te sirva. Saludos
  #3 (permalink)  
Antiguo 01/02/2012, 15:54
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años
Puntos: 29
Respuesta: Problema con buscador interno - php y mysql

Disculpa, pero no me ayudó, no tiene lo que estoy buscando.

Gracias igualmente por la respuesta.
  #4 (permalink)  
Antiguo 01/02/2012, 16:07
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 10 meses
Puntos: 322
Respuesta: Problema con buscador interno - php y mysql

Si te fijas, el problema viene desde MySQL, por lo que ésto debe ir en el foro de MySQL.
Ahora, como lo pusiste en PHP te ofrezco una opción en PHP:

Código PHP:
Ver original
  1. $q1 = mysql_query("SELECT webTitulo, webDescripcion, weburl FROM webs WHERE webTitulo LIKE '%$frase%'");
  2. $q2 = mysql_query("SELECT webTitulo, webDescripcion, weburl FROM webs WHERE webDescripcion LIKE '%$frase%'");
  3. $q3 = mysql_query("SELECT webTitulo, webDescripcion, weburl FROM webs WHERE webkeywords LIKE '%$frase%'");
  4.  
  5. $qs = array('q1', 'q2', 'q3');
  6.  
  7. foreach($qs as $q) {
  8.     while($r = mysql_fetch_object($$q) {
  9.         echo $r->webTitulo.'<br />';
  10.     }
  11. }


Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 01/02/2012, 16:22
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años
Puntos: 29
Respuesta: Problema con buscador interno - php y mysql

Muchas gracias por la respuesta, voy a consultarlo en la otra sección también.

Perdón por la ignorancia pero donde ubico el código que publicaste, o debo reemplazarlo por el mysql_query que tengo ahora???.

Gracias!!
  #6 (permalink)  
Antiguo 01/02/2012, 16:46
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 10 meses
Puntos: 322
Respuesta: Problema con buscador interno - php y mysql

El código fue simplemente un ejemplo mostrando una posible solución.
Ejecútalo, mira el comportamiento, intégralo a tu código actual modificando lo que necesites...

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: interno, keywords, buscadores
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 01:49.