Crear un foro en PHP y Mysql

by Pablo Rigazzi - 22 Abril 2008

Un Tema por vez

Ya teniendo las bases de nuestro foro, el diseño de la tabla en la base de datos y conociendo como funciona nuestro sistema de templates, podemos comenzar a crear la primera página, en la que mostraremos todos los temas del foro:

Ejemplo de la pagina 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==”"?”#5b69a6″:”");
$row["color"] = $color;
mostrarTemplate($template, $row);
}
}
include(‘footer.html’);
?>

¿Eso es todo? Si, eso es todo. Ahora revisemos paso a paso lo que hace el script. Primero tenemos una serie de requires e includes.

El primero incluye el primer Script que hicimos, que realiza la conexión a la base de datos. El segundo, incluye un archivo.php que contiene funciones importantes del foro, como por ejemplo, mostrarTemplate.

El tercero, incluye un header genérico que utilizaremos para darle a todas nuestras páginas, un diseño similar. Allí podremos colocar un logo del sitio, links importantes, banners, etc.



$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)
{

Aquí lo que hacemos es ejecutar un query en la base de datos, que nos traerá todos los mensajes que son iniciadores de un tema, o sea, cuyo identificador esté en cero. El resto de los mensajes, que sean respuestas a un tema en particular, tendrán en el campo identificador el valor del mensaje al que responden. A estos temas, le pedimos a la base que los ordene por la fecha de última respuesta, de manera descendente, así en nuestro foro, tendremos los mensajes más recientes primero. También realizamos una decisión, solo mostraremos los temas de nuestro Foro si la cantidad de filas recuperadas desde la base, son mayores a 0.

Luego, dentro del While principal del programa, hacemos toda la “magia” :

// Leemos el contenido de la plantilla de temas
$template = implode(“”, file(“temas.html”));
include(‘titulos.html’);
while($row = mysql_fetch_assoc($rs))
{
$color=($color==”"?”#5b69a6″:”");
$row["color"] = $color;
mostrarTemplate($template, $row);
}

Aquí comenzamos a trabajar por primera vez con los templates. Primero leemos el contenido del template en memoria y lo guardamos dentro de la variable $template. También incluimos un archivo, que contiene una fila de la tabla de Temas, con los títulos de las celdas. EL resto ya lo vimos anteriormente, llamando a la función mostrarTemplate mostramos los datos de cada tema.

Finalmente, solo agregamos otro archivo HTML, con el código para cerrar la página y mostrar algún que otro mensaje de Copyright (o lo que queramos poner). Con esto ya tenemos nuestra página inicial del Foro, mostrando los temas que haya. Ahora, vamos a crear el formulario necesario para ingresar nuevos temas o para responder algún tema existente.

Previous pageNext page

4 Comments on “Crear un foro en PHP y Mysql”

  1. Codespanish » Blog Archive » Why you shouldn’t code in Spanish Says:

    [...] Take for example this PHP code from the post “Building a forum in PHP and Mysql”. [...]

  2. Jaime recuerdo Says:

    Hola, gracias para estos consejos que me han servido para crear mi foro gratis en el sitio foroactivo. Ahí, tienen varias versiones de foros phpbb y sobre todo la posibilidad pasar de la versión phpbb2 a 3 o invision sin problema como un bueno webmaster. Además, esta nueva versión tiene muchas opciones gratis como mas de 3000 skin, la posibilidad de cambiar lo CSS y templates, crear perfiles personalizados, chatbox, sistema de reputación…y la ultima es cambiar los foros en blog y viceversa ! saludos

  3. Pablo Matamoros Says:

    No problems, as long as you link back or mention us.

  4. Abrir Correo Says:

    Es interesante lo que dices. Ya te agregué a mi lector de feeds RSS, adios

Leave a Reply