Mirar, tengo un buscador en php el cual pudé obtener el código de internet y he ido acoplandomelo a mis necesidades.
Me decante por este script, por varias cosas que se explican aquí, y porque funciona bastante bien.
Lo que pasa es que tengo un problemilla con él, y es que si modifico la consulta, a la hora de seleccionar los campos, de un campo (en este caso descripcion), a * el script me peta repitiendome supongo que tantas veces como registros haya (no lo he contado, porque hay 1.500 registros), esto:
Warning: ereg() [function.ereg]: REG_EMPTY in XXXXXXXXXXX on line 72
La línea 72 es esta exactamente:
Código PHP:
if(ereg($aguja[$busqueda],$paja)){
El script es el siguiente:
Código PHP:
<?
session_start();
extract($_REQUEST);
include ("connect.php");
include ("errores.php");
if($cpath){ $escribe ="WHERE familia='$cpath'"; } else { $escribe =""; }
$query=mysql_query("SELECT descripcion FROM $tabla_productos ".$escribe."");
while($row=mysql_fetch_assoc($query))
if(busqueda($busqueda,$row)){
echo $row['descripcion']."<br>";
}
function busqueda($busqueda,$row){
$elementos=array("*","+","(",")");
$busqueda=str_replace($elementos," ",$busqueda);
$busqueda=array_unique(explode(" ",$busqueda));
$busqueda=array_filter($busqueda,"filtro");//Filtra espacios.
$busqueda=array_map("igualar",$busqueda);//Filtra espacios.
sort($busqueda);
$row=array_filter($row,"filtro");//Filtra espacios.
$row=array_map("igualar",$row);//Filtra espacios.
if(en_array($busqueda,$row)){
#echo"<b>Si hay coincidencias.</b><br />\n";
return true;
}else{
#echo"<b>No existe coincidencias</b><br />\n";
return false;
}
}
function filtro($cad){
if(eregi("^ *$",$cad))return false;//No devolvemos el valor.
return true;//Sino, la devuelve tal cual.
}
function igualar($cad){
return strtr(strtolower($cad),"áéíóúñ","aeioun");
}
function en_array($aguja,$pajar){
for($busqueda=0;$busqueda<=count($aguja)-1;$busqueda++)
foreach($pajar as $paja)
if(ereg($aguja[$busqueda],$paja)){
$aguja[$busqueda]=true;
}else{
$aguja[$busqueda]=false;
}
if(array_sum($aguja)!=count($aguja))
return false;
else
return true;
}
?>
Muchas gracias.