Gracias por tu respuesta! efectivamente por lo que se dice, esa es la manera correcta de hacerlo
.
Lo malo es que lo estoy intentando poner en practica y no me funciona :s . Para colmo de males no me arroja ningun codigo de error, solo una pagina en blanco y no encuentro el error... dejo el codigo si alguien nota alguna confusion en el solo aviseme! y desde ya gracias por ser tant atentos!
Código HTML:
<?php
$dbhost="";
$dbusuario="";
$dbpassword="";
$db="";
$sql = mysql_connect($dbhost, $dbusuario, $dbpassword);
if ($p_busca!='')
{
if (!$num) $num=0;
//Separamos las palabras de la cadena a buscar
//Hacemos la separación usando cada espacio como separador
$cadena_buscada=explode(" ",$p_busca);
if (count($cadena_buscada)==1)
{
//Si solo hay una palabra usamos LIKE
$sql="
SELECT SQL_CALC_FOUND_ROWS titulo, autor
FROM productos
WHERE titulo LIKE '%".$p_busca."%' OR autor LIKE '%".$p_busca."%'
LIMIT ".$num.",10";
}
elseif (count($cadena_buscada)>1)
{
//Si hay más de una palabra usaremos MATCH AGAINST
$sql="
SELECT SQL_CALC_FOUND_ROWS titulo, autor, MATCH (titulo, autor)
AGAINST ('".$p_busca."') AS Score FROM productos
WHERE MATCH (titulo, autor) AGAINST ('".$p_busca."')
ORDER BY Score DESC LIMIT ".$num.",10";
}
$rs = $db->Execute($sql);
if (!$rs) echo $conn->ErrorMsg();
else if ($rs->fields["id"])
{
while (!$rs->EOF)
{
echo $rs->fields["titulo"].'<br>'.$rs->fields["autor"];
$rs->MoveNext();
}
}
else
echo 'No se han encontrado resultados correspondientes a su búsqueda.';
//Paginación
$rs_cont=$db->Execute ("select found_rows() as total_filas");
if ($rs_cont->fields["total_filas"]>10)
{
for ($i=0; $i<$rs_cont->fields["total_filas"] && $i<50; $i=$i+10)
{
$a++;
echo '<a href="buscar.php?p_busca='.$p_busca.'&num='.$i.'">['.$a.']</a> ';
}
}
} ?>