Ver Mensaje Individual
  #5 (permalink)  
Antiguo 14/01/2010, 08:48
Avatar de CHuLoSoY
CHuLoSoY
 
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 3 meses
Puntos: 29
He pintado esto y nada:

Código PHP:
Ver original
  1. $sql="SELECT * FROM(
  2. SELECT * , MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') as Score FROM gap_foro_mensajes WHERE MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda')
  3. UNION ALL
  4. SELECT * , MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') as Score FROM gap_foro_respuestas WHERE MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda')
  5. ) AS resultadosCombinados ORDER BY Score DESC";

Simplemente no ofrece resultados, ni siquiera funciona mysql_num_rows

Destacar que corté las líneas para que se vea bien aquí, pero va todo seguido.

Bien, para que te hagas una idea, tengo el código siguiente (lo pongo entero):

Código PHP:
Ver original
  1. include("datos_usuario_db.php");
  2.  
  3.  
  4. $cadenaBusqueda=$_POST['cadenaBusqueda'];
  5. $dondeBuscar=$_POST['dondeBuscar'];
  6. $resultados[0]=array(); //para mensajes foro
  7. $resultados[1]=array(); //para respuestas foro
  8.  
  9. if($dondeBuscar=="todos") {
  10.  
  11.         $conexion=mysql_connect($dbserver,$dbuser,$dbpass);
  12.         mysql_select_db($db,$conexion);
  13.  
  14.         $sql="SELECT * , MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') as Score FROM gap_foro_mensajes WHERE MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda')  ORDER BY Score DESC";
  15.         $result=mysql_query($sql,$conexion);
  16. $cuantosMsgForo=mysql_num_rows($result);
  17. $variable=0;
  18.         while($row=@mysql_fetch_array($result)) {
  19.  
  20.             if($bandera==0) { $colorFondo="#FFE7D7"; $bandera=1; } else { $colorFondo="#F2D2B7"; $bandera=0; }
  21.             $resultados[0][$variable]=array();
  22.             $resultados[0][$variable]['asunto']=$row['asunto'];
  23.             $resultados[0][$variable]['id']=$row['id'];
  24.             $resultados[0][$variable]['user']=$row['user'];
  25.             $resultados[0][$variable]['fondo']=$colorFondo;
  26.             $resultados[0][$variable]['fecha']=$row['fecha'];
  27.             $resultados[0][$variable]['puntuacion']=$row['Score'];
  28.  
  29.             $cadBus=explode(" ",$cadenaBusqueda);
  30.                  $func = preg_match("/".$cadBus[0]."{1}.+/is",$row['mensaje'],$matches);
  31.            
  32.             $resultados[0][$variable]['trozo']=$matches[0];
  33.             $resultados[0][$variable]['trozo']=str_replace("'","'",$resultados[0][$variable]['trozo']);
  34.             $resultados[0][$variable]['trozo']=str_replace('"',""",$resultados[0][$variable]['trozo']);
  35.             $resultados[0][$variable]['trozo']=str_replace('<',"&lt;",$resultados[0][$variable]['trozo']);
  36.             $resultados[0][$variable]['trozo']=str_replace('>',"&gt;",$resultados[0][$variable]['trozo']);
  37.             $resultados[0][$variable]['trozo']=substr($resultados[0][$variable]['trozo'],0,70);
  38.             $variable++;
  39.         }
  40.         @mysql_free_result($result);
  41.         mysql_close($conexion);
  42.  
  43. $totalVariable=$variable;
  44.  
  45.  
  46.  
  47.  
  48.         $conexion=mysql_connect($dbserver,$dbuser,$dbpass);
  49.         mysql_select_db($db,$conexion);
  50.  
  51.         $sql="SELECT * , MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') as Score FROM gap_foro_respuestas WHERE MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda')  ORDER BY Score DESC";
  52.         $result=mysql_query($sql,$conexion);
  53. $cuantasRespForo=mysql_num_rows($result);$variable=0;
  54. $cuantosTtoales=$cuantosMsgForo+$cuantasRespForo;
  55.  
  56.  
  57.         while($row=@mysql_fetch_array($result)) {
  58.  
  59.             $cadBus=explode(" ",$cadenaBusqueda);
  60.             if($bandera==0) { $colorFondo="#FFE7D7"; $bandera=1; } else { $colorFondo="#F2D2B7"; $bandera=0; }
  61.             $resultados[1][$variable]=array();
  62.             $resultados[1][$variable]['asunto']=$row['asunto'];
  63.             $resultados[1][$variable]['id']=$row['id'];
  64.             $resultados[1][$variable]['user']=$row['user'];
  65.             $resultados[1][$variable]['fecha']=$row['fecha'];
  66.             $resultados[1][$variable]['fondo']=$colorFondo;
  67.             $resultados[1][$variable]['puntuacion']=$row['Score'];
  68.                  $func = preg_match("/".$cadBus[0]."{1}.+/is",$row['mensaje'],$matches);
  69.            
  70.             $resultados[1][$variable]['trozo']=$matches[0];
  71.             $resultados[1][$variable]['trozo']=str_replace("'","&apos;",$resultados[1][$variable]['trozo']);
  72.             $resultados[1][$variable]['trozo']=str_replace('"',"&quot;",$resultados[1][$variable]['trozo']);
  73.             $resultados[1][$variable]['trozo']=str_replace('<',"&lt;",$resultados[1][$variable]['trozo']);
  74.             $resultados[1][$variable]['trozo']=str_replace('>',"&gt;",$resultados[1][$variable]['trozo']);
  75.             $resultados[1][$variable]['trozo']=substr($resultados[1][$variable]['trozo'],0,70);
  76.            
  77.            
  78.             $variable++;
  79.    
  80.         }
  81.         @mysql_free_result($result);
  82.         mysql_close($conexion);
  83.  
  84.  
  85. $contenidoAMeter="<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</td></tr>";
  86.  
  87. $totalVariable2=$variable;
  88. $j=0;
  89. for($i=0;$i<=$totalVariable2;$i++) {
  90.  
  91. $puntuacion=number_format($resultados[$j][$i]['puntuacion'],2,'.',',');
  92.  
  93.  
  94.  
  95.     $contenidoAMeter.="<tr style=background-color:".$resultados[$j][$i]['fondo'].";><td width=75%><a href=javascript:; onclick=\\\"javascript:leerMsgForoDesdeIndex(".$resultados[$j][$i]['id'].",'1&marca=".$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>";
  96.  
  97.     if($i==$totalVariable-1) { $j=1; }
  98.  
  99. }
  100.  
  101. }

Es decir, que muestro los mensajes y las respuestas todas seguidas, y respuestas al mismo mensaje se pueden repetir muuuuuucho. Lo que pretendo con la concatenación de tablas en la misma sentencia sql es comparar para ahorrarme esos resultados.

Si no es como yo pienso, ¿alguna idea de cómo se puede hacer?
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.

Última edición por GatorV; 14/01/2010 a las 15:10