Tengo una pagina buscar.php que realiza una busqueda de articulos en una tabla de una base de datos.
El problema que tengo es con el buscador Match Againt(me busca mas de 1 palabra), no me arroja ningun resultado. Las palabras estan en la tabla de la Base de datos, pero me arroja una pagina en blanco.
La tabla yo define con motor MyIsam, porque con InnoDB me salía un error.
He probado muchas veces pero me sigue tirando una pagina en blanco, como si no encontrase la frase, pero las frases estan en la tabla.
Tengo 2 campos con indices FULLTEXT que son titulo y desarrollo. y un clave primaria llamada referencia.
El codigo es el siguiente:
Cita:
Me pueden Ayudar. Gracias. <?php
//cadena de conexion
mysql_connect("localhost","root","");
//selecciona base de datos
mysql_select_db("actualizacion");
//debo preparar los textos que voy a buscar si la cadena existe
if($_POST["busqueda"]<>''){
//cuenta el numero de palabras
$trozos = explode(" ",$_POST["busqueda"]);
$numero = count($trozos);
$busqueda = $_POST["busqueda"];
if($numero == 1){
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCCION CON LIKE
$cadbusca = "SELECT referencia, titulo FROM articulos WHERE desarrollo LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50";
}elseif($numero > 1){
//SI HAY UNA FRASE SE UTILIZA EL ALGORITMO DE BUSQUEDA AVANZADO DE MATCH AGAINST.
//busqueda de frases con mas de una palabra y un algoritmo especializado
$cadbusca = "SELECT referencia, titulo , MATCH (titulo, desarrollo) AGAINST ( '$busqueda' ) AS Score FROM articulos WHERE MATCH (titulo, desarrollo) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
$result= mysql_query($cadbusca) or die(mysql_error());
while($row = mysql_fetch_object($result)){
//mostramos los articulos de los articulos o lo que deseamos...
$refer = $row->referencia;
$titulo = $row->titulo;
echo $refer . " - " . $titulo . "<br>";
}
}
?>
//cadena de conexion
mysql_connect("localhost","root","");
//selecciona base de datos
mysql_select_db("actualizacion");
//debo preparar los textos que voy a buscar si la cadena existe
if($_POST["busqueda"]<>''){
//cuenta el numero de palabras
$trozos = explode(" ",$_POST["busqueda"]);
$numero = count($trozos);
$busqueda = $_POST["busqueda"];
if($numero == 1){
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCCION CON LIKE
$cadbusca = "SELECT referencia, titulo FROM articulos WHERE desarrollo LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50";
}elseif($numero > 1){
//SI HAY UNA FRASE SE UTILIZA EL ALGORITMO DE BUSQUEDA AVANZADO DE MATCH AGAINST.
//busqueda de frases con mas de una palabra y un algoritmo especializado
$cadbusca = "SELECT referencia, titulo , MATCH (titulo, desarrollo) AGAINST ( '$busqueda' ) AS Score FROM articulos WHERE MATCH (titulo, desarrollo) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
$result= mysql_query($cadbusca) or die(mysql_error());
while($row = mysql_fetch_object($result)){
//mostramos los articulos de los articulos o lo que deseamos...
$refer = $row->referencia;
$titulo = $row->titulo;
echo $refer . " - " . $titulo . "<br>";
}
}
?>