Un espacio para los entusiastas del web

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.

Otros artículos relacionados

Califica esta nota:

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (36 votos, promedio: 4.28 de 5)
Loading ... Loading ...
496 comentarios en total.

Comentarios

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

  1. cvander

    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

    Excelente tutorial, es muy util para todos.


  3. Mickel

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


  4. Webstudio

    o_O!?

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


  5. Abel

    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

    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

    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

    Bueno y simple dos veces bueno


  9. Trulala

    Excelente articulo, gracias de verdad


  10. Leonel Holguín

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



  11. jaime

    excelente artículo, lo felicito.


  12. plancha

    esta increible,
    me salvo la vida,


  13. Unregistered

    Muy bueno


  14. Rcarloncho

    Esta bueno…


  15. Webstudio

    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.


  16. Baigorri

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


  17. andy

    hola, gracias por la informacion


  18. lucianoc

    Muy bueno


  19. gabriel

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


  20. molesto

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


  21. Unregistered

    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…


  22. Marcelo

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


  23. lailuluelo

    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


  24. _A_

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


  25. reportero2

    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


  26. [iNFeRNo]

    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


  27. angel

    esta muy bien


  28. [iNFeRNo]

    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 )


  29. [iNFeRNo]

    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


  30. cvander

    Ya fue corregido el link hacia la descarga.


  31. Rocket

    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 :(


  32. Unregistered

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



  33. PepeSys

    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!!


  34. Sut

    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


  35. Nok

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


  36. farmacon

    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.


  37. Kim

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


  38. Unregistered

    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


  39. Unregistered

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


  40. Unregistered

    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


  41. jakoujan

    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


  42. xAndrex

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


  43. Unregistered

    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


  44. Unregistered

    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


  45. Extremo

    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!


  46. Webstudio

    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.


  47. JGGA

    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?


  48. VaRT

    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


  49. Juan Manuel (plesk

    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


  50. Cielo

    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


  51. zaseg

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


  52. adrian

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


  53. Encarnacion Novelo

    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..


  54. MARC

    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.


  55. alex

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


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

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


  56. Unregistered

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


  57. xoriguer

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


  58. antonio

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


  59. 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 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


  60. scasablancas

    Muy explicativo


  61. supercoco2000

    *.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


  62. Unregistered

    buen ejemplo

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

    gracias pos su respuesta


  63. Unregistered

    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.


  64. Unregistered

    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?


  65. Paco_Ramos

    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


  66. Alexandro

    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 :)


  67. Unregistered

    hay algun ejemplo donde ver este foro?
    gracias


  68. Unregistered

    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)


  69. hola

    hola este manual me ha servido mogollon gracias


  70. Tukzone

    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.


  71. Unregistered

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


  72. needer

    Muy util y bastante desglosado.


  73. Unregistered

    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.


  74. needer

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


  75. Unregistered

    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


  76. Ivanovich2050

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


  77. Unregistered

    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


  78. amanda75

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


  79. cesar

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


  80. owei

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

    if(mysql_num_rows($rs)>0)


  81. Rex

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


  82. rik4rdo

    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????


  83. Pio

    buen articulo


  84. John

    Realmente facil y muy bueno.


  85. paul_hr@yahoo.es

    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


  86. Unregistered

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


  87. Ruben Acosta

    Muy bien me gusto y esta facil


  88. giorgio

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


  89. Alzophokus

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


  90. lisalex

    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


  91. No Registrado

    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¡¡¡


  92. No Registrado

    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


  93. hermanvz

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


  94. gustavo_falconi

    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


  95. gorka

    parace sencillo, a ver si consigo ponerlo bien


  96. No Registrado

    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


  97. No Registrado

    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 :)


  98. No Registrado