Crear un foro en PHP y Mysql

by Pablo Rigazzi - 22 Abril 2008

Php logoNota: Este artículo fue publicado originalmente en Junio de 2003 en “Maestros del Web“. Las funciones utilizadas en el código pueden haber sufrido cambios con las nuevas versiones de PHP y MySQL. Agradecemos desde ya cualquier comentario al respecto.

En este tutorial crearemos un foro desde cero aprendiendo a separar la programación del diseño, y modularizando nuestra aplicación para que sea simple de configurar y de adaptar.

La Estructura

Primero y antes que nada, debemos preparar la tabla en la base de datos que contendrá todos los temas de nuestro foro. Lo que esta tabla tendrá, es la información de nuestros mensajes, el autor del mismo, y otros datos que servirán para identificar a que Tema pertenece un mensaje. Pero mejor, veamos la estructura propuesta:

CREATE TABLE `foro` (
`id` int(7) NOT NULL auto_increment,
`autor` varchar(200) NOT NULL default ”,
`titulo` varchar(200) NOT NULL default ”,
`mensaje` text NOT NULL,
`fecha` datetime NOT NULL default ‘0000-00-00 00:00:00’,
`respuestas` int(11) NOT NULL default ‘0’,
`identificador` int(7) NOT NULL default ‘0’,
`ult_respuesta` datetime default NULL,
KEY `id` (`id`)
) TYPE=MyISAM;

Veamos en detalle que campos tendrá nuestra tabla de Foros:


  • id:Será el identificador principal de la tabla. Sirve para diferenciar cada uno de los mensajes.
  • autor: El autor del mensaje.
  • titulo: El titulo que tendrá el mensaje. Si este mensaje es el iniciador de un tema, será el que mostrará en el home del Foro.
  • mensaje: El mensaje en si mismo.
  • fecha: Un campo DATETIME que indicará en que fecha se ha publicado este mensaje.
  • respuestas: Si este mensaje es el iniciador de un tema, aquí se acumularán la cantidad de respuestas que reciba.
  • identificador: Este campo guarda el valor del id del mensaje que se está respondiendo. Si el mensaje es iniciador de un tema, entonces este campo valdrá cero.
  • ult_respuesta: Si el mensaje es iniciador de tema, aqui se actualizará valor de acuerdo con la fecha de la última respuesta que haya recibido. Sirve para poder mantener un orden en los foros.

La sentencia SQL anterior, pueden guardarla en un archivo.sql y correrla en su base de datos desde el phpMyAdmin, o si lo prefieren, pueden ingresarla línea por línea en un cliente de texto de mySQL ( como el mySQL monitor). Una vez que hayan creado la tabla en su base de datos, entonces podemos avanzar al siguiente paso.Antes de ponernos a programar cualquier parte del foro, vamos a encargarnos de hacer un pequeño script que realice una tarea que vamos a repetir mucho, y que es conectarnos a la base de datos. Este script lo incluiremos en cada página en la que tengamos que acceder a la base de datos:

Ejemplo de la pagina de configuracion.php

<?php
$bd_host = “localhost”;
color=”#008000″>$bd_usuario = “user”;
$bd_password = “password”;
$bd_base = “nuestra_bd”;
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
?>

Cómo vemos, no hay gran ciencia en este script, tan solo unas variables conteniendo la configuración de nuestra base de datos, y el código mínimo y necesario para conectarnos y guardar el recurso de conexión en una variable $con que luego utilizaremos cuando hagamos nuestras consultas.

Next 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