Hola amigos, hace un rato he añadido un código a mi web para mostrar los últimos mensajes del foro en la home. To do funcionaba bien hasta que he escrito un mensaje nuevo en el foro. He vuelto a la web y mostraba un error(haciendo visible parte del código html) He ido al mensaje del foro y he mirado justo en el punto donde comenzaba el error en la web y era por un emoticono que había añadido. Entonces si se escribe un emoticono en las primeras palabras del mensaje da ese error. Pero en el código parece que solo hace referencia al título del mensaje y no al cuerpo.
Como puedo solucionar esto? Este es el código:
Código PHP:
<?php
$directorio = "/foro"; //Carpeta donde esta situado el foro.
$mostrar = "10"; //Número de mensajes a mostrar.
$caracteres = "50"; //Caracteres que se mostrarán de cada línea.
$dbhost = 'localhost'; //nombre de host (suele ser 'localhost')
$dbname = 'mi base'; //nombre de la base de datos
$dbuser = 'mi nick'; //usuario de la base de datos
$dbpasswd = 'mi password'; //contraseña ...
$table_prefix = 'phpbb_'; // prefijo de la tabla
$conexion = mysql_connect($dbhost,$dbuser,$dbpasswd);
mysql_select_db($dbname,$conexion);
$consulta = "select * from ".$table_prefix."posts order by post_time desc";
$resultado = mysql_query($consulta);
$i = 0;
echo "<table width=100% bgcolor=#FFFFFF><tr><td colspan=2></td></tr>";
while ($rows = mysql_fetch_array($resultado)) {
if ($i <= $mostrar) {
$consulta1 = "select * from ".$table_prefix."forums where forum_id='$rows[forum_id]'";
$resultado1 = mysql_query($consulta1);
$datosf = mysql_fetch_array($resultado1);
$consulta2 = "select * from ".$table_prefix."users where user_id='$rows[poster_id]'";
$resultado2 = mysql_query($consulta2);
$datosu = mysql_fetch_array($resultado2);
$consulta3 = "select * from ".$table_prefix."topics where topic_id='$rows[topic_id]'";
$resultado3 = mysql_query($consulta3);
$datost = mysql_fetch_array($resultado3);
if (strlen($datost[topic_title]) > $caracteres) {
$datost[topic_title] = substr($datost[topic_title],0,20)."...";
}
$consulta6 = "select * from ".$table_prefix."posts where post_id='$rows[post_id]'";
$resultado6 = mysql_query($consulta6);
$datosy = mysql_fetch_array($resultado6);
{
$datosy[post_text] = preg_replace("(\[.+?\])is",'',$datosy[post_text]);
}
{
$datosy[post_text] = substr($datosy[post_text],0,150)."...";
}
echo "<tr><td><font size=0><a href=\"$directorio/viewtopic.php?t=$rows[topic_id]\" title=\"$datosy[post_text]\" class=\"enlaces-dos\">$datost[topic_title]</a></font><font face=arial color=#888888 size=0>›› en <b>$datosf[forum_name]</b> por <b>$datosu[username]</b></font></td></tr>";
$i++;
}
}
echo "<tr><td colspan=2 id=subnav name=subnav><a href=$directorio/index.php><font size=0><br></font></a></td></tr></table>";
mysql_free_result($resultado);
mysql_close($conexion);
?>
Haber si alguien me puede dar una solucion, gracias anticipadas!
Saludos a todos!