Desarrollo de un Foro..

Hola que tal..
Descargue el código del desarrollo de un foro... Www.forosdelweb.com y lo deseo adaptar a mis necesidades.. Pero pocoa poco.. El primer inconveniente es: que al insertar nueva respuesta se agregan sin medir un limite de mensajes mostrados...
Por ejemplo.. Deseo que se muestren cada 10 mensajes.. Insertando obviamente unos enlaces para los otros mensajes (en caso de haberlos
)
Algo así..
1 2 3 4 5 ....
Espero me puedas ayudar.. Gracias...

1 respuesta

Respuesta
1
La idea es la siguiente:
<?php
// Calcula cuántos números tienes que mostrar a partir del total de respuestas dividido por 10, y si salen decimales coge el entero siguiente. Almacenalo en $numTotalMsj. Esto podría ser una consulta del tipo "SELECT COUNT(*) FROM respuestas"
$numEnlace = $_GET['num'];
if( $numEnlace < 1 ) {
$numEnlace = 1;
}
$mensajeInicio = ($numEnlace * 10)-10
// Consulta a la base de datos para obtener los mensajes del mensajeInicio hasta (mensajeInicio+10). Esta consulta depende de cómo tengas la base de datos.
// Sería algo parecido a: "SELECT * FROM Respuestas LIKE $mensajeInicio, 10"
// Mostrar esos mensajes con el formato adecuado.
// Por último la lista de números:
for( i = 1; i++, i<= $numTotalMsj) {
echo "<a href='mostrarmensajes.php?num=$i'> $i </a>";
}
?>
Mostrarmensajes.php sería la misma página que contiene esa parte de código. El esquema básico sería ese. Tienes que completarlo y ajustarlo a tu código y usando tu base de datos.
Pruébalo y me comentas. Si tienes alguna duda o te encuentras con algún problema me lo dices.
Gracias por la respuesta..
Mi bd tiene la siguiente estructura:
Id int(7) autoincrement
Autor varchar(200)
Titulo varchar(200)
Mensaje text
fecha datetime
identificador int(7)
ult_respuesta datetime
Solamente hay una sola tabla... osea que solamente puede haber un foro: por ejemplo foro de consultas, que tendrá todos los temas relacionados a consultas, la idea obviamente es tener subforos, pero eso más adelante...
para que te deas una idea como esta compuesto las paginas php, y htm:
www.iespana.es/oarc19/foro.zip
el archivo foro.php es que me muestra los mensajes:
aqui su codigo:
<?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==""?"#5b69a6":"");
$row["color"] = $color;
//manipulamos el mensaje
$row["mensaje"] = nl2br($row["mensaje"]);
$row["mensaje"] = parsearTags($row["mensaje"]);
mostrarTemplate($template, $row);
}
}
include('footer.html');
?>
configuracion.php simplemente es la conexion con la base de datos.
y funciones.php es el sgte cxodigo:
<?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;
}
?>
Viendo esto, al archivo funciones.php es al que se tiene que tocar, ¿verdad?..
Y como iría aproximadamente el código.. y que campos tendría que adicionar, etc.
Muchísimas gracias... y espero tu respuesta.. que me es urgente..
Nota.- Disculpa pero recién estoy ingresando al mundo de PHP, y me encanta... y deseo aprender todo lo necesario..
Gracias nuevamente..
Para tocar funciones.php deberías crear una nueva función que mostrase páginas completas de 10 mensajes.
Es más sencillo modificar foro.php. Sería un código parecido al siguiente:
<?php
require('configuracion.php');
require('funciones.php');
$id = $_GET["id"];
if(empty($id)) Header("Location: index.php");
$numEnlace = $_GET["num"];
if ($numEnlace < 1) {
$numEnlace = 1;
}
$numMensajes = 10
$primero = ($numEnlace * $numMensajes) - $numMensajes;
$sql = "SELECT * FROM foro";
$rs = mysql_query($sql, $con);
$numTotalMsj = mysql_num_rows($rs);
$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' ";
$sql.= "LIMIT $primero, $numMensajes 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==""?"#5b69a6":"");
$row["color"] = $color;
//manipulamos el mensaje
$row["mensaje"] = nl2br($row["mensaje"]);
$row["mensaje"] = parsearTags($row["mensaje"]);
mostrarTemplate($template, $row);
}
for( $i = 1; $i ++; $i <= $numTotalMsj) {
echo "<a href='foro.php?num=$i'> $i </a>";
}
}
include('footer.html');
?>
Por cierto, en la siguiente página web tienes un código de ejemplo que también te puede ayudar.
http://programacion.com/php/codigo/34/

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas