Ver Mensaje Individual
  #24 (permalink)  
Antiguo 16/01/2010, 12:27
Avatar de CHuLoSoY
CHuLoSoY
 
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: ayuda con un sitio

Yo mismo estoy haciendo un complejo buscador. Mira, te voy a poner el código que tengo hecho:

Código PHP:
Ver original
  1. <?
  2. include("datos_usuario_db.php");
  3.  
  4.  
  5. $cadenaBusqueda=$_POST['cadenaBusqueda'];
  6. $dondeBuscar=$_POST['dondeBuscar'];
  7. $resultados[0]=array(); //para mensajes foro
  8. $resultados[1]=array(); //para respuestas foro
  9.  
  10. if($dondeBuscar=="todos") {
  11.  
  12.         $conexion=mysql_connect($dbserver,$dbuser,$dbpass);
  13.         mysql_select_db($db,$conexion);
  14.  
  15.         $sql="SELECT * , MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') as Score FROM gap_foro_mensajes WHERE MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda')  ORDER BY Score DESC";
  16.         $result=mysql_query($sql,$conexion);
  17. $cuantosMsgForo=mysql_num_rows($result);
  18. $variable=0;
  19.         while($row=@mysql_fetch_array($result)) {
  20.  
  21.             if($bandera==0) { $colorFondo="#FFE7D7"; $bandera=1; } else { $colorFondo="#F2D2B7"; $bandera=0; }
  22.             $resultados[0][$variable]=array();
  23.             $resultados[0][$variable]['asunto']=$row['asunto'];
  24.             $resultados[0][$variable]['id']=$row['id'];
  25.             $resultados[0][$variable]['user']=$row['user'];
  26.             $resultados[0][$variable]['fondo']=$colorFondo;
  27.             $resultados[0][$variable]['fecha']=$row['fecha'];
  28.             $resultados[0][$variable]['puntuacion']=$row['Score'];
  29.             $resultados[0][$row['asunto']]=$row['id'];
  30.  
  31.             $cadBus=explode(" ",$cadenaBusqueda);
  32.                  $func = preg_match("/".$cadBus[0]."{1}.+/is",$row['mensaje'],$matches);
  33.            
  34.             $resultados[0][$variable]['trozo']=$matches[0];
  35.             $resultados[0][$variable]['trozo']=str_replace("'","&apos;",$resultados[0][$variable]['trozo']);
  36.             $resultados[0][$variable]['trozo']=str_replace('"',"&quot;",$resultados[0][$variable]['trozo']);
  37.             $resultados[0][$variable]['trozo']=str_replace('<',"&lt;",$resultados[0][$variable]['trozo']);
  38.             $resultados[0][$variable]['trozo']=str_replace('>',"&gt;",$resultados[0][$variable]['trozo']);
  39.             $resultados[0][$variable]['trozo']=substr($resultados[0][$variable]['trozo'],0,70);
  40.             $variable++;
  41.         }
  42.         @mysql_free_result($result);
  43.         mysql_close($conexion);
  44.  
  45. $totalVariable=$variable;
  46.  
  47.  
  48.  
  49.  
  50.         $conexion=mysql_connect($dbserver,$dbuser,$dbpass);
  51.         mysql_select_db($db,$conexion);
  52.  
  53.         $sql="SELECT * , MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') as Score FROM gap_foro_respuestas WHERE MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda')  ORDER BY Score DESC";
  54.         $result=mysql_query($sql,$conexion);
  55. $cuantasRespForo=mysql_num_rows($result);$variable=0;
  56. $cuantosTtoales=$cuantosMsgForo+$cuantasRespForo;
  57.  
  58.  
  59.         while($row=@mysql_fetch_array($result)) {
  60.  
  61.             $cadBus=explode(" ",$cadenaBusqueda);
  62.             if($bandera==0) { $colorFondo="#FFE7D7"; $bandera=1; } else { $colorFondo="#F2D2B7"; $bandera=0; }
  63.             $resultados[1][$variable]=array();
  64.             $resultados[1][$variable]['asunto']=$row['asunto'];
  65.             $resultados[1][$variable]['id']=$row['id'];
  66.             $resultados[1][$variable]['user']=$row['user'];
  67.             $resultados[1][$variable]['fecha']=$row['fecha'];
  68.             $resultados[1][$variable]['idmsg']=$row['id_mensaje'];
  69.             $resultados[1][$variable]['fondo']=$colorFondo;
  70.             $resultados[1][$variable]['puntuacion']=$row['Score'];
  71.                  $func = preg_match("/".$cadBus[0]."{1}.+/is",$row['mensaje'],$matches);
  72.            
  73.             $resultados[1][$variable]['trozo']=$matches[0];
  74.             $resultados[1][$variable]['trozo']=str_replace("'","&apos;",$resultados[1][$variable]['trozo']);
  75.             $resultados[1][$variable]['trozo']=str_replace('"',"&quot;",$resultados[1][$variable]['trozo']);
  76.             $resultados[1][$variable]['trozo']=str_replace('<',"&lt;",$resultados[1][$variable]['trozo']);
  77.             $resultados[1][$variable]['trozo']=str_replace('>',"&gt;",$resultados[1][$variable]['trozo']);
  78.             $resultados[1][$variable]['trozo']=substr($resultados[1][$variable]['trozo'],0,100);
  79.            
  80.            
  81.             $variable++;
  82.    
  83.         }
  84.         @mysql_free_result($result);
  85.         mysql_close($conexion);
  86.  
  87.  
  88. $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&oacute;n de coincidencia</td></tr>";
  89.  
  90. $totalVariable2=$variable;
  91. $j=0;
  92. for($i=0;$i<=$totalVariable2;$i++) {
  93.  
  94. $puntuacion=number_format($resultados[$j][$i]['puntuacion'],2,'.',',');
  95.  
  96.     if($j==1) {
  97.         $conexion=mysql_connect($dbserver,$dbuser,$dbpass);
  98.         mysql_select_db($db,$conexion);
  99.  
  100.         $sql="SELECT * FROM gap_foro_mensajes WHERE id=".$resultados[1][$i]['idmsg'].";";
  101.         $result=mysql_query($sql,$conexion);
  102.         $filita=@mysql_fetch_array($result);
  103.        
  104.         $asnt=$filita['asunto'];
  105.         @mysql_free_result($result);
  106.         mysql_close($conexion);
  107.     }//Sin resultados duplicados en las respuestas y mensajes.
  108.     if(array_key_exists($asnt,$resultados[0])) { } else {
  109.  
  110.         if($j==1) { $identificador=$resultados[$j][$i]['idmsg']; } else { $identificador=$resultados[$j][$i]['id']; }
  111.         $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>";
  112.     }
  113.     if($i==$totalVariable-1) { $j=1; }
  114.  
  115. }
  116.  
  117. }
  118.  
  119.  
  120. ?><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>
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.