Maestros del Web


Estás en Inicio / Editorial / Desarrollo Web

17.06.2003

Crear un foro en PHP y Mysql

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 href="http://phpmyadmin.sourceforge.net/">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";
$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.

Los Templates

Antes de dar un paso más en la explicación, quiero hacerles unos comentarios
respecto al "simple" sistemita de templates que utilizaremos en el foro. Primero,
para aquellos que no sepan que es un Template, les recomiendo que lean los artículos
de href="http://www.zonaphp.com/index.php?modulo=articulo&accion=leer&id=9">Nok y de href="http://www.zonaphp.com/index.php?modulo=articulo&accion=leer&id=16">Luigi en nuestra sección de Templates de href="http://www.zonaphp.com/">Zonaphp.com,
por lo menos para que tomen una idea de que son y para que sirven.

Ahora, mi idea al utilizar templates, fue la de que los usuarios, pudieran modificar
a su gusto el aspecto del foro, sin por ello tener que tocar el código de la
aplicación. Esto es algo que el tutorial anterior no tenía en cuenta e incluía
todo el código HTML de salida dentro del código mismo del foro, lo cual no es
siempre recomendable. Lo que haremos en este caso es utilizar archivos .html
que dentro contendrán solo diseño ( o sea, código HTML ) y en los lugares en
los que deseemos colocar contenido "dinámico", utilizaremos el formato simple
para mostrar el contenido de variables, esto es : <?=$variable?>.

Para "interpretar" un template, primero lo leemos en memoria utilizando
la función file() y luego utilizaremos una
simple función a la que le pasaremos como parámetro el template y las variables
que hay que reemplazar. Para muestra, basta un botón:

Ejemplo de la pagina de ejemplo.html

Nombre: <b><?=$nombre?></b><br>
Edad : <b><?=$edad?></b><br>
Domicilio : <?=$domicilio?>
<hr>

Ejemplo de la pagina de ejemplo.php

<?php
function mostrarTemplate($tema, $variables)
{
    //var_dump($variables);
    extract($variables);
    eval("?>".$tema."<?");
}

$agenda = array(
    "0" => array("nombre"=>"Marcelo", "edad"=>"25", "domicilio"=>"VeraCRuz 342"),
    "1" => array("nombre"=>"Alejandra", "edad"=>"18", "domicilio"=>"Los Olmos 67"),
    "2" => array("nombre"=>"Micaela", "edad"=>"23", "domicilio"=>"Prof. Mariño 8")
);
$tpl = implode("", file("ejemplo.html"));
foreach($agenda as $registro)
{
    mostrarTemplate($tpl, $registro);
}
?>

Aquí vemos como, partiendo de los datos que tenemos en
un array, los mostramos basándonos en un simple template. La función mostrarTemplate toma como parámetros el contenido del template y un array asociativo con los
valores a reemplazar. La función de PHP extract() se encarga de pasar estos valores al ámbito en el que se llama la función, en
este caso, el ámbito de la función. Por lo que si tenemos un arreglo del tipo $a = array("clave" => "valor"), al ejecutar extract($a), entonces pasaremos a tener
una variable disponible, de nombre $variable y con "valor" como contenido. Luego, la función eval() se encarga del resto, o sea, de ejecutar todo el código (el del Template) que
se le pasa como parámetro.

Algunos se preguntarán, porqué no hacemos simplemente un "include"
? La respuesta es muy siemple. Eficiencia. La función include implica un acceso
a disco, lo cual la hace bastante "costosa" en términos de eficiencia. Así que
leyendo el template 1 sola vez en memoria, y luego utilizándolo varias veces,
hacemos un mejor uso de los recursos.

Teniendo estos temas en cuenta, es que podemos seguir ahora con el desarrollo
el Foro.

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.

Participar es la Base

El ahorro es la base de la fortuna, suelen decir, y esto se aplica a casi todo.
Así que, haciendo caso al dicho, podemos utilizar el MISMO formulario para crear
un nuevo tema y para contestar un tema en particular. Esto lo vamos a lograr,
pasando una variable por el URL, indicando que estamos citando un mensaje anterior,
sacando de la base de datos el mensaje que citaremos, y completando el formulario
con esos datos. Si la variable no está presente, entonces no hacemos nada y
mostramos el formulario.

Ejemplo de la pagina de respuesta.php

<?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 “;
    $sql.= “FROM foro WHERE id=’$id’”;
    $rs = mysql_query($sql, $con);
    if(mysql_num_rows($rs)==1) $row = mysql_fetch_assoc($rs);
    $row["titulo"] = “Re: “.$row["titulo"];
    $row["mensaje"] = “[citar]“.$row["mensaje"].”[/citar]“;
    if($row["id"]==0) $row["id"]=$id;
}
$template = implode(”", file(’formulario.html’));
include(’header.html’);
mostrarTemplate($template, $row);
include(’footer.html’);
?>

En el script vemos como primero capturamos de la URL,
las variables $id y $citar,
y si ésta última es igual a 1, entonces consultamos en la base de datos toda
la información del tema que estamos citando, para agregarlo en el arreglo $row,
que luego será pasado al template. Noten como al titulo del mensaje, le anteponemos
la cadena "Re:", indicando que es una respuesta, y como al cuerpo del mensaje,
si estamos citando, lo rodeamos por un tag [citar] y [/citar]. Esto lo veremos más adelante.

Ejemplo de la pagina de formulario.html

<table width="90%" border="0" cellspacing="2" cellpadding="2">
<form name="f" action="agregar.php" method="post">
    <input type="hidden" name="identificador" value="<?=$id?>">
    <tr>
      <td width="30%" align="right">Autor </td>
      <td><input type="text" name="autor"></td>
    </tr>
    <tr>
      <td width="30%" align="right">Titulo</td>
      <td><input type="text" name="titulo" value="<?=$titulo?>"></td>
    </tr>
    <tr>
      <td width="30%" align="right">Mensaje</td>
      <td><textarea name="mensaje" cols="50" rows="5"><?=$mensaje?></textarea></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><input type="submit" name="Submit" value="Enviar Mensaje"></td>
    </tr>
  </form>
</table>

Aquí vemos como colocamos las variables dentro
de los atributos "value" de los inputs y el textarea. También podemos ver como
tenemos un campo escondido, llamado "identificador", que solo tendrá un valor
asignado, cuando estemos respondiendo a un mensaje, pero que no existirá cuando
sea un mensaje nuevo. Solo queda ver el script que se encarga de grabar el mensaje
en la base de datos, agregar.php.

Ejemplo de la pagina de agregar.php

<?php
require('configuracion.php');
$autor = $_POST["autor"];
$titulo = $_POST["titulo"];
$mensaje = $_POST["mensaje"];
$ident = $_POST["identificador"];

//Hacemos algunas validaciones
if(empty($autor)) $autor = “Anónimo”;
if(empty($titulo)) $titulo = “Sin título”;
//Evitamos que el usuario ingrese HTML
$mensaje = htmlentities($mensaje);

// Grabamos el mensaje en la base.
$sql = “INSERT INTO foro (autor, titulo, mensaje, identificador, fecha, ult_respuesta) “;
$sql.= “VALUES (’$autor’,'$titulo’,'$mensaje’,'$ident’,NOW(),NOW())”;
$rs = mysql_query($sql, $con) or die(”Error al grabar un mensaje: “.mysql_error);
$ult_id = mysql_insert_id($con);

/* si es un mensaje en respuesta a otro
   actualizamos los datos */
if(!empty($ident))
{
    $sql = “UPDATE foro SET respuestas=respuestas+1, ult_respuesta=NOW()”;
    $sql.= ” WHERE id = ‘$ident’”;
    $rs = mysql_query($sql, $con);
    Header(”Location: foro.php?id=$ident#$ult_id”);
    exit();
}
Header(”Location: index.php”);
?>

En este script, luego de tomar las variables desde el
formulario (con el método POST), primero verificamos que exista un nombre de
autor y el título del mensaje, caso contrario le asignamos un valor por defecto.
También utilizamos la función de PHP htmlentities() para convertir todos los caracteres especiales ( >, <, ", &, etc )
en sus respectivas entidades HTML ( &gt;, &lt;, &quote;, &amp;).
Con esto evitamos que un usuario ingrese código HTML en nuestro Foro (con la
respectiva vulnerabilidad que este implica).

A continuación, grabamos el mensaje en la base, y obtenemos, mediante la función mysql_insert_id(), el último id autoincremental
que le corresponde a este registro. ¿Para qué? Simple. Si este mensaje que acabamos
de grabar es el primero del tema, no necesitamos hacer nada, pero si es un mensaje
en respuesta a otro ( esto lo averiguamos preguntando por el valor de $identificador),
entonces tenemos que actualizar ese primer mensaje, indicando que tiene una
respuesta más, y cambiando la fecha y hora del último mensaje. De esa manera,
nos aseguramos que tenemos bien ordenado el foro, con los temas con nuevos mensajes
primero. Finalmente, dependiendo del caso, redirigimos al usuario al home del
foro, o a la respuesta que acaba de ingresar.

Miles de posibilidades

Ya solo nos queda un último paso, y es el de crear la página que mostrara un
tema y todas las respuestas que haya en él. Para ello, vemos como en el home
del foro, llamamos a un script foro.php y le pasamos el id del tema que queremos ver. Luego, solo tenemos que obtener
de la base el o los temas, en los que el id sea igual al que pasamos, o que
el identificador (el campo que indica que ese mensaje es en respuesta a cierto
tema) sea igual al identificador, los ordenamos por fecha y listo, foro al dente.

En este caso, el template que utilizaremos para mostrar cada uno de los mensajes,
será una tabla con todos los datos necesarios: el autor del mensaje, el título,
la fecha del mensaje, el mensaje en si mismo. Pero también agregaremos dos detalles.
Primero, un link hacia el formulario que creamos antes, de modo que un usuario
pueda citar un mensaje en particular, y segundo, un Anchor (o Ancla) para que
al responder a un mensaje, se pueda acceder directamente al mismo por su id
en la base de datos.

Ejemplo de la pagina de post.html

<table width="90%" border="0" align="center" cellpadding="2" cellspacing="2">
	<tr bgcolor="<?=$color?>">
		<td width="25%" valign="top">
		<b><a name="<?=$id?>"><?=$autor?></a></b><br>
		<font size="-2">Enviado el : <?=$enviado?></font>
		</td>
		<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><strong><font size="-1">
<?=$titulo?>
</font></strong> </td>
<td width="10%" align="right"> [ <a href="respuesta.php?id=<?=$id?>&citar=1">CITAR</a> ]</td>
</tr>
</table>
<hr align=”center” width=”100%” size=”2″ noshade>
<?=$mensaje?></td>
</tr>
<tr>
<td colspan=”2″ height=”5″></td>
</tr>
</table>

Ahora, veamos el código PHP que utilizaremos para "parsear" este template:

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

Como siempre, incluimos la conexión a la base de
datos, el archivo de funciones y validamos de que exista la variable $id,
ya que de lo contrario, nada podríamos hacer y nuestro foro fallaría en el Query.
Hablando del Query, podemos ver como utilizamos la función de mySQL DATE_FORMAT() para convertir el formato por defecto del tipo datetime (’AAAA-MM-DD hh:mm:ss’) en algo que sea más común para nuestro idioma (’DD/MM/AAAA
hh:mm:ss’). Si quieren más información sobre esta función, pueden visitar y
consultar el manual de
mySQL
.

Lo más destacado en este script que podemos ver, son dos transformaciones que
le hacemos al mensaje, antes de enviarlo al template. Como vemos, primero utilizamos
la función de PHP nl2br(), que convierte
todos los saltos de linea, en tags <br />,
de esa manera, los saltos que un usuario ingrese en el textarea, serán agregados
correctamente al mostrar el mensaje. Luego, vemos como llamamos a la función parsearTags(). ¿Qué hace esta función? Veamos:

Ejemplo de la pagina de funciones.php

<?php
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;
}
?>

Dentro de esta función, podemos agregar todas las modificaciones
que queremos realizarle al mensaje, antes de mostrarlo en el Foro. En el ejemplo,
vemos como hemos implementado el uso de un tag propio, [citar].
El mismo, dentro de la función, será reemplazado por el código HTML necesario
para destacar el citado de un mensaje, todo esto gracias a la función str_replace() de PHP (más info en el manual). Este es el tag [citar] que se agrega automáticamente, y que notamos cuando respondíamos un mensaje.

Esta función, pueden personalizarla de la manera que deseen, agregando todos
los tags que quieran, para ofrecerles a sus usuarios la libertad de darle formato
a sus mensajes. Podrían, por ejemplo, agregar un nuevo tag, para poner palabras
en negritas, o quizás alguna expresión regular que convierta automáticamente
cualquier URL presente en el mensaje, en un link. Los límites son los de su
imaginación.

Misión Cumplida

Cómo intenté demostrarles en este pequeño artículo, realizar nuestro primer
foro es algo completamente sencillo, si sabemos utilizar mínimamente mySQL y PHP (más bien, algunas funciones más que
útil del PHP). En estas pocas líneas aprendimos:

  • Crear
    una tabla en MySQL para que contenga los datos de nuestro foro.
  • A conectarnos
    a MySQL desde nuestro script PHP.
  • A utilizar
    un sistema de templates casero y simple.
  • La utilización
    de funciones de PHP como: extract(); eval(); implode();
    file(); nl2br(); mysql_insert_id(); str_replace();
  • La utilización
    de la función DATE_FORMAT() de MySQL.
  • Cómo
    trabajar de manera segura con la directiva Register_Globals
    en OFF, tomando uno a uno los contenidos de las variables, desde sus respectivos
    arrays $_POST y $_GET.

Y varios conceptos
más a la hora de programar nuestros scripts. Ahora, este sistema es muy básico,
como simple. Así que de ahora en más, es campo fértil para que Uds. mismos puedan
agregarle todas las características y funcionalidades que deseen, personalizando
el foro a su gusto. Como ideas, puedo mencionarles algunas:

  • Agregar
    más tags para que sus usuarios puedan dar formato a sus mensajes.
  • Incorporarle un
    sistema de usuarios.
  • Contadores de visualizaciones
    de un tema, para hacer un Ranking de temas más vistos.
  • La posibilidad
    de que los usuarios puedan utilizar firmas.

Y seguro que a uds. mismos
se les deben estar ocurriendo otras muchas buenas ideas para mejorar el Foro.
Para aquellos usuarios que sean vagos y no quieran estar un rato con el Copy&Paste,
les dejo el código completo del foro href="http://www.maestrosdelweb.com/editorial/util/foro.zip">para
que lo descarguen. Por lo pronto, espero que hayan disfrutado este tutorial,
y sigan programando simple, seguro, pero ante todo, bonito :D.

Califica esta nota:

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (33 votos, promedio: 4.21 de 5)
Loading ... Loading ...
Pablo Rigazzi

Sobre el autor

Pablo Rigazzi
Creador de varios sitios web, entre ellos WebStudio para Tutoriales Photoshop, ZonaPHP con artículos sobre este lenguaje y RuidoDigital, blog de información tecnológica en general.

Si eres nuevo en Maestros del Web y te agradan nuestras publicaciones, te invitamos a suscribirte a nuestro Feed.

Sindícanos en: Google Reader, Bloglines, My Yahoo o My MSN | ¿Qué es el Feed?

Comentarios

482 comentarios en total.

Páginas: « 1 2 [3] 4 5 »

  1. alugo 31.07.2006 - 13:18 - #

    esta muy buena

  2. edblood 31.07.2006 - 18:00 - #

    que ondas el tutorial y el manejo de separacion de archivos me parece exelente, aunque soy nuevo en esto, lo hice funcionar sin problemas y le dare algun formato con imagenes… (ya que lo tenga les menciono y regreso el codigo)

    pero aun me queda una pregunta….

    1.-quiero ver como le hago para poder borrar mensajes del foro

    2.- me gustaria ver una forma sencilla para que solo X usuario pueda publicar… (no me interesan muntiusuarios y demas) sino que solo usuarios A, B y C puedan publicar en el foro)

    claro que si es lo mismo registrar usuarios pues esta bien…

    si alguien puede apoyarme se los agradeceria enormemente…

    mi mail: omarvelazquez.a@gmail.com

    gracias de antemano, y felicidades al autor por no solo compartir el codigo sino darse a la tarea de explicarlo !

  3. Ruben 06.08.2006 - 10:43 - #

    Bueno yo creo que esta bueno

  4. Ruben 06.08.2006 - 10:43 - #

    Bueno
    yo
    creo
    que
    esta
    bueno

  5. milena 06.08.2006 - 10:59 - #

    oye… gracias por tu ayuda esta super facil el codigo…. gracias

  6. novato 07.08.2006 - 06:41 - #

    la verdad no entendi lo que tengo duda es de como lo instalo en mi web como lo subo con el ftp??o como se instala de verdad gracias a quien pueda aclarar mi duda

  7. sheila 08.08.2006 - 18:00 - #

    Me gustó, me gustó

  8. Webmaster 08.08.2006 - 18:16 - #

    Weno esta muy weno pero..
    falto algo date cuenta lee todo tu tutorial otra ves falta algo da te cuenta

  9. Alfonso 11.08.2006 - 12:21 - #

    Hola, Muy buena la guia…
    Pero tengo una duda:
    en la parte donde dice
    $bd_base = “nuestra_bd”;
    tengo que poner la direccion de la BD? y si es asi como podria saber la direccion?, O solo pongo el nombre de mi Bd y asi sirve?
    Gracias.

  10. No Registrado 11.08.2006 - 13:15 - #

    Hola ya funciono el foro y todo esta muy bien, solo una cosa: solo responde al mismo tema si tiene Re: (nombre del tema) si no, hace otro tema algun modo de solucionarlo?

  11. wacide 11.08.2006 - 20:16 - #

    Como hago un foro sencillo?
    TEngo mi página y quiero ponerle un foro

  12. eze 12.08.2006 - 15:39 - #

    no entiendo nada

  13. No Registrado 12.08.2006 - 19:46 - #

    Miren, Primero que todo tienen que estar seguros de que su foro este conectado a su base de datos, eso es lo primario.
    Luego tienen que asegurarse de que los datos de la tabla de la base de datos y los datos que hay en el codigo php considan, ejemplo: < =?titulo> tiene que coinsidir con algun objeto en la base de datos para que funcione correctamente y por eso aparece el error mysql_rows etc…
    Creo estar seguro de los datos que di, si estan mal corrijanme porfavor.

  14. milena 13.08.2006 - 12:52 - #

    tengo problemas al bajar el codigo de agregar.php en otra plantilla, sale le siguiente error con los header: Warning: Cannot modify header information - headers already sent by (output started at c:\appserv\www\eventos\agregar.php:90)… necesito ayuda… gracias

  15. alexander 14.08.2006 - 17:03 - #

    esta demasiado bueno de verdad tu articulo te felicito

  16. YULIANA 14.08.2006 - 19:37 - #

    hola soy nueva en estos lenguajes, necesito de ayuda urgente ocupo saber como puedo pasar valor de un campo de formulario html a otra pagina html esta segunda pagina tiene diferentes campo de captura pero ocupo dos campos de la primera que se visualize el la segunda. plis ayudenme

  17. mole 16.08.2006 - 14:28 - #

    bueno sinceramente ahy muchos pasos inutiles.. solo es entrar a este sitio y de echo te demoras 30 minutos para hacer tu foro profesional..http://www.creatuforo.com/

    // http://wwwjuegosman.creatuforo.com/index.php //

  18. Devilcito 16.08.2006 - 15:41 - #

    Muy bueno !!

  19. Marihuana 18.08.2006 - 01:55 - #

    bueno mi duda esk yo tengo una pagina que la cree y la tengo andando con el Apache y el php se podria aser un foro con este programa que uso yo? alguien me pude ayudar o pasarme algun link de una guia para crear un foro con estos programas? chaus desde ya gracias

  20. toño 20.08.2006 - 19:23 - #

    buenisimo

  21. Héctor 21.08.2006 - 05:25 - #

    hola, llevo dos dias intentando crear el foro pero me parece complicadisimo, el primer problema que me surge es que no se como subir la base de datos que he creado en mysql a mi espacio web… en fin… a ver si me dais una ayudita, que la agradezco por muy pequeña que sea…

  22. Freddy 23.08.2006 - 21:43 - #

    No hay mas nada que decir. Exlente!

  23. anonimo 25.08.2006 - 08:32 - #

    muy buen articulo se merece un 10 como una casa

  24. Angeles 28.08.2006 - 11:34 - #

    me podrian ayudar estuve ejecutando el codugo del foro pero no me cuenta las respuestas y el marcador aparese en ceros aunque un tema tenga varias respuestas

  25. Adolfo 29.08.2006 - 14:30 - #

    muy buena

  26. Armando Conde 01.09.2006 - 14:38 - #

    esta interesante y facil de usar muchas gracias.

    // http://es.geocities.com/clubskrabajoscomitan/pelicula1.html //

  27. Juan Carlos 01.09.2006 - 14:45 - #

    muy bueno pero, me sale unerror en la parete de crear tema:”Error al grabar un mensaje: mysql_error” , ese es el error me pueden ayudar…

  28. Alfonso812 01.09.2006 - 16:09 - #

    mole;1662944, bueno sinceramente ahy muchos pasos inutiles.. solo es entrar a este sitio y de echo te demoras 30 minutos para hacer tu foro profesional..CREATUFORO.COM

    Si, lo creas en 30 minutos pero es mas valioso que obtengas el conocimiento de hacer algun foro o algo en php tan sencillo que sea, enves de hacer unos clicks y obtienes un foro lleno de publicidad, y ningun conocimiento.

  29. gaston 02.09.2006 - 12:36 - #

    muy bueno, la verdad, te matastes explicando esto. creo q lo unico q le falta es tener un logifn para q puedan escribir..no se…BYE!

  30. charly_22 04.09.2006 - 01:01 - #

    sabes baje tus archivos para la creacion del foro tengo un servidor apache corrirndo en mi maquina y cuando quiero abrir los archivos me pregunta que si quiero bajar la pagina es de cir no puedo abrir los archivos ojala y mepuedas ayudar a contruir un foro en php de verdad me urge y te lo agradeceria mucho.

  31. jam1138 04.09.2006 - 05:54 - #

    charly_22;1685263,
    cuando quiero abrir los archivos me pregunta que si quiero bajar la pagina

    El problema es con Apache… ó no esta corriendo (asegurate, que el hecho de que este “abierto” no significa que este ejecutándose) ó no esta bien configurado (para interpretar PHP) ó simplemente no estas abriendo los archivos desde el localhost (http://localhost/tu_archivo.php)… adivinar es complicado, ayuda a que se te ayude.

    Saluton :adios:

  32. OX 04.09.2006 - 11:38 - #

    Excelente…….he despejado algunas dudas para la creacion de foros con php =)

  33. andres felipe osorio agud 05.09.2006 - 12:04 - #

    gracias por este material, lo voy a estudiar, porque no tenia como iniciar mi foro de discusion, espero contar con usted para seguir trabajando gracias nuevamnete….

  34. luis 05.09.2006 - 22:25 - #

    ya lo baje lo voy a estudiar lo veo muy interesante te doy mi comentario en una semana
    gracias

  35. isra 07.09.2006 - 12:32 - #

    esta muy bueno.. cheeee

  36. Ada 07.09.2006 - 15:44 - #

    Hellous…. hallé esta discusión buscando aprender a crear un foro en un página web cualquiera!! ejemplo… una página creada en es.geocities.com! y pues… no entiendo nada. Sé de códigos html pero “php y mysql” no lo entiendo… dónde puedo aprender sobre este tema?

  37. Ada 07.09.2006 - 15:47 - #

    en sí, lo que quiero hacer es crear una página sencilla para invitar a una sección de lógica matemática a aportar ideas sobre “x” equis discusión. Soy docente y quisiera que me ayuden porfis. Gracias de antemano. Mi msn es corchea84@hotmail.com, si alguien me habla unos minutos se lo agradezco!!!

  38. andres felipe osorio 08.09.2006 - 13:00 - #

    $row["titulo"] = “Re: “.$row["titulo"];
    como hago para que me aparezca el Re: cuando hay una respuesta; en el codigo que ven hay no sucede nada… e intentado de varias forma y no me aparece nada.. seria tan amable de deserme que hago……….

  39. Markos 08.09.2006 - 15:22 - #

    Muy bueno che…Creo que nos ayuda mucho a los que sabemos poko…xD..Salu2

  40. luis carlos 09.09.2006 - 18:31 - #

    cuando lo ejecuto me sale un error, por que no tengo idea de donde sale header.html

  41. jebotero 11.09.2006 - 08:48 - #

    Gracias, excelente articulo

  42. carlos 13.09.2006 - 22:40 - #

    muchas gracias!!!

  43. chrizxtian 14.09.2006 - 07:16 - #

    y a todo esto a donde subo los archivos ??? miren tengo un amigo ke los sube -:S toy perdido

  44. JCZR 14.09.2006 - 23:55 - #

    ESTA MUY BUENO EL TUTORIAL

  45. Norberto Planchart 15.09.2006 - 04:53 - #

    Super articulo !!! Todo muy claro. gracias amigo.

  46. anonimo 17.09.2006 - 13:30 - #

    esta muy bien, pero seria muy bueno añadir un codigo de registro de usuarios. ¿si puede ser podrian postearlo?

  47. Ernesto 18.09.2006 - 00:03 - #

    No lo he leido per olo hare por que parece que esta chido =D

  48. AMISS 18.09.2006 - 08:09 - #

    lo sinto pero eske estoy muy mensa y no entendi nada….donde esta todo eso…en donde lo pongo…exactamente ke ago???

  49. nachito 19.09.2006 - 12:22 - #

    interesantisimo

  50. dnl 20.09.2006 - 02:35 - #

    como hao si quiero que el foro tenga usuarios?

  51. kelvin medina 21.09.2006 - 11:51 - #

    exelente tutorial y bien explicado
    visita http://www.phpparatodos.com
    gracias

  52. No Registrado 21.09.2006 - 15:14 - #

    DKNUS;459740, BUENA

    excelente!!!

  53. Sinedra 21.09.2006 - 19:39 - #

    Exelente Tutorial

  54. Baldani 23.09.2006 - 10:41 - #

    Buenas, soy bastante novato en esto y al descargar la versión en ZIP y publicarla en mi web, no sé cómo enlazarla. Lo he intentado con el fichero index.php y me aparece en la página la secuencia de comandos… ¿puede ser que mi servidor de la página no soporte php?. Gracias.

  55. Xunto 24.09.2006 - 13:16 - #

    Estos son los artículos que valen la pena. Bien explicado y además un funcionamiento práctico excelente

  56. yaro.hamilton 25.09.2006 - 23:41 - #

    En una palabra puedo resumir que este sitio es: exelente.
    Gracias.
    Saludos. yo

  57. Dr_Terrory 26.09.2006 - 13:57 - #

    No lo he leido pero es lo nesecitaba que estaba buscando, me pregunto si hay mas?

  58. CESAR 28.09.2006 - 11:46 - #

    TA WENO

  59. David 28.09.2006 - 16:54 - #

    No me sirvio el foro quien sabe que fue, si segui cada uno de los pasos, pero gracias..

  60. oscar 29.09.2006 - 15:19 - #

    al pareser esta te servira mucho fabo

  61. Juan Francisco 29.09.2006 - 18:15 - #

    Gracias, excelete! La verdad es que no sé nada de PHP, pero es bien sencillo implementarlo. Solo deben de contar con mySQL en el servidor web.

  62. Lidia 03.10.2006 - 19:52 - #

    Esta re-bueno la pagina, sos de gran ayuda, con este tipo de informacion me sirvio de mucho com crear un chat foro.

  63. Pepito Gomez 04.10.2006 - 15:53 - #

    Muy bueno como tutorial y como aprendizaje pero por favor no lo usen en servidores en produccion ya que es vulnerable a inyeccion sql.
    Si quieres que te lo hackeen colocalo en tu sitio

  64. hipogrifo 05.10.2006 - 19:36 - #

    kreo ke deberia facilitarse mas la creacion del foro porke la mayoria no sabe programacion!”!

  65. Loro 07.10.2006 - 23:32 - #

    muy bueno tu articulo te felicito yo tenia flojerilla de idear un foro solo asi que de aqui me base

  66. fernando 09.10.2006 - 13:23 - #

    Me paresio muy bueno, con la exepcion de que la base de datos no es muy buena ya que es rebundante. pero no importa. creo que el objetivo fue la sensillez. Gracias por tu artculo

  67. enrique 09.10.2006 - 15:36 - #

    esta bravaza el tuto espero que publiken cosas asi mas seguido

  68. fede fuster 10.10.2006 - 14:32 - #

    hola amigos lo he probado introduciendo lo dado en el dreamweaver y no me funciona.

    ayudaaaaaaaa

    fedefuster@gmail.com

    gracias

  69. feico 10.10.2006 - 15:59 - #

    podeis explicar un poco mas

    gracias

  70. FIDEL ANGEL 11.10.2006 - 10:01 - #

    aui esta mi pagina pero no puedo obtener los datos de la bd y traerlo con formato

    angelitoweb.webhostingratis.com

  71. darkandre 11.10.2006 - 14:51 - #

    excelente bien explicado

  72. No Registrado 18.10.2006 - 05:56 - #

    Muy bueno el tutorial, pero tengo una duda, se generan varios ficheros, pero… en que directorio de la web se guardan.
    Espero que puedan responderme

  73. feico 23.10.2006 - 11:43 - #

    Hola alguien me podria explicar mas claramente todo.

    No se nada de php mi Mysql, pero necesito hacer un foro para mi pagina web que es pa un proyecto.

    Alguien me podria ayudar

    fefusib@epsg.upv.es

    XFAAAAAAAAAAAAAAA

  74. HARRY 24.10.2006 - 11:50 - #

    QUE BUENO ESTA EL ARTICULO, ESPERO SUBAS MAS

  75. Lestat 25.10.2006 - 07:07 - #

    La verdad estos script para el foro me han salvado la vida a dos dias de presentar mi final en php… sobre un foro.
    Le estare eternamente agradecido al autor

  76. Web-on 25.10.2006 - 10:16 - #

    exelente gracias espero que tengas mas ayuda pratodos loske tenemos muchas dudas

  77. jorge 25.10.2006 - 16:39 - #

    me parece bien

  78. Krezal 26.10.2006 - 07:04 - #

    Realmente bueno siempre busco las cosas por paginas en manuales y este de todos los ke e visto es el mejor con diferencia

  79. lisa 27.10.2006 - 07:16 - #

    hola cree un foro para un proyecto de la escuela y ya creado me pidio el maestro que la fecha se fuera estatica que al momento de subir un comentario este guardara la fecha automaticamente asi como lo haces en este foro te agradeceria me pasaras un tip sobre este tema. gracias saludos

  80. diego 27.10.2006 - 08:27 - #

    muy bueno recien estoy empezando gracias

  81. Fabian Ferney Alvarez 27.10.2006 - 13:54 - #

    Compañero me parece excelente su sitio web. muy bien explicado todo y con mucho cuidado, creame que pocos lugares en el ciber son tan amenos para estudiar y aprender.

    Un caluroso y afectivo abrazo y siga para delante con este tipo de proyectos educativos.

  82. MorelosBkpets 28.10.2006 - 19:21 - #

    Muy buen trabajo, me agrado ver ese pequeño tuto para aprender mas sobre como funciona un foro, admito que aun sigo trabajando en el ejemplo de forma practica en mi compu, soy un webmaster y pos ya vez, aqui ando conociendo cosas nuevas con las que quiero comenzar a trabajar suerte siguele y sorprendeme… bkpets_2s@yahoo.com.mx

    // http://mx.geocities.com/bkpets_2sc/ //

  83. pichonservis 30.10.2006 - 18:31 - #

    bueno amigo que sorprendete idea ..me ayudo de mucho..suerte y mil gracias

  84. edgar 31.10.2006 - 10:03 - #

    Realmete esta muy bueno el tutorial gracias

  85. Edson 31.10.2006 - 14:56 - #

    ta muy bueno y sencillo pero amigos como le ago si mi servidor es iespana

  86. edson 31.10.2006 - 15:34 - #

    amigos me sale este error::
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/sites/1/iespana.es/e/d/edson.coyla/site/index.php on line 10
    por favor me podrian ayudar

  87. lala 04.11.2006 - 18:49 - #

    haber q sale

  88. pepe 06.11.2006 - 05:20 - #

    ¿donde se guarda cada fichero?

  89. emmanuel 06.11.2006 - 08:52 - #

    yo me conecto por ftp como subo el php ??

  90. Aridnix 06.11.2006 - 16:44 - #

    ME encanto este pequeño foro pues gracias, esta buenisimo y muy sencillo se puede ir agregando cosas, cuidense muchachos y a seguir con PHP

  91. TheWizardhn 07.11.2006 - 08:08 - #

    Muy bueno, sencillo pero funcional es la parte donde las cosas funcionan, felicidades y gracias por aportar al conocimiento de todos

  92. andrei 07.11.2006 - 14:10 - #

    Es precisamente lo que estoy intentando hacer. Es una magnífica referencia.
    Gracias.

  93. SyoShMAN 08.11.2006 - 13:10 - #

    Hola, el tutorial esta exelente. Solo tengo un problemita: Cuando agrego un nuevo autor, titulo y mensaje me lo muestra en blanco en la pagina html. Pero en la Base de Datos SQL si los agrega. Alguien me podría ayudar?

  94. Samuel 08.11.2006 - 14:39 - #

    wena compadre, super bien explicado, aprendi un poco de php y de MySql a la vez.

    10x a lot!!!

    // http://www.clanassassin.cl.kz //

  95. Antony 08.11.2006 - 22:33 - #

    Muy bueno, soy diseñador web y estoy aprendiendo a programaar en PHP, el articulo esta muy bien explicado, sigan haci, excelente.

  96. EDU 13.11.2006 - 13:39 - #

    me gusta, felciitaciones

  97. Luis Ortíz 13.11.2006 - 17:06 - #

    me agrado tu forma de expilcar lo voy a utilizar en mi web

  98. roman 14.11.2006 - 21:52 - #

    Webstudio, hola , sabes hice todo lo que indicas, disculpa, pero recien estoy en esto, la consulta es: cuando intento ejecutar para hacer la prueba a cada uno de los scrips diste no puedo hacer que me muestre algo., por fa me puedes ayudar que hago primero o qeu debo hacer para que se ejecute , Saludos

  99. Rodrigo 19.11.2006 - 15:57 - #

    muchas gracias hermano por la colaboracion, me ayudo demasiado a entender aun mas este rustico pero potente lenguaje de programacion.

  100. joel 19.11.2006 - 19:44 - #

    ESta muy bueno lo baje pero me da un erro porque sera este es el error no megrama
    Error al grabar un mensaje: mysql_error
    que hago mal

Trackbacks

1 trackbacks en total.

  1. Crear un foro con PHP y Mysql
Deja tu Comentario


Maestros del Web se reserva el derecho de moderación de los comentarios. Evita utilizar palabras soeces, ataques directos, descalificativos, insultos, de lo contrario tu comentario será eliminado.


-


Maestros del Web es el punto de encuentro para los entusiastas de la red.

Creative Commons by-nc-sa 3.0 | Política de Privacidad | CMS: Wordpress