Foros del Web » Programando para Internet » PHP »

problema con buscador

Estas en el tema de problema con buscador en el foro de PHP en Foros del Web. Hola amigos, estoy haciendo un buscador para una base de datos y he decidido utilizar 2 funciones diferentes, una es la "like" y la otra ...
  #1 (permalink)  
Antiguo 14/03/2005, 18:08
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 19 años, 7 meses
Puntos: 3
problema con buscador

Hola amigos, estoy haciendo un buscador para una base de datos y he decidido utilizar 2 funciones diferentes, una es la "like" y la otra "match".

Tengo los 2 buscadores por separado y funcionan de maravilla, pero ahora tendria que juntarlos y poner un condicionante de que si se escribe 0 o 1 palabras se inicie la funcion like y si hay más de 1 se inicie la función match, encontré un artículo para hacer esto, pero no me funciona de ningun modo.

Aqui dejo el link: http://www.igelectronica.com/desarro...article&sid=45

aqui dejo el código del buscador "like"


<?php require_once('Connections/PORTAL.php'); ?>
<?php
$colname2_Recordset1 = "1";
if (isset($_GET['select'])) {
$colname2_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['select'] : addslashes($_GET['select']);
}
$colname_Recordset1 = "1";
if (isset($_GET['busca'])) {
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['busca'] : addslashes($_GET['busca']);
}
mysql_select_db($database_PORTAL, $PORTAL);
$query_Recordset1 = sprintf("SELECT * FROM empreses WHERE (nomempresa like '%%%s%%' or frase like '%%%s%%' )and idpoble like '%s'", $colname_Recordset1,$colname_Recordset1,$colname2_ Recordset1);
$Recordset1 = mysql_query($query_Recordset1, $PORTAL) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>



aqui dejo el código del buscador "match":

<?php require_once('Connections/PORTAL.php'); ?>
<?php
$colname_Recordset1 = "1";
if (isset($_GET['busca'])) {
$colname_Recordset1 = (get_magic_quotes_gpc()) ? $_GET['busca'] : addslashes($_GET['busca']);
}
mysql_select_db($database_PORTAL, $PORTAL);
$query_Recordset1 = sprintf("SELECT * , MATCH (nomempresa,frase) AGAINST ('%%%s%%') AS puntuacion FROM empreses WHERE MATCH (nomempresa,frase) AGAINST ('%%%s%%') ORDER BY puntuacion DESC LIMIT 50", $colname_Recordset1,$colname_Recordset1);
$Recordset1 = mysql_query($query_Recordset1, $PORTAL) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>


A ver si alguien es capaz de juntar los 2 en un mismo archivo con las condiciones que expongo.

Muchas gracias por adelantado

Última edición por sintesk7; 14/03/2005 a las 18:11
  #2 (permalink)  
Antiguo 15/03/2005, 06:01
Avatar de hunab  
Fecha de Ingreso: febrero-2005
Ubicación: Barcelona
Mensajes: 133
Antigüedad: 19 años, 2 meses
Puntos: 1
No entiendo porque utilizas el operador LIKE, todo lo que puedes hacer con LIKE lo haces mucho mejor con las búsquedas booleanas utilizando MATCH y AGAIN, te dejo un link para que veas el potencial de estas búsquedas.

http://www.mysql-hispano.org
__________________
Marcio Barrios
marciobarrios.com // artículos sobre estándares y desarrollo web
  #3 (permalink)  
Antiguo 15/03/2005, 07:12
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 19 años, 7 meses
Puntos: 3
sobre busquedas

Estoy convencido de que la función match es mucho mejor, pero falla cuando solo se pone una palabra en el buscador (o ninguna).

Hay alguna manera de hacer funcionar el match con solo una palabra y así por ejemplo que reconozca "dentista" cuando se le pone "dentistas".

Muchas gracias
  #4 (permalink)  
Antiguo 15/03/2005, 14:09
 
Fecha de Ingreso: agosto-2004
Mensajes: 349
Antigüedad: 19 años, 7 meses
Puntos: 3
Sobre buscador

¿Como puedo hacer para que la función match funcione cuando no pongo ninguna o una sola palabra?

Muchas gracias
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 17:01.