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. doctor antiaging 20.11.2006 - 10:01 - #

    la verdad que esta bastante bueno, aunque ya existen foros programdos, y ahorran el tiempo….

  2. doctor antiaging 20.11.2006 - 10:04 - #

    porque no me aparece mi comentarios en este web y me envia a la pagina foros del web?

  3. A.J 20.11.2006 - 12:29 - #

    Muchas gracias por las molestaias x realizarlo ~,~ *_* 6_9

  4. jose 20.11.2006 - 23:21 - #

    He hecho todo al pie de la letra segun el tutorial y no consiguo que me funcione me da los siguientes errores
    1) Error al grabar un mensaje: Out of range value adjusted for column \’identificador\’ at row 1
    2) Error al grabar un mensaje: Data too long for column \’autor\’ at row 1
    3) Error al grabar un mensaje: Data too long for column \’titulo\’ at row 1
    En que fallo

  5. irian 21.11.2006 - 06:17 - #

    pro k me da este eerror no consigo ver lo k falta…..

    Parse error: parse error, unexpected \’=\’ in C:\\wamp\\www\\ilerian\\forum\\funciones.php(6) : eval()\’d code on line 3

    grx

  6. Edwin 21.11.2006 - 18:20 - #

    aqui yo denuevo, verificando las lineas del error la 46 y 47 me llevan a:
    setcookie(\”usNick\”,$nickN,time()+7776000);
    setcookie(\”usPass\”,$passN,time()+7776000);

    alguien save cual puede ser el problema?

  7. ayuda 22.11.2006 - 11:50 - #

    donde ago eso no se nada por que soy un niño respondanme a melkait@msn.com

  8. No Registrado 24.11.2006 - 11:45 - #

    Saludos a todos

    el link para ver o bajar el código no funciona

    alguien me puede enviar el archivo .zip a mi correo??

    julian.osorio@linuxmail.org

    muchas gracias de antemano

  9. Angel 27.11.2006 - 08:14 - #

    ¡OJO! En el archivo de configuración php.ini

    short_open_tag = On

    sino…no funciona.

  10. buenazo 30.11.2006 - 13:15 - #

    COMO ES

  11. Lopez 30.11.2006 - 20:44 - #

    No entiendo lo que dice Angel?

    Alguien lo puede explicar.
    Gracias!

  12. james 01.12.2006 - 07:01 - #

    en el archivo php.ini de tu mysql debes arreglar esa linea , por defecto viene en OFF , deberas cambiarla a ON para que funcione el foro.

  13. lolo 04.12.2006 - 15:10 - #

    esto es una prueba

  14. ally 06.12.2006 - 13:08 - #

    jaja, solo queria probar

  15. carlos 08.12.2006 - 16:08 - #

    hola

  16. sharon latorre miney 09.12.2006 - 10:52 - #

    hola me llamo sharon soy d lima tengo 16 años y me gusta la programacion pero no me salen algunas cosas nose si alguien estaria dispuesto a ayudarme
    mi correo es hermosa2_bebita@hotmail.com
    gracias de antemano amiios besos

  17. didier 09.12.2006 - 11:04 - #

    hola que tal atodos les cuento que e probado el codigo de este tutoria y me parecio exelente esmas me sirvio para mi trabajo de grado

  18. henry 10.12.2006 - 15:41 - #

    hola ojala con esto pueda crear mi propio foro.

  19. shiales 10.12.2006 - 23:39 - #

    todo sale en blanco

  20. shiales 10.12.2006 - 23:41 - #

    si sale y todo corre bien y shido

  21. Marcial Coca 11.12.2006 - 14:00 - #

    Este tutorial es muy bueno se los aconcejo a todos los que esten aficionados en programar en PHP
    MARCI

  22. pmp 12.12.2006 - 05:25 - #

    Muchas gracias por el tutorial. Funciona perfectamente, sin embargo, me gustaría saber cómo se puede hacer para que las respuestas a una respuesta ya dada, y así sucesivamente, aparezcan también en la pantalla del tema principal.
    Gracias!

  23. jluis 12.12.2006 - 14:27 - #

    disculpen que sea tan bobo pero por preguntar he aprendido quiero saber como correr este foro en una red local o como la subo a internet?

  24. brunos 14.12.2006 - 19:57 - #

    facil jluis, solo debes registrarte en un servidor gratuito como http://iespana.es y luego de activar tu cuenta vas a iweb, seguidamente publicar mi sitio y luego veras cuan facil es

  25. Julian Osorio Amaya 15.12.2006 - 07:49 - #

    Si alguien necesita que el foro pagine
    los comentarios, que
    también muestre el título del foro
    y la hora y la fecha
    escriban a
    julian.osorio@linuxmail.org

  26. Jerzy_Mex 20.12.2006 - 22:08 - #

    Hola a todos, solo pregunto si alguien me podria decir de donde bajo Mysql y donde pongo todo ese codigo.
    Mi correo es: jerzy_mex@hotmail.com

  27. Chistemaniaco 23.12.2006 - 11:45 - #

    ta weno el tutorial

    saludos

  28. S-SnaKes 28.12.2006 - 19:28 - #

    ta weno el tuto, medio largo nomas xD

  29. javier 29.12.2006 - 17:37 - #

    tu foro lo probe en un localhost y esa bueno me gusto voy a tratar de en base al tuyo hacer uno para mi claro primero tengo que subir el resto de mi pagina grasias

  30. Maconia 02.01.2007 - 06:16 - #

    Para todos los que tienen problemas con error Warning:
    Warning: mysql_num_rows() o
    mysql_connect(): Access denied for user: ‘usuario@localhost’ (Using password: YES) foro/configuracion.php on line 7Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resourceforo/configuracion.php on line 8Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource foro/index.php on line 9Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource foro/index.php on line 10 es posible que le deban agregar siempre antes de mysql un @
    Espero les ayude

  31. cyrux 03.01.2007 - 01:01 - #

    simplemente sencillo y bueno esta muy bueno exelente

  32. mauro 03.01.2007 - 16:13 - #

    quiero probar el foro discupen

  33. felipe 04.01.2007 - 08:17 - #

    viaje de lo mejor

  34. josemaya 05.01.2007 - 19:16 - #

    me faltan dos archivitos el header.html y el footer.html
    si alguien me los podría enviar gracias
    josemaya20@gmail.com

  35. jonathan 08.01.2007 - 15:19 - #

    gracias por este curso para grear mi website

  36. oDW1p0cOxb 11.01.2007 - 10:41 - #

    Hi! Very nice site! Thanks you very much! en8POrcRMO1eA

  37. Agata 13.01.2007 - 19:43 - #

    gracias pero que le pongo al header.html ? aun no entiendo

  38. jmm 16.01.2007 - 19:09 - #

    gracias por este magnifico tutorial

  39. Mauricio 18.01.2007 - 06:37 - #

    Muchas gracias, bastante explicativo su tutorial, muy bueno, espero tener un foro dentro de poco

  40. manuel 18.01.2007 - 20:41 - #

    muy bueno me sorvio de arto esto

  41. mauro 19.01.2007 - 08:36 - #

    muy buen articulo

  42. www.colombiaextrema.com 19.01.2007 - 08:39 - #

    hola colombiaextrema

  43. Extrema 19.01.2007 - 08:41 - #

    muy bueno

  44. Extrema 19.01.2007 - 08:41 - #

    muy bueno

  45. Extrema 19.01.2007 - 08:42 - #

    muy bueno

  46. Extremo 19.01.2007 - 08:42 - #

    muy bueno chiao

  47. sefuk 20.01.2007 - 13:32 - #

    ayudenme yo no le entendi me explikarian por msn pls

  48. sefuk 20.01.2007 - 13:33 - #

    mi msn es alan_ibarra_@hotmail.com para el ke me pueda ayudar :’(

  49. uhhhh 21.01.2007 - 10:05 - #

    hola

  50. uhhhh 21.01.2007 - 10:06 - #

    hola, muy bueno.

  51. alvaro 21.01.2007 - 14:56 - #

    pucha lo lei y trate de hacerlo mil veces pero no me resulto

    mi msn es dark_arlekin_x@hotmail.com

    para quien me pueda ayudar

  52. Jimmy Alexander 21.01.2007 - 16:12 - #

    Hola a todos.
    Gracia a D. por el foro no sabia como empezar. Pero….
    llevo varios dias tabajando en el foro pero no logro solucionar los errores que aparecen como: mysql_num_rows() si alguien me puede aydar.
    mi correo es jimmyalexanders@gmail.com o con “yahoo”
    Gracias

  53. alvaro 21.01.2007 - 17:13 - #

    como creo la base de datos eso no entendi :S help

  54. fercha 26.01.2007 - 07:34 - #

    esta bueno quiero ver como se hace para

  55. David M.A. 27.01.2007 - 04:37 - #

    pues a mi me parece difícil hacer esto.
    joooerrrr!

  56. carolina 28.01.2007 - 23:55 - #

    hola. tengo una duda.. k programas ai k usar para aser todo esto??? no me manejo para nada i no entiendo de dond empezar…. si alguien me puede ayudar mi correo es carochucky@hotmail.com
    gracias!

  57. jorge 02.02.2007 - 09:51 - #

    interesante foro pero faltan detalles que no se explican y dudo q a la primera le salgan este foro

  58. nelson 03.02.2007 - 09:06 - #

    excelente el aporte… queremos montar un foro en nuestra site y ha sido de gran ayuda esta informacion..

  59. web_miarroba 03.02.2007 - 23:59 - #

    te felicito

  60. web_miarroba 04.02.2007 - 00:00 - #

    solo que te falta alunos detalles que arreglar pero en lo demas bien.

  61. Luis 04.02.2007 - 18:57 - #

    Esta muy bueno el tutorial, pronto lo incluire en mi web, pero antes le hare unas modificaciones.
    Felicidades.

  62. Bastian 06.02.2007 - 16:41 - #

    Gracias, este tutorial esta muy bueno. Ya pensaba poner un foro en mi pagina web.

  63. emilio 07.02.2007 - 12:13 - #

    holas

  64. Luis 08.02.2007 - 12:40 - #

    Recien voy a probar el codigo, pero por las felicitaciones que te dan no debe de ser bueno el codigo sino excelente.

  65. mary 08.02.2007 - 16:27 - #

    hola quisiera hacer un foro para mi pagina

  66. Will 08.02.2007 - 22:28 - #

    Muy bueno gracias…

  67. User 08.02.2007 - 22:36 - #

    Excellent…

  68. Stoickov 09.02.2007 - 17:26 - #

    Lo provaré

  69. jemuti@gmail.com 09.02.2007 - 22:21 - #

    Quiero dar las gracias de verdad por entregar algo tan bueno y gracias por que funciona, te pasaste, que ios te bendiga,chao…
    Ijole

  70. Jemuti@gmail.com 09.02.2007 - 22:23 - #

    Sugerencia, ordenen los comentarios del ñultimo grabado al que se grabo primero, ya que los últimos deben ser los primeros, en buena onda lo digo, adios..
    ijle

  71. JONH OTTMAN 13.02.2007 - 22:50 - #

    Bien muy bien

  72. pepeillo 14.02.2007 - 17:19 - #

    He migrado a php5 y me ha dejado de funcionar. Cambia mucho la sintaxis?

  73. casan100@gmail.com 17.02.2007 - 08:13 - #

    excelente foro gracias

  74. Juan 25.02.2007 - 11:11 - #

    juan
    hidalgo
    arias
    espacio
    sin espacio
    espacio
    sin espacio

  75. lex 25.02.2007 - 12:19 - #

    ta bacan

  76. Paul Felipe 26.02.2007 - 09:01 - #

    Excelente, gracias!!!

  77. alex gino perez alvarez 26.02.2007 - 11:06 - #

    hola soy un foven programador tengo muhcas esperansas puestas aki en php ..su informacion que brindan es muy buena t motivadora adradesco su aporte a la cultura informatica atte alex
    alexgino147@hotmail.com

  78. Yovi 03.03.2007 - 16:01 - #

    Demonios tío, no se me baja el foro.zip con ninguna de las direcciones…

    ¿Qué hago?
    En verdad necesito esa info.

  79. Nadie 13.03.2007 - 13:54 - #

    Gracias por tu aporte..

  80. josé 14.03.2007 - 18:05 - #

    Hola QUIERO HACERTE SIETE PREGUNTAS :

    1° Cómo puedo hacer para crearle un logo a mi foro, es decir con qué opción del Admin del foro puedo subir un logo?

    2° Cómo puedo hacer subir una determinada foto e imagen para que esta sea el papel tapiz de mi foro?

    3° Cómo puedo hacer para que cuando escriba una palabra en el Google como una alternativa salga mi foro?

    4° Cómo puedo hacer para cambiar mi nick ya que aparezco como administrador?

    5° Cómo puedo hacer para ponerme mi avatar o algo que me distinta del resto de los demás?

    6° Cómo puedo hacer para crear mi firma y avatar?

    7° Cómo puedo hacer para agregar más emoticones a mi foro

    Esperando tener tu respuesta aquí o sino envíamela a mi correo a la brevedad.

  81. miguel urb 16.03.2007 - 19:45 - #

    que opinas de la seguridad en php

  82. eduardo 17.03.2007 - 10:19 - #

    bueno,, yo 0 tengo aratas dudas y ya me canse de hacer foros con acentamientos gratis y quiero hacer mi foro ,, yo mismo ,,y la verdad ,,no se que necesito ,, pa crear ,, la guia la leyy bien ..solo que no especifica ,,, qe uno necesita al comienso,,si alguien me ayudare ,, eduard_dring@hotmail.com

  83. Posible Programador 17.03.2007 - 23:58 - #

    Pus, es exelente este tutorial, lo unico que no se como implementar el Borrar, y yo creo saber como agregar el post sin tener que Citar, lo otro tambien seria lo de los permisos, me gustaria saber como hacer para que los “Guest” se tengan que registrar para ver el foro…

    Esperando que esto se siga viendo

    Saludos ^_^

  84. litus 19.03.2007 - 06:44 - #

    como haces para ver los registros de la base de datos, y no los del array definido en el template?

  85. rodolfo 19.03.2007 - 14:22 - #

    parece muy bueno el foro, pero no funciona con php5, saben como actualizarlo??

  86. Leo 19.03.2007 - 14:45 - #

    Como se puede realizar un foro que se pueda ingresar más de 255 caracteres en la base de datos… alguna idea, como se declara el tipo de datos en la tabla como varchar(1000) y el select final del retorno del dato como sería… select texto from tabla… eso a mi no me funciona… como se puede hacer…

  87. julio 31.08.2007 - 08:15 - #

    me parece bueno el ejemplo mas no h epodido hacerlo funcionar porque no entiendo bien eso de los templetes y queria echarle un vistazo a la carpeta zip pero no he podido bajarlo me gustaria si pudieran pasarmelo porfa no

  88. oscar 05.09.2007 - 16:14 - #

    no entendi nada

  89. carlos 23.09.2007 - 22:16 - #

    no le entiendo por favor me lo pueden enviar a mi correo el foro.

  90. D.Valero 26.09.2007 - 14:02 - #

    es un ejemplo muy bien estructurado muchas gracias a su creador

  91. Walter 29.09.2007 - 12:36 - #

    Esta Bueno el foro, aunque muchos dicen que tiene errores, lo importante es que intentaste explicar la logica de un foro, ya los errores se pueden arreglar leyendo mas documentos sobre los temas

  92. vice 30.09.2007 - 11:58 - #

    vamso a ver que onda porque yo eh buscado muchas formas de hacer foros pero son muy comenes ahora veremos que puedo hacer para que funcione cuyo codigo del foro porque lo nesecito y me vendra bien para mis web. Muchas gracias maestrosdelweb.com

  93. Eric 06.10.2007 - 05:53 - #

    Muy bueno el tuto.
    Aura mismo empiezo :P

  94. malo 10.10.2007 - 07:38 - #

    Intenté hace tiempo crear un foro en Php y en Mysql, pero resultaba muy dificíl.
    Por eso, busqué y encontré un sitio (foroactivo.com) que permite crear foro totalmente personalizable sencillamente y rápidamente. Es en phpbb, siendo una principiante en informática, eso me basta

    Saludos

  95. Esteban Mackay D. 13.10.2007 - 15:41 - #

    Hola
    Yo entro el siguiente codigo y me da error de conexion pero si entro el valor directamente si trabaja, asi:
    mysql_connect(”localhost”,”mariox”,”123456″)
    No acepta cuando son variables.

    Espero me ayuden. Gracias

  96. ANDRES 23.10.2007 - 13:27 - #

    muy bueno

  97. yojim 26.10.2007 - 21:46 - #

    Me parece, que ta chevere jjeje ayuda bastante sigan asi, haber si comentas algo sobre las consideraciones que debemos tener para administrar el foro, y nos das unas sugerencias puntuales sobre que podemos agregarle a este codigo ;)

  98. swicht 02.11.2007 - 11:05 - #

    tendre que verlo…hasta entons…..

  99. nestor j fernandez 05.11.2007 - 06:14 - #

    Interesante , estoy empezando con PHP, el articulo realmente me fue util

  100. Wally 11.11.2007 - 14:38 - #

    Una pregunta este foro puede ser distribuido libremente???
    no hay problemas si es publicado en una web???

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