Yo mismo estoy haciendo un complejo buscador. Mira, te voy a poner el código que tengo hecho:
Código PHP:
Ver original<?
include("datos_usuario_db.php");
$cadenaBusqueda=$_POST['cadenaBusqueda'];
$dondeBuscar=$_POST['dondeBuscar'];
$resultados[0]=array(); //para mensajes foro $resultados[1]=array(); //para respuestas foro
if($dondeBuscar=="todos") {
$sql="SELECT * , MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') as Score FROM gap_foro_mensajes WHERE MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') ORDER BY Score DESC";
$variable=0;
if($bandera==0) { $colorFondo="#FFE7D7"; $bandera=1; } else { $colorFondo="#F2D2B7"; $bandera=0; }
$resultados[0][$variable]=array(); $resultados[0][$variable]['asunto']=$row['asunto'];
$resultados[0][$variable]['id']=$row['id'];
$resultados[0][$variable]['user']=$row['user'];
$resultados[0][$variable]['fondo']=$colorFondo;
$resultados[0][$variable]['fecha']=$row['fecha'];
$resultados[0][$variable]['puntuacion']=$row['Score'];
$resultados[0][$row['asunto']]=$row['id'];
$cadBus=explode(" ",$cadenaBusqueda); $func = preg_match("/".$cadBus[0]."{1}.+/is",$row['mensaje'],$matches);
$resultados[0][$variable]['trozo']=$matches[0];
$resultados[0][$variable]['trozo']=str_replace("'","'",$resultados[0][$variable]['trozo']); $resultados[0][$variable]['trozo']=str_replace('"',""",$resultados[0][$variable]['trozo']); $resultados[0][$variable]['trozo']=str_replace('<',"<",$resultados[0][$variable]['trozo']); $resultados[0][$variable]['trozo']=str_replace('>',">",$resultados[0][$variable]['trozo']); $resultados[0][$variable]['trozo']=substr($resultados[0][$variable]['trozo'],0,70); $variable++;
}
$totalVariable=$variable;
$sql="SELECT * , MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') as Score FROM gap_foro_respuestas WHERE MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') ORDER BY Score DESC";
$cuantosTtoales=$cuantosMsgForo+$cuantasRespForo;
$cadBus=explode(" ",$cadenaBusqueda); if($bandera==0) { $colorFondo="#FFE7D7"; $bandera=1; } else { $colorFondo="#F2D2B7"; $bandera=0; }
$resultados[1][$variable]=array(); $resultados[1][$variable]['asunto']=$row['asunto'];
$resultados[1][$variable]['id']=$row['id'];
$resultados[1][$variable]['user']=$row['user'];
$resultados[1][$variable]['fecha']=$row['fecha'];
$resultados[1][$variable]['idmsg']=$row['id_mensaje'];
$resultados[1][$variable]['fondo']=$colorFondo;
$resultados[1][$variable]['puntuacion']=$row['Score'];
$func = preg_match("/".$cadBus[0]."{1}.+/is",$row['mensaje'],$matches);
$resultados[1][$variable]['trozo']=$matches[0];
$resultados[1][$variable]['trozo']=str_replace("'","'",$resultados[1][$variable]['trozo']); $resultados[1][$variable]['trozo']=str_replace('"',""",$resultados[1][$variable]['trozo']); $resultados[1][$variable]['trozo']=str_replace('<',"<",$resultados[1][$variable]['trozo']); $resultados[1][$variable]['trozo']=str_replace('>',">",$resultados[1][$variable]['trozo']); $resultados[1][$variable]['trozo']=substr($resultados[1][$variable]['trozo'],0,100);
$variable++;
}
$contenidoAMeter="<tr><td width=100% colspan=2 align=center><table width=100% border=0 cellspacing=0 cellpadding=3><tr><td width=33% align=center>Foro</td><td width=33% align=center>Tutoriales</td><td width=33% align=center>Ejercicios</td></tr></table></td></tr><tr><td width=100% colspan=2 style='font-weight:bold;background-color:#565656;color:white;-moz-border-radius:8px 8px 0px 0px;'>".$cuantosTtoales." resultados en el foro<br><font style=font-weight:normal;font-style:italic;color:#E2E2E2;font-size:8.5pt;>Se filtran las coincidencias de respuestas en las coincidencias de mensajes y se ordena por puntuación de coincidencia</td></tr>";
$totalVariable2=$variable;
$j=0;
for($i=0;$i<=$totalVariable2;$i++) {
$puntuacion=number_format($resultados[$j][$i]['puntuacion'],2,'.',',');
if($j==1) {
$sql="SELECT * FROM gap_foro_mensajes WHERE id=".$resultados[1][$i]['idmsg'].";";
$asnt=$filita['asunto'];
}//Sin resultados duplicados en las respuestas y mensajes.
if($j==1) { $identificador=$resultados[$j][$i]['idmsg']; } else { $identificador=$resultados[$j][$i]['id']; }
$contenidoAMeter.="<tr style=background-color:".$resultados[$j][$i]['fondo'].";><td width=75%><a href=javascript:; onclick=\\\"javascript:leerMsgForoDesdeIndex(".$identificador.",'1&marcar=".$cadenaBusqueda."');\\\"><strong>".$resultados[$j][$i]['asunto']."</strong></a></td><td width=25% align=center>".$resultados[$j][$i]['user']."</td></tr><tr style=background-color:".$resultados[$j][$i]['fondo'].";><td width=100% style='border-color:#565656;border-width:0px;border-bottom-width:0px;border-style:solid;color:666666;'>...".$resultados[$j][$i]['trozo']."...</td><td width=25% align=right>".$puntuacion."</td></tr>";
}
if($i==$totalVariable-1) { $j=1; }
}
}
?><script>parent.document.getElementById("capaResultadosBusqueda").innerHTML="<table cellspacing=0 cellpadding=4 border=0 align=center style=-moz-border-radius:8px;border-color:#565656;border-width:1px;border-style:solid;><?echo $contenidoAMeter;?><tr><TD width=100% colspan=2 style='-moz-border-radius:0px 0px 8px 8px;background-color:<?echo $colorFondo;?>'></TD></tr></table>";</script>