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 (30 votos, promedio: 4.3 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

467 comentarios en total.

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

  1. cvander 17.06.2003 - 18:21 - #

    El tutorial está muy bien logrado y nos enseñe la funcionalidad básica de un foro por lo que una felicitación para el autor. Encontré un par de tips para mejorar mi programación en PHP asi que también aprovecho a agradecerlo.
    Saludos

  2. cubis 19.06.2003 - 07:19 - #

    Excelente tutorial, es muy util para todos.

  3. Mickel 19.06.2003 - 15:21 - #

    Salvo el hecho de que deberian mejorar la resolucion de las imagenes, ta perfecto!

  4. Webstudio 19.06.2003 - 15:38 - #

    o_O!?

    Mickel, me parece que leiste otro tutorial… Qué imágenes? ? ? ?

  5. Abel 20.06.2003 - 02:15 - #

    Me encantó el tutorial y estoy aprendiendo muchísimo… pero no encontré la función mostrartemplate() que teóricamente debería estar en funciones.php (o nentendí cualquier cosa?)
    Muchas gracias por el esfuerzo que hacéis

  6. Webstudio 20.06.2003 - 08:35 - #

    Abel.. la función mostrarTemplate, que se muestra en el tutorial, deberias incluirla en el archivo funciones.php si es que copias todo desde el tutorial. Pero si notas, al final, pongo un lnk hacia un archivo.zip con todos los archivos completos que componen el Foro, así que te recomiendo que lo bajes.

    Saludos.

  7. Unregistered 24.06.2003 - 10:27 - #

    Hola Amigo,

    La verdad es que el tutorial funciona perfecto, Solo tengo una inquietud.

    Mira regularmente asi tengo mi root.

    http://www. aqui tengo todos mis HTML
    en www/php, tengo todos mis archivos php
    en www/images, tengo todas mis images.

    Para probar los archivos que me enviaste, coloque los php en su respectiva carpeta y los HTML en raiz, pero, nada, no funcionó, lo INCLUDE y REQUIERE me dieron problemas, asi que opte por dejarlo en raiz (www).

    me quedo mas o menos asi:

    http://148.235.135.181/devweb/index.php

    pero como le puedo hacer para colocar los PHP en su respectiva carpeta sin necesidad de tenerlos revueltos con los HTMLS y demas archivos que tengo en raiz?

    agradezco sus respuesta…

    Carlos Hidalgo

  8. Juan Pablo 03.07.2003 - 13:30 - #

    Bueno y simple dos veces bueno

  9. Trulala 05.07.2003 - 17:34 - #

    Excelente articulo, gracias de verdad

  10. Leonel Holguín 07.07.2003 - 10:47 - #

    El artículo excelente y la explicación por demás clara. Más artículos como éstos. Saludos.

  11. pedro 07.07.2003 - 19:32 - #

    excelente

  12. jaime 08.07.2003 - 21:36 - #

    excelente artículo, lo felicito.

  13. plancha 13.07.2003 - 07:21 - #

    esta increible,
    me salvo la vida,

  14. Unregistered 14.07.2003 - 15:30 - #

    Muy bueno

  15. Rcarloncho 14.07.2003 - 15:53 - #

    Esta bueno…

  16. Webstudio 15.07.2003 - 10:45 - #

    Mensaje Original por NICKY
    NO PUEDO BAJAR EL ARCHIVO foro.zip, me dice que no existe.

    Es cierto, parece que hubo algun problema con la copia subida a MaestrosDelWeb. Este es el enlace para bajarse el código desde ZonaPHP :

    http://www.zonaphp.com/archivos/foro.zip

    Saludos.

  17. Baigorri 16.07.2003 - 03:06 - #

    Muy bueno, si señor. Me he hecho un foro en java basandome en el tutorial. Perfecto. Muchas gracias.

  18. andy 16.07.2003 - 05:38 - #

    hola, gracias por la informacion

  19. lucianoc 17.07.2003 - 15:32 - #

    Muy bueno

  20. gabriel 18.07.2003 - 06:15 - #

    Para principiantes se nota que faltan muchas cosas. Además de archivos.

  21. molesto 19.07.2003 - 18:48 - #

    oye tu link para descargar no trabaja, y el codigo a mi no me corre,
    y si tengo mi register_global en off

  22. Unregistered 23.07.2003 - 10:03 - #

    Tengo un problemita! en esto todavia estoy muy verde, y deseo poner en mi pagina un FORO, mi duda es algo que espero no se burlen de ella, pues aunque ya logre descargar el archivo de foro.zip cuando lo abro como puedo visualizarlo, otra es si me podrian decir como lo inserto en una pagina es con frames o como debo hacer si me hace falta algun programa! no lo se…

  23. Marcelo 23.07.2003 - 17:56 - #

    Pablo sos un genio y además funciona!!.Sobre todo generoso lo tuyo.Gracias

  24. lailuluelo 24.07.2003 - 11:17 - #

    La función mostrarTemplate($template, $row);
    de foro.php, ¿donde está definida?

    Otra cosilla, el link para bajarse el código está roto. [COLOR=red]Ya encontre en el foro otro enlace en zonaphp para bajarlo.[/COLOR]

    Gracias

  25. _A_ 25.07.2003 - 15:09 - #

    Esta roto el link para descargar el codigo completo de la creación del foro con PHP

  26. reportero2 25.07.2003 - 16:17 - #

    Dale mas resolucion a esas capturas de pantallas (imagenes) y haz algo bien en tu vida… todo lo demas es aceptable :-(

    caraxo seguro usas lentes de botella!!! :-D

  27. [iNFeRNo] 28.07.2003 - 04:07 - #

    Hola. Solo decir que el articulo me ha parecido bastante completito, salvo que para principiantes, como yo, aun leyendo los articulos sobre templates, nos puede resultar un poco lioso. Me gustaria bajar el archivo que has puesto para poder estudiar todo el codigo en condiciones, pero dice que el link es erroneo. ¿Podrias subirlo otra vez?

    Muchas gracais

  28. angel 28.07.2003 - 07:59 - #

    esta muy bien

  29. [iNFeRNo] 28.07.2003 - 12:34 - #

    Mensaje Original por Amanda
    porque no poneis “¿COMO SE PUEDE HACE UNA PAGINA WEB?”

    Que yo sepa, este foro o este post es para el foro en php.. no para paginas web…

    De todas formas, si sigues teniendo dudas, agregame al msn y hablamos.. no se si coincidiremos puesto que yo soy de España, pero si quieres te puedo echar una mano. como veas… di algo aqui y nos ponemos en contacto

    P.D.: No pretendo ligar, aunke pueda parecerlo… palabra

    ( ignoratus@hotmail.com )

  30. [iNFeRNo] 28.07.2003 - 12:40 - #

    Por cierto, se me olvidaba.. Estoy probando los archivos bajados con PHP 4.3.2 y MySQL 4.0.14a Bajo windows con Xitami como server (por si tiene que ver algo de todo esto con mi problema).
    Bien, a la hora de probar todo, a la hora de exponer un nuevo tema me da estos dos errores:
    Notice: Undefined index: id in C:\Xitami\webs\php_nono\foro_nono\respuesta.php on line 4

    Notice: Undefined index: citar in C:\Xitami\webs\php_nono\foro_nono\respuesta.php on line 5

    Y los campos del formulario me aparecen otrs errores (que ya he corregido con un else a la buena de dios…)

    La cuestion es, ¿falla por algo de lo que uso, tengo ke configurar algo mas a parte del PHP y de MySQL?¿o es solo un fallo del navegador?

    Como editor uso el HomeSite 5.2, con el mapping de servidores activado correctamente…

    Gracias

  31. cvander 28.07.2003 - 23:48 - #

    Ya fue corregido el link hacia la descarga.

  32. Rocket 29.07.2003 - 12:40 - #

    Hola, me parece muy bueno este tutorial pero tengo un problema con el template… podrias haber `puesto un ejemplo para poder guiarse

    no se como hacerlo, tengo ke seguir alguna regla para crearlo o lo hago como yo kiera??

    otra cosa… el link no funciona :(

  33. Unregistered 30.07.2003 - 17:05 - #

    una pregunta yo baje el zip que habia y nose como incluirlo to2 los archivos me pueden ayudar plz

  34. DKNUS 08.08.2003 - 09:35 - #

    BUENA

  35. PepeSys 08.08.2003 - 11:03 - #

    diganme una de las causas del porque me sale el error “no se puede grabar el mensaje” ya cheque el codigo y no se que sea, alguien ayudeme!!

  36. Sut 14.08.2003 - 11:12 - #

    No os ofendais, no es nada personal, solo que como soy nuevo en esto pues… no me he aclarado mucho con lo que habeis puesto. Que x cierto me gustaria recibir mas informacion acerca de lo de crear foros y en especial de como poner el avatar en un foro, muchas gracias.
    P.D:mi e-mail es: sut_roller@Hotmail.com

  37. Nok 17.08.2003 - 23:29 - #

    Realmente el foro es muy sencillo y practico, personalmente lo estoy utilizando en mi sitio con algunos retoques y funciona barabaro.
    Felicitaciones!!!

  38. farmacon 21.08.2003 - 01:06 - #

    Muy buen tutorial. Me sacó de apuros. Aunque tiene varias “cositas” que dejan que desear (algunos algoritmos mal logrados, como la validación de las variables), son los mínimos. Me refiero a que, si necesito la url …..respuesta.php?id=6&citar=1 ¿qué pasa si sólo ingreso …respuesta.php ?….mmm

    En fin. A pesar de esos detallitos (que uno mismo puede solucionar) es excelente.

  39. Kim 26.08.2003 - 08:38 - #

    Muchas gracias, de verdad. Llevo poco tiempo peleando con el php y me encanta. Este artículo ha sido de gran ayuda

  40. Unregistered 03.09.2003 - 07:59 - #

    a mi no me funciona el foro, me sale este error Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /www/www/foro/index.php on line 10, q puede ser?? x favor si me ayudan.. mi messenger es pablito_paraguayo@hotmail.com

  41. Unregistered 03.09.2003 - 09:38 - #

    Gracias gente.. ya solucione el problema.. ahora me graba todo en la base de datos pero no sale nada en la pagina..

  42. Unregistered 26.09.2003 - 09:51 - #

    alguien me puede ayudar estoy tratando de que funcione el foro que esta en la pagina http://www.maestrosdelweb.com, ya antes mencionada pero me aparece un error en este if que esta en el index if (mysql_num_rows($rs) > 0) por lo que el programa no corre alguien me puede ayudar a lo mejor tengo un error o a alguien le paso lo mismo gracias

  43. jakoujan 27.09.2003 - 09:14 - #

    hola amigo gracias por el foro que nos das mira tengoi una duda lo corri queriuendo conectar a la base de datos y no pude conectar me marca error en my_sql_num_ros() que puedo hacer

  44. xAndrex 06.10.2003 - 10:07 - #

    Esta muy buena tu tutorial hombre, espero k me funcione y de hay te cuento
    OK!

  45. Unregistered 14.10.2003 - 17:18 - #

    Buenas, he bajado los archvos del foro. Lo grabo todo donde debe pero a la hora de hacer un nuevo mensaje me crea el registro en la base de datos pero con los registos vacios.
    Al intentar agregar una respuesta clickando sobre el tema desde la pagina principal se ve como carga la pagina foro.php?id=XX pero se queda en esa. Que es lo que hago mal?
    Gracias de antemano

  46. Unregistered 27.10.2003 - 12:57 - #

    Esta de lujo el foro, m problema esque me da un error despues de iintentar escribir el mensaje… e aki el problema: Error al grabar un mensaje: mysql_error… alguien me puede ayudar? Merci

  47. Extremo 28.10.2003 - 09:26 - #

    Hay un pequeño detalle que falla en este artículo, y es el diseño de la base de datos. En concreto, el campo en el que se guarda el número de respuestas, sobra. En primer lugar, porque es inncesario. EN segundo lugar, porque crea información duplicada en la base de datos, y por tanto, inconsistencia de datos. No se si me explico.

    Como cada mensaje tiene un campo que indica a cual está respondiendo, podemos calcular en todo momento el número de respuestas con una sencilla sentencia SQL:
    SELECT COUNT(*) FROM foro WHERE indentificador=$codigo

    donde $codigo es el codigo del mensaje del que queremos saber su numero de respuestas. De esta manera, no hace falta actualizar el campo ‘respuestas’ constantemente.

    De igual manera, ‘ult_respuesta’ también sobra. Es muy fácil obtener la fecha de la última respuesta con esta otra sentencia:
    SELECT fecha FROM foro WHERE identificacion=$codigo ORDER BY fecha DESC

    de igual manera, $codigo es el codigo del mensaje del que queremos saber la fecha de su ultima respuesta. Esta sentencia de SQL nos mostrara la fecha de todas las respuestas ordenadas por su fecha (de más reciente a menos), y para obtener la más reciente, simplemente almacenaremos el primer registro que nos devuelva.

    Nada más, esas eran mis sugerencias.Aun así, el artículo es estupendo. Au!

  48. Webstudio 28.10.2003 - 12:51 - #

    Extremo, Si bien es cierto que las tablas del tutorial no están por completo Normalizadas, mucha normalizacion es tan mala como poca normalizacion. Es algo que deberías tener en cuenta. Si cada vez que muestres el Home del foro vas a hacer:

    1 Query para obtener todos los mensajes iniciales.
    1 Query POR CADA tema para obtener el número total de respuestas.
    1 Query POR CADA tema para obtener la fecha de la última respuesta

    Entonces permiteme decirte que estás haciendo demasiados Querys que puedes solucionar tan solo con unos bytes más en la base de datos.

    Saludos.

  49. JGGA 30.10.2003 - 11:38 - #

    localmente funciona muy bien, salvo 2 errores que marca en el archivo respuestas.php. Pero al subirlo al servidor(apache), no inserta los datos que quiero en la tabla, y no me manda al post.php
    ¿Qué tengo que hacer para solucionar este problema?, ¿acaso para servidor apahe no seirve?

  50. VaRT 06.11.2003 - 10:34 - #

    pues a mi no me funciona siempre me da este error:

    Warning: Supplied argument is not a valid MySQL result resource in c:\foro\index.php on line 10

    por lo demas es muy interesante, he aprendido mucho

  51. Juan Manuel (plesk 06.11.2003 - 13:22 - #

    Me parece muy buena opción para los novtos, no me concidero mas que no novato pero cuando yo empece en este busine de PHP y MYSQL, me hubiera gustado haber encontrado esta opcion de aprendizaje…

    saludoso

  52. Cielo 18.11.2003 - 17:20 - #

    muy bueno, solo si el articulo terminara con una frase de oro, de ¿como lo pongo a funcionar? no soy experta en el asunto, y por lo tanto me gustaria ver funcionando lo que 10 horas despues intente hacer, por lo demas es bastante interesante y muy bien documentado.
    gracias

  53. zaseg 21.11.2003 - 18:59 - #

    Hola, estoy usando el ejemplo de abajo y me dice ‘Imposible conectarse con MySQL’. Creo tener bien configurado todo. la variable servidor seguro que está localhost y las variables usuario y password he puesto unas cualquiera, tengo que cambiarlas por algunas (¿donde puedo mirarlo?).

    Necesito ayuda urgente Gracias por adelantado

    // ***** Modificar las siguientes lineas con sus datos *****
    $servidor = “localhost”;
    $usuario = “zaseg”;
    $password = “my_password”;
    $base_de_datos = “nomnbre_BD”;
    // ********************** Fin modificacion **********************
    ?>




    < ?if(!(isset($envio) && isset($voto))){
    $myconn=@mysql_connect (”localhost”,$usuario,$password);
    if(!$myconn) { echo (’Imposible conectarse con MySQL,’); exit();}
    if(!@mysql_select_db($base_de_datos)) { echo (’Imposible conectarse con la BD’); exit();}
    $sql = “SELECT * FROM encuestas”;
    $resultado = @mysql_query($sql,$myconn);
    $row = mysql_fetch_array($resultado);
    ?>

  54. adrian 24.11.2003 - 11:18 - #

    lo felicito pero hay que dar criticas constructivas no desanimar a las personas tratandolas de vagas

  55. Encarnacion Novelo 02.12.2003 - 13:26 - #

    Me parece que el articulo esta bastante claro para el tema. Sin embargo soy usario nuevo en PHP y MySQL y en este momento necesito ayuda para terminar una aplicacion que contenga los ultimos comentarios que mencionas:

    - Agregar más tags para que sus usuarios puedan dar formato a sus mensajes

    - Incorporarle un sistema de usuarios (muy importante para mi)

    -Contadores de visualizaciones de un tema, para hacer un Ranking de temas más vistos.

    -La posibilidad de que los usuarios puedan utilizar firmas (no importante para mi)

    Me gustaria que me puedas ayudar con estos temas, ya que necesito terminar esta aplicacion mas tardar el dia 5 de diciembre 2003.

    Por favor espero respuesta a mi correo:
    enovelo69@hotmail.com
    te lo agradezco mucho….Gracias..

  56. MARC 06.12.2003 - 11:12 - #

    MUCHAS GRACIAS POR ESE TUTORIAL Y ESA AYUDA. AHORA TENGO UNA BUENA IDEA DE LO Q ES UN FORO Y COMO METERLO EN MI PAGINA. NO FUE FACIL ENCONTRAR ESA INFORMACIÓN CON TANTA CLARIDAD. GRACIAS POR TU GENEROSIDAD Y TU PEDAGOGIA.

  57. alex 12.12.2003 - 18:11 - #

    < ?php
    function parsearTags($mensaje)
    {
    $mensaje = str_replace(”[citar]“, “


    “, $mensaje);
    $mensaje = str_replace(”[/citar]“, “

    “, $mensaje);
    return $mensaje;
    }
    ?>

  58. Unregistered 21.12.2003 - 10:13 - #

    alguien sabe como se puede añadir algo para borrar temas ?

  59. xoriguer 06.01.2004 - 16:17 - #

    soys los mejores!!!! asi da gusto!!

  60. antonio 23.01.2004 - 20:43 - #

    es muy bueno este foro se los recomiendo…saludos!!

  61. supercoco2000 28.01.2004 - 17:39 - #

    Hago el foro pero no entiendo en el index.php y en el foro.php las variables color.

    como no se de donde salen ni para que sirve me dan error y no puedo solucionarlo.
    Este es el error que me dan

    Notice: Undefined variable: color in
    c:\apache\apache\htdocs\taxi\foro\foro.php on line 18

    Aprovecho para decir que si entras en el formulario de respuesta y no contestas a nada (se supone que estas generando un nuevo tema) pues en las casillas del formulario salen algunos errores que borrandolos te dejan continuar. ¿como solucionamos esto?

    Gracias por todo

  62. scasablancas 29.01.2004 - 13:57 - #

    Muy explicativo

  63. supercoco2000 02.02.2004 - 02:43 - #

    *.chm

    Archio de ayuda HTML compilado.
    Cuando hago lo que me comentas me sigue pidiendo que pulse abrir o cuardar.
    Una vez lanzado y abierto me abre la ayuda de Windows.

    No entiendo lo que me comentas de poner las cabeceras de HTM

  64. Unregistered 08.02.2004 - 16:32 - #

    buen ejemplo

    tengo una duda porque el _GET me genera error , me dice indefinido _GET

    gracias pos su respuesta

  65. Unregistered 09.02.2004 - 14:02 - #

    hola!
    El manual me ha parecido perfecto, ya q como mejor se aprende es viendo ejemplos. Pero a mi me quedó una duda, COMO SE HARIA PARA PONER LA FECHA QUE APARECE EN LA PAGINA PRINCIPAL DE MANERA QUE QUEDE DD/MM/AAAA????
    En las respuestas a los temas aparece asi pero probando de la misma manera no soy capaz de hacerlo.
    Alguien me podia ayudar??
    Muchas gracias.

  66. Unregistered 09.02.2004 - 20:08 - #

    Hola,
    El artículo es buenísmo… tal como está disñado el foro me funciona perfectamente… comprendo que hay temas como la atentificación de nicks y administración de la comunidad y el foro que requieren otros desarrollos… que son ajenos al artículo.
    La única pega es que hay algunos desarrollos de programación que no están explicados con suficiente claridad para un principiante tan pez como yo… a pesar de todo, casi consigo entender de lo que van los templates… ;)
    No obstante, tengo un problema… el foro está diseñado para ordenar temas y respuestas en función de fechas… y a mí lo que me interesa es desarrollar un foro en que las respuestas se desarrollen de forma arborescente en función de la lina de conversación… de forma que aparezca debajo de cada tema, su respuesta… y debajo de esta respuesta, el post que se dirige a ella… así hasta el final de la “línea de respuestas”… y luego iria otra línea de respuestas distintas u otro tema… es el tipo de foro que funciona en Melodysoft, Portalmix… o Lycos
    ¿ alguien podría decirme cómo podría diseñar esta otra forma de foro?

  67. Paco_Ramos 18.02.2004 - 16:23 - #

    TENGO EL SIGUIENTE PROBLEMA:
    Warning: Cannot modify header information - headers already sent by (output started at /usr/local/www/utec/foro/configuracion.php:2) in /usr/local/www/utec/foro/agregar.php on line 30

  68. Alexandro 03.03.2004 - 13:59 - #

    El tema es el siguiente, no puedo opinar mucho, puesto que soy nuevo en todo esto,tengo una pequeña cuestion y el tema es que no se nada sobre base de datos ¿hay alguna forma de poder montar un foro sin necesidad de crear tablas y cosas de esas?, si me podeis ayudar, estoy muy agradecido.Mi correo es snoopp29@hotmail.com , un saludo y muchas gracias :)

  69. Unregistered 07.03.2004 - 06:39 - #

    hay algun ejemplo donde ver este foro?
    gracias

  70. Unregistered 11.03.2004 - 14:11 - #

    He subido el foro a una web de miarroba.com y no he podido corregir un pequeño problema, primeramente pense que era por el ($rs)>0) que tendria que ser ($rs) > 0) pero ya con el cambio hecho sigue apareciendo el mismo error.

    al querer ingresar a index.php de la seccion del foro me aparece esto.

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/………/foro/index.php on line 10.

    En Index.php esta esta seccion que es donde creo que esta el fallo.

    /* 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)

  71. hola 15.03.2004 - 05:28 - #

    hola este manual me ha servido mogollon gracias

  72. Tukzone 27.03.2004 - 19:09 - #

    Un aporte al articulo.

    Hay un error en el codigo al utilizar las variables: $_GET y $_POST

    Este uno de los errores mas comunes a la hora de programar en PHP.

    Lo que hay que saber es lo siguiente, por razones de compatibilidad, se debe comprobar primero que variables identifica el servidor, mas alla de que sepamos que variables identifica el nuestro, nunca sabemos si el codigo que desarrollamos va a ser migrado a otro servidor o no (algo que sucede con mucha frecuencia en empresas que actualizan constantemente su software y/o hardware) o si el administrador del sistema cambia la configuracion del servidor, por dar algunos ejemplos.

    La forma correcta de manejar variables predefinidas, en este caso get y post, es la siguientec:

    $_GET = ($_GET ? $_GET : $HTTP_GET_VARS);
    $_POST = ($_POST ? $_POST : $HTTP_POST_VARS);

    De lo contrario, quiza tu codigo funcione bien aca, pero no alla.

  73. Unregistered 29.03.2004 - 09:13 - #

    baje el foro y lo puse en mi servidor, pero no se usar el mysql

  74. needer 29.03.2004 - 18:08 - #

    Muy util y bastante desglosado.

  75. Unregistered 29.03.2004 - 18:25 - #

    Voy a hacer incapié a una consulta anteriormente posteada, pero que no he visto solventada, al indexar index.php en mi sitio me da el siguiente error.
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home2/sysbinar/public_html/foro/index.php on line 10

    Bien posteo tambien el bloque if en el que se encuentra la linea 10 de index.php.

    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);
    }
    }

    he estado mirando pero no veo claro si alguien me pudiese orientar un poco… seria de agradecer.Gracias

    Por cierto hace poco ando visitando este site y me parece un trabajo excelente, chapó para los admin.

  76. needer 31.03.2004 - 07:09 - #

    ya lo he si¡olucionado, era un problema con el formato de la tabla que no la habia creado correctamente. ta pronto

  77. Unregistered 02.04.2004 - 19:06 - #

    Me gustaria saber como usar este foro pero como modulo de un cms muy conocido lalamdo coolphp gracias me manda error con las variables mostrar template serai mucho pedir si lo hicieras en php puro y me lo pasas mi email es info@creativews.net o info@chiriweb.com

    Gracias.

    Mario Rios

  78. Ivanovich2050 17.04.2004 - 07:17 - #

    Es me muy gran ayuda. Los felicito por su capacidad de desarrollo de este sistema. Muchas Gracias

  79. Unregistered 18.04.2004 - 12:13 - #

    Dos preguntas:

    1.- En el index no aparecen los temas tal y como está el código que me bajé del tutorial. Al menos a mí no me aparecen

    [PHP]

    $rs = mysql_query($sql, $con);
    if(mysql_num_rows($rs)>0)
    {

    [/PHP]

    Pero si quito >0 si aparecen.

    [PHP]

    $rs = mysql_query($sql, $con);
    if(mysql_num_rows($rs))
    {

    [/PHP]

    No creo que sea un error, ya que en los apuntes se dice textualmente:

    “También realizamos una decisión, solo mostraremos los temas de nuestro foro si la cantidad de filas recuperadas desde la base son mayores de 0″

    2.- Ya que se trabaja con templates ¿no seria mas interesante eliminar esta variable

    [PHP]
    $color=($color==”"?”#5b69a6″:”");
    $row["color"] = $color;

    [/PHP]

    y determinar el color con un archivo css?

    Te pregunto esto porque me he bajado el script para estudiarlo y al igual que tienes un motivo para no hacer un include en el index, “eficacia”, puede que tengas un motivo para que el código sea así y no de otra manera.

    Gracias por tu tiempo

  80. amanda75 18.04.2004 - 12:17 - #

    :molesto: me echó fuera de mi mensaje y no he podido editarlo.

  81. cesar 18.04.2004 - 14:56 - #

    una cosa no me queda clara….
    debo copiar en la carpeta inicial de mi hosting el phpMyAdmin?……

  82. owei 26.04.2004 - 10:34 - #

    Hola yo tambien tengo el mismo problema en la linia 10 me faya esto:

    if(mysql_num_rows($rs)>0)

  83. Rex 26.04.2004 - 16:45 - #

    el comentario esta muy bueno esa linea tiene que ser asignada a la base de mysql

  84. rik4rdo 28.04.2004 - 09:31 - #

    he visto que a muchos les sale el mismo error que me sale a mi…son varios “Notices” que por lo que entiendo es por la configuracion del servidor para mostrar todos los errores, pero, es posible validar estas instrucciones para q no salgan estos notices?

    En la Pagina principal aparece:
    Notice: Undefined variable: color in c:\archivos de programa\easyphp1-7\www\pagina\foro\index.php on line 17

    En nuevo tema aparece:
    Notice: Undefined index: id in c:\archivos de programa\easyphp1-7\www\pagina\foro\respuesta.php on line 3

    Notice: Undefined index: citar in c:\archivos de programa\easyphp1-7\www\pagina\foro\respuesta.php on line 4

    y en los campos de “titulo” y “mensaje” de Nuevo Tema sale:

    Notice: Undefined variable: titulo in c:\archivos de programa\easyphp1-7\www\pagina\foro\funciones.php(6) : eval()’d code on line 10

    Notice: Undefined variable: mensaje in c:\archivos de programa\easyphp1-7\www\comincol\foro\funciones.php(6) : eval()’d code on line 14

    Por favor, alguien sabe como hacer para que no aparezcan estos notices sin cambiar la configuracion de mostrar errores del servidor????

  85. Pio 03.05.2004 - 12:35 - #

    buen articulo

  86. John 12.05.2004 - 18:27 - #

    Realmente facil y muy bueno.

  87. paul_hr@yahoo.es 14.05.2004 - 12:10 - #

    todo lo de esta pagian es exelentemente bueno para lu usuarios como mi persona tanto tambien para los que esta en aprendizaje gracias`por todo

  88. Unregistered 25.05.2004 - 08:17 - #

    damn, es super completo pero realmente no entiendo mucho, ando nesesitando un foro para poner en una pagina…. pero igual gracias :)

  89. Ruben Acosta 25.05.2004 - 12:40 - #

    Muy bien me gusto y esta facil

  90. giorgio 26.05.2004 - 15:37 - #

    interesante, claro sin vueltas inecesarias Felicidades!!!!!

  91. Alzophokus 14.06.2004 - 12:30 - #

    Jaja que son flooderos… El manual me servirá de mucho, al fin encuentro uno. Los felicito.

  92. lisalex 08.07.2004 - 12:05 - #

    un pequeño problema
    me sale esto:

    Warning: mysql_connect(): Access denied for user: ‘usuario@localhost’ (Using password: YES) in /www/grupoled/foro/configuracion.php on line 7

    Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /www/grupoled/foro/configuracion.php on line 8

    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /www/grupoled/foro/agregar.php on line 17
    Error al grabar un mensaje: mysql_error

  93. No Registrado 01.08.2004 - 15:27 - #

    Hola ya que no soy muy wen oen programacion quisiera saber que hago con los archivos que me descargue en el foro….en vez de escribir tantas webadas me baje el .zip con todas esas cosas ya echas y ahora no se que hacer…una ayuda please.¡¡¡ya que me fascina PHP 7.1

    quiero un amnual para principiantes¡¡¡

  94. No Registrado 11.08.2004 - 10:13 - #

    supercoco2000, Hago el foro pero no entiendo en el index.php y en el foro.php las variables color.

    como no se de donde salen ni para que me dan error y no puedo solucionarlo.
    Este es el error que me dan

    Notice: Undefined variable: color in
    c:\apache\apache\htdocs\taxi\foro\foro.php on line 18

    Aprovecho para decir que si entras en el formulario de respuesta y no contestas a nada (se supone que estas generando un nuevo tema) pues en las casillas del formulario salen algunos errores que borrandolos te dejan continuar. ¿como solucionamos esto?

    Gracias por todo

    Voy a probarlo a ver ke tal

  95. hermanvz 16.08.2004 - 21:07 - #

    Hola a todos.. donde esta el zip del foro para hecharle una probada.

  96. gustavo_falconi 18.08.2004 - 13:31 - #

    Buenas, he bajado los archvos del foro. Lo grabo todo donde debe pero a la
    hora de hacer un nuevo mensaje me crea el registro en la base de datos pero
    con los registos vacios. y dice que sin titulo y anonimo!
    al entrar a un tema no entra a anda y sigue en el index

    Al intentar agregar una respuesta clickando sobre el tema desde la pagina
    principal se ve como carga la pagina foro.php?id=XX pero se queda en esa.
    Que es lo que hago mal?
    ayudenme pliz
    Gracias de antemano

  97. gorka 21.08.2004 - 00:46 - #

    parace sencillo, a ver si consigo ponerlo bien

  98. No Registrado 06.09.2004 - 08:44 - #

    TENGO UN PROBLEMA CUANDO ENTRO A EL FORO QUE REALICE, ,ME ENVIA MENSAJE DE ERROR COMO ESTE.

    Warning: mysql_connect(): Access denied for user: ‘usuario@localhost’ (Using password: YES) in /var/www/html/foro/configuracion.php on line 7

    Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /var/www/html/foro/configuracion.php on line 8

    Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /var/www/html/foro/agregar.php on line 17
    Error al grabar un mensaje: mysql_error

    que puedo hacer

  99. No Registrado 12.09.2004 - 19:31 - #

    He creado un foro bajo gpl, pero está hecho para utilizar 100% clases y objetos. podéis echarle un vistazo en http://gorrister.no-ip.org y también ver cómo funciona en http://www.forosbsd.org.

    Un saludo. Ah, estoy un poco verde en el tema de implementar un motor de búsqueda, agradecería algún consejo o ayuda :)

  100. No Registrado 02.10.2004 - 05:20 - #

    Es normal que al agregar una respuesta, el archivo agregar.php no me redirija a ninguna página?
    Lo he solucionado quitando los Header(”Location: foro.php?id=$ident#$ult_id”); y agregando al final un javascript que redirija siempre a la página principal, pero no es lo mismo porque al responder un tema, en lugar de volver a él me envia a la principal.

    Alguna solución?
    Muchas gracias por el tutorial! Me ha venido de perlas :D

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.


Boletín

Agrega nuestro feed a  Netvibes
wikio Add to Technorati Favorites

-


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