Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/11/2009, 09:13
iialtorreal
 
Fecha de Ingreso: noviembre-2009
Mensajes: 5
Antigüedad: 14 años, 5 meses
Puntos: 0
Problema con un busacador php y mysql

Hola tengo el siguiente problema: Al realizar una busqueda si solo introduzco una palabra funciona perfectamente pero al introducir dos me dice que no ha encontrado nada os paso el codigo a ver si me podeis ayudar:

este archivo es el buscador

<?php
$palabra_original = $_POST[palabra];
if ( isset($palabra_original) )
{
$palabra = htmlentities($palabra_original);

include('configuracion.php');
if (!$num) $num=0;
$cadenas_buscadas = explode(" ",$palabra);
$numero_de_cadenas = count($cadenas_buscadas);
if ( $numero_de_cadenas == 1 )
{
$sql="SELECT * FROM x
WHERE ( Nombre LIKE '%$palabra%'OR PrimerApellido LIKE '%$palabra%'OR SegundoApellido LIKE '%$palabra%'OR
DNI LIKE '%$palabra%'OR TelefonoFijo LIKE '%$palabra%'OR TelefonoMovil LIKE '%$palabra%'OR NumeroParcela LIKE '%$palabra%'
OR Residencial LIKE '%$palabra%'OR Direccion LIKE '%$palabra%'OR NumeroCuenta LIKE '%$palabra%'
)
ORDER BY Nombre
LIMIT ".$num.",10";

}
if ( $numero_de_cadenas > 1 )
{
$sql="SELECT distinct Nombre, PrimerApellido, SegundoApellido, DNI, TelefonoFijo, TelefonoMovil, NumeroParcela,
Residencial, Direccion, NumeroCuenta ,
MATCH ( Nombre, PrimerApellido, SegundoApellido, DNI, TelefonoFijo, TelefonoMovil, NumeroParcela, Residencial,
Direccion, NumeroCuenta )
AGAINST ( '%".$palabra."%' )
FROM x WHERE MATCH ( `Nombre`, `PrimerApellido`, `SegundoApellido`, `DNI`, `TelefonoFijo`, `TelefonoMovil`,
`NumeroParcela`, `Residencial`, `Direccion`, `NumeroCuenta`)
AGAINST ( '%".$palabra."%' )
ORDER BY Nombre
LIMT ".$num.",10";
}
$rs = $db->Execute($sql);
if ( !isset($rs) )
{
echo $db->ErrorMsg();
}
if ( $rs->fields["Nombre"] )
{
echo '<p>Texto ingresado: <b>'.$palabra_original.'</b></p>';
echo '<p>N&uacute;mero de palabras buscadas: <b>'.$numero_de_cadenas.'</b></p>';
echo '<table width=\"50%\">
<tr>
<th>#</td>
<th>T&iacute;tulo</td>
<th>Texto</td>
<tr>';
$contador = 0;
while (!$rs->EOF)
{
$contador++;
echo '<tr>';
echo "<td>".$contador."</td>";
echo "<td>".$rs->fields["Id"]."</td>";
echo "<td>".$rs->fields["Nombre"]."</td>";
echo "<td>".$rs->fields["Primer_Apellido"]."</td>";
echo "<td>".$rs->fields["Segundo_Apellido"]."</td>";
echo "<td>".$rs->fields["DNI"]."</td>";

echo '<tr>';
$rs->MoveNext();
}
}
else
{
echo 'No se han encontrado resultados correspondientes a su b&uacute;squeda.';
}

$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.'] ';
}
}
}
else
{
header('Location: index.php');
}
?>

este el es el formulario para pasarle la palabra/s a buscar:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

</head>
<body>
<form method="POST" action="buscador.php">
<label>Palabra a buscar:</label>
<input type="text" name="palabra" value="">
<input type="submit" value="Buscar">
</form>
</body>
</html>


y esta es la estructura de la base de datos.


CREATE TABLE IF NOT EXISTS `x` (
`Id` int(10) NOT NULL auto_increment,
`Nombre` varchar(50) NOT NULL,
`PrimerApellido` varchar(50) NOT NULL,
`SegundoApellido` varchar(50) NOT NULL,
`DNI` varchar(30) NOT NULL,
`TelefonoFijo` varchar(50) NOT NULL,
`TelefonoMovil` varchar(50) NOT NULL,
`NumeroParcela` varchar(50) NOT NULL,
`Residencial` varchar(50) NOT NULL,
`Direccion` varchar(50) NOT NULL,
`SegundaDireccion` varchar(50) NOT NULL,
`NumeroCuenta` varchar(50) NOT NULL,
PRIMARY KEY (`Id`),
KEY `titulo` (`Nombre`,`PrimerApellido`,`SegundoApellido`,`DNI` ,`TelefonoFijo`, `TelefonoMovil`
,`NumeroParcela`,`Residencial`,
`Direccion`,`NumeroCuenta`),
FULLTEXT KEY `titulo_2` ( `Nombre`, `PrimerApellido`, `SegundoApellido`, `DNI`, `TelefonoFijo`,
`TelefonoMovil`, `NumeroParcela`,
`Residencial`, `Direccion`, `NumeroCuenta`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;


y estos los datos de prueba:

INSERT INTO `x` (`Id`, `Nombre`, `PrimerApellido`, `SegundoApellido`, `DNI`, `TelefonoFijo`, `TelefonoMovil`, `NumeroParcela`,
`Residencial`, `Direccion`, `SegundaDireccion`, `NumeroCuenta`)
VALUES
(1, 'Juan', 'lopez', 'Martinez', 'Antonio','1', 'Juan', 'lopez', 'Martinez', 'Antonio', 'Martinez', 'Antonio'),
(2, 'Mariano', 'lopez', 'Antonio', 'Juan','2', 'Mariano', 'lopez', 'Antonio', 'Juan', 'Martinez', 'Antonio'),
(3, 'pedro', 'mariano', 'alfonso', 'gines','3', 'pedro', 'mariano', 'alfonso', 'gines', 'Martinez', 'Antonio'),
(4, 'gines', 'mario', 'lopez', 'Antonio','3', 'pedro', 'mariano', 'alfonso', 'gines', 'Martinez', 'Antonio');

Gracias por todo