Foros del Web » Creando para Internet » Sistemas de gestión de contenidos »

Problemas con mensajes del foro en la home

Estas en el tema de Problemas con mensajes del foro en la home en el foro de Sistemas de gestión de contenidos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/08/2008, 20:52
Avatar de eminem24  
Fecha de Ingreso: julio-2008
Mensajes: 68
Antigüedad: 16 años, 4 meses
Puntos: 0
Exclamación Problemas con mensajes del foro en la home

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!
  #2 (permalink)  
Antiguo 16/08/2008, 21:15
Avatar de eminem24  
Fecha de Ingreso: julio-2008
Mensajes: 68
Antigüedad: 16 años, 4 meses
Puntos: 0
De acuerdo Solucionado!!

Bueno he solucionado eso y otro problema que tenía que era que me mostraba un resultado más del que yo le ponía. Para lo de las caritas le he quitado unas líneas al código y para los resultados mostrados he puesto en 1 la parte $i = 1; (antes estaba a cero)

Así me queda el código ahora:

Código PHP:
<?php
// Edita lo que viene a continuación. Cambia solo lo que hay entre comillas "":

$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 '...';  //nombre de host (suele ser 'localhost')
$dbname '...';  //nombre de la base de datos
$dbuser '...';  //usuario de la base de datos
$dbpasswd '...';  //contraseña ...
$table_prefix 'phpbb_';  // prefijo de la tabla

// Lo que viene ahora no lo toques para nada!!! a no ser que sepas de qué va el tema...
$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 1;
    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)."...";
}

   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);
?>
Si algún experto me puede decir si ahora está bien programado todo. También me interesaría saber si hay que darle algun permiso CHMOD a este archivo, lo digo porque como tiene los datos de la db.

Saludos a todos!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:21.