Buenas! lo primero de todo saludar a todos ya que soy nuevo por aqui. Dicho esto paso a una duda que tengo con vuestro permiso jeje. Sé html y css, y me he animado a crear un foro con algo de php que estoy empezando a estudiar y algun manual, la cosa es que en la página principal del foro me muestran los mensajes (conectados a su correspondiente base de datos en la que aparecen) pero me salen en blanco. Es decir me sale como si estuvieran pero no puedo leer nada de contenido. ¿Esto a qué puede ser debido? Gracias de antemano y un saludo!
sin ver la/s tabla y el codigo es dificil decirte, de primeras diria solo estas escribiendo el titulo del mensaje pero no el contenido.
Esto es el contenido de foro.php:
<?php
require('configuracion.php');
require('funciones.php');
$id = $_GET["id"];
if(empty($id)) Header("Location: index.php");
$sql = "SELECT id, autor, titulo, mensaje, ";
$sql.= "DATE_FORMAT(fecha, '%d/%m/%Y %H:%i:%s') as enviado FROM foro ";
$sql.= "WHERE id='$id' OR identificador='$id' ORDER BY fecha ASC";
$rs = mysql_query($sql, $con);
include('header.html');
if(mysql_num_rows($rs)>0)
{
include('titulos_post.html');
$template = implode("", file('post.html'));
while($row = mysql_fetch_assoc($rs))
{
$color=($color="#423452");
$row["color"] = $color;
//manipulamos el mensaje
$row["mensaje"] = nl2br($row["mensaje"]);
$row["mensaje"] = parsearTags($row["mensaje"]);
mostrarTemplate($template, $row);
}
}
include('formulario.html');
include('footer.html');
?>
y esto el de index.php
<?php
require('configuracion.php');
require('funciones.php');
include('header.html');
/* Pedimos todos los temas iniciales (identificador==0)
* y los ordenamos por ult_respuesta */
$sql = "SELECT id, autor, titulo, fecha, respuestas, ult_respuesta ";
$sql.= "FROM foro WHERE identificador=0 ORDER BY ult_respuesta DESC";
$rs = mysql_query($sql, $con);
if(mysql_num_rows($rs)>0)
{
// Leemos el contenido de la plantilla de temas
$template = implode("", file("temas.html"));
include('titulos.html');
while($row = mysql_fetch_assoc($rs))
{
$color=($color="#423452");
$row["color"] = $color;
mostrarTemplate($template, $row);
}
}
include('formulario.html');
include('footer.html');
?>
Y lo que hago es rellenar los tres campos en el formulario, luego envío los datos, aparecen correctos en la base de datos pero en la página en si salen en blanco
realmente se ve poco ya que llamas a funciones que no estan ahi. parseartags ¿que devuelve? ves sacando por pantalla a modo debug los campos a ver donde te falla.
Parseartags lo tengo tal que asi dentro de funciones.php:
<?php
function mostrarTemplate($tema, $variables)
{
//var_dump($variables);
extract($variables);
eval("?>".$tema."<?");
}
function parsearTags($mensaje)
{
$mensaje = str_replace("[citar]", "<blockquote><hr width='100%' size='2'>", $mensaje);
$mensaje = str_replace("[/citar]", "<hr width='100%' size='2'></blockquote>", $mensaje);
return $mensaje;
}
?>
Lo demás..pues configuracion.php contiene los parámetros de enlace a base de datos y en los html dudo mucho que esté el problema. Te dejo también el código que tengo en agregar.php que se encarga de postear los mensajes.
<?php
require('funciones.php');
$id = $_GET["id"];
$citar = $_GET["citar"];
$row = array("id" => $id);
if($citar==1)
{
require('configuracion.php');
$sql = "SELECT titulo, mensaje, identificador AS id FROM foro WHERE id='$id'";
$rs = mysql_query($sql, $con);
if(mysql_num_rows($rs)==1) $row = mysql_fetch_assoc($rs);
if($row["id"]==0) $row["id"]=$id;
}
$template = implode("", file('formulario.html'));
include('header.html');
mostrarTemplate($template, $row);
include('footer.html');
?>
Un saludo y gracias :)