He pintado esto y nada:
Código PHP:
Ver original$sql="SELECT * FROM(
SELECT * , MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') as Score FROM gap_foro_mensajes WHERE MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda')
UNION ALL
SELECT * , MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda') as Score FROM gap_foro_respuestas WHERE MATCH(asunto, mensaje) AGAINST ('$cadenaBusqueda')
) 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 originalinclude("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'];
$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]['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,70);
$variable++;
}
$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>";
$totalVariable2=$variable;
$j=0;
for($i=0;$i<=$totalVariable2;$i++) {
$puntuacion=number_format($resultados[$j][$i]['puntuacion'],2,'.',',');
$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>";
if($i==$totalVariable-1) { $j=1; }
}
}
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?