Estás en Inicio / Editorial / Desarrollo Web
17.06.2003
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.
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:
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.
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.
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.
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 ( >, <, "e;, &).
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.
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.
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:
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:
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:
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?
482 comentarios en total.
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘usuario’@'localhost’ (using password: YES) in /home/companam/public_html/configuracion.php on line 7
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in /home/companam/public_html/configuracion.php on line 8
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/companam/public_html/agregar.php on line 17
Error al grabar un mensaje: mysql_error
?????????????primera ves q me pasa ????? q es???
he hecho todas las páginas que se indica en este tutorial pero no funciona, cuál debe ser la página de inicio del foro, aparte de las del tutorial se deben hacer más páginas y como nombrarlas y en que lenguaje, me urge una respuesta
gracias
Respuesta a Eduardo Barrios: en configuracion.php debes cambiar el “user” por “usuario” y en password solo deja las comillas juntas y no escribas nada…. simplemente es eso y te lo aseguro xq acabo de cambiar configuracion.php con un usuario inventado y password (y no uso password) y me salieron las mismas lines…. espero te sirva. oe si te sirve reponde por aqui.
Respuesta Raúl Morán: comienza bajandote el zip http://www.maestrosdelweb.com/editorial/util/foro.zip extraelo y pegalo dentro de htdocs o www o donde tueviera q ser, de ahi abre configuracion.php y cambia tu usuario y tu password, si estas en tu casa tu usuario debe ser root y sin password, o igual cuando te sale el erro te dice tu usuario, por ejmplo: –Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘usuario’@’localhost’ (using password: YES) in /home/companam/public_html/configuracion.php on line 7– esto kiere decir q su usuario es usuario y q escribio un password donde no existe password, bueno tambien tienes q crear una base de datos solo para luego crear la tabla foro (ya lo explike arribita, leelo), bueno nada mas, responde si te sirvió de algo todo este rollo q te dije.
http://localhost/pucca/foro/agregar.php —->tengo el siguiente error=Error al grabar un mensaje: mysql_error en el archivo agregar.php
WILLY: elimina todo lo q tienes dentro del body en agregar.php y copia esto:
deberia salirte todo bien.
< ?// // <–estos simbolos escribelos juntos
nooooo, esta pagina no me deja escribir el codigo, bueno el error es xq no se a ejecutado la sentencia, denuevo copia y pega las lineas sql y sql. en donde dice: grabamos el mensaje en la base y correlo denuevo
include(’header.html’), include(’footer.html’), no se en donde puedo encontrar estos archivos, pro que me saca error en el index.
muchas gracias, en este foro he aprendido.
quisiera saber si alguien me puede ayudar con el pase de parametros de una pagina Html a un arhivo pHP, antes funcionaba pero ahora no.
por favor ayudenme
Excelente, algunos problemas pero facilmente solucionables si miras el codigo un poquito… Les sugiero que hagan lo mismo y no venir llorando… yo corregà esto:
$ident = $_POST["identificador"]?$_POST["identificador"]:0;
para evitar un valor vacio…
y la consulta a la BD quedó asi:
// 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())”;
Observese que le quite los apostrofes a $ident
Luego el foro va de perillas… voy a hacerle modificaciones para que quede funcional en mi sitio
yo estoy usando el xampp y la verdad que no tengo idea donde poner la base de datos, porque los php y los html los dejo en la carpeta httdocs pero me tira un monton de errores al querer acceder… si alguien puede darme una mano se los agradecerÃa…
hola saves me interese ase poco por aser un foro tu articulo me paresio bastante bueno pero por culpa de mi poca practica y de ser tan nuevo en este lenguaje nose como reparar los errores que me dio el ejemplo planteado aca.
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘usuario’@'localhost’ (using password: YES) in C:\AppServ\www\foro\configuracion.php on line 7
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\foro\configuracion.php on line 8
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\foro\agregar.php on line 17
Error al grabar un mensaje: mysql_error
y no agrega nada al foro segun yo mi coneccion esta bien establesida con el server modifique el arghivo correspondiente gracias de ante manos si alguien me puede responder
hola saven no puedo hechar a correr el foro estoy usando appserver y me da el sig problema
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘usuario’@'localhost’ (using password: YES) in C:\AppServ\www\foro\configuracion.php on line 7
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\foro\configuracion.php on line 8
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\AppServ\www\foro\agregar.php on line 17
Error al grabar un mensaje: mysql_error
si mi usuario es root , pass 12345, bd myweb …donde esta el error…
yo soy nuevo en esto de lo0s foross
ayudenme a crear uno
foro
che … no entiendo un pedo!! jaja me gustaria q me expliken para agregarle a mi web ni7gaming.com.ar un foro!!!
turcolarenga@fasination.com.ar NO MAILS, CHAT
La idea de este foro ha sido implantada en http://www.carnavaldemalaga.com , muchisimas gracias por esta idea de templates, espero aplicarla pronto para toda la página .
Un abrazo y enhorabuena por el tutorial
Como puedo hacer cuando alguien no ingresa un campo obligatorio o ya este registrado por ejemplo no me lleve a otra pagina sino que al lado o abajo de textbox aparesca un mensaje y no se pierdan los datos ya escritos. gracias.
adasdasdaa
si alguien me puede ayudar envieme un mail a tatopichot@hotmail.com QUiero crear un simple php para mostrar noticas, editarlas y borrarlas. Para insertar en una web mia…. y la verdad no tengo idea estoy trabado.
Gracias
tatopichot@hotmail.com
muy lindo todo pero humildemente en algunos lugares de tu explicacion me parece que te bandeaste y te fuiste a cualquiera… si se te consulta sobre como CREAR EL PRIMER FORO no entiendo como mandás leer el manual de MySQL y encima mezclas las cosas con templates??… . la parte que no creo que se vea clara es la parte de … EL PRIMER FORO QUE SE ARMA!!! .. igual muy lindo y ameno… si queres ayudar a un interesado en armar su primer foro te lo voy a agradecer sinceramente!!.. (me pone como error al enviar cada mensaje un… “error al grabar un mensaje =mysql_error - saludos a todos!!!
malditos
Hola amigos saludos. Yo tambien soy nuevo en esto de la programacion en php, con respecto a la creacion del foro la mayoria de los errores se generan debido a que en
$sql = “SELECT id, autor, titulo, fecha, respuestas, ult_respuesta “;
$sql.= “FROM foro WHERE identificador=0 ORDER BY ult_respuesta DESC”;
$rs = mysql_query($sql, $co);
if(mysql_num_rows($rs)>0)
················
el probela es el siguiente: la variable $co no esta identificada, uds. haran lo siguiente:
van a crear —>function crear(){
global $co;
esto les permitira que el query les trabaje.
aaa otra cosa el pana no explico sobre el header.html ni el footer.html…
esos son llamados a otros codigo en los cuales ustedes pueden incluir imagenes o lo que a ustedes les gusten “es nada más para mejorar el especto de la pagina”.
Sin mas que decir me despido y espero que esto le ayude porque pari una y parte de la otra jajaja
Muy buen tutorial..
me a servido de mucha ayuda
…………………………………………………..
Para los que juegen lineage2
Se publica un servidro kamael para lo interesados
Favor de visitar el foro http://www.l2bloodline.foroactivo.com
Buen tutorial^^!
Vista nuestro foro l2bloodline.foroactivo.com
Para los que juegen lineage2 servidor kamael
me urge saber como hacer un modulo ayudenmeeeeeeeeeeeeeeee plisssssssssssssssssssssssss yo hice mi pagina ehh picado a todos lados y eh aprendido algo un saludo
Hola Espero esten bien..!!
Tengo un problemita y la verdad me tiene parada en la creacion del foro… ya le hecho mil cosas… pero resulta es que el foro no me muestra ni los mensajes ni nada… si me deja insertar mensajes pero a la hora de imprimirlo me muestra las paginas vacias… refente al autor, mensaje, respuesta, en la pagina que abre el link titulo tampoco me muestra nada.. es como sino imprimiera esos items…
Me podrian ayudar les agradeceria muchisimos…
Mi correo es : moroanma@hotmail.com
muy buena ayuda pero tengo unos problemas con esto
———————————-
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);
}
—————————–
me sale el siguiente error:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\phpdev\www\foro prueba\index.php on line 18
Warning: Failed opening ‘footer.html’ for inclusion (include_path=’.;C:/phpdev/php/includes;C:/phpdev/php/class’) in c:\phpdev\www\foro prueba\index.php on line 30
si me podrias ayudar te lo agradeceria mucho y si me contestas a mi correo mas gracias
HOla como estan yo tambien tengo el mismo error que madelin me pordrian ayudar porfavor gracias… mi correo es adrihellokitty@gmail.com
hola que tal, el foro esta de lujo pero tengo un problemilla si el foro lo tengo en un host de paga no tengo problem funciona pero si lo tengo local ya no alguien sabe a que se debe gracias
Amigos… como puedo hacer una rutina de suma interactiva, es decir voy introduciendo las cantidades y me van arojando el resultado al mismos tiempo en otra casilla de texto….????
Ayudenme please….
By Jisoftware
Hola estoy apenas aprendiendo programacion y php, y cuando hago un documento HTML y otro dependiente de este, cuando el html llama al php este no funciona y se habre como un html donde se visualiza todo el codigo de la pagina php. ¿alguien me puede decir que esta ocurriendo?
Pablo, te doy un apreton de manos virtual y mis felicitaciones.
IncreÃble, espectacular, gracias!.
tonterias si ganas se publica en un libro
moomin moomin
hola hola
como hago para que el mensaje a mostrar no me aparesca en una misma linea
tengo conocimientos básicos y necesito que me muestren tambien el condigo de las paginas temaas.html y titulos.html
mil gracias
conozco solo un poco del tema y necesito que me muestren el codigo de las paginas temas.html y titulos.html
gracias
Genial. esta muy bueno el tutorial.. tomare algunas cosas para mejorar mi foro…
Chido..
Guau, acabo de descubrir este tutorial, y está muy bien. Sencillo pero didáctico. Sólo querÃa comentar que, a dÃa de hoy, sigue resultando útil :p.
Ninguno
muchisimas graciaas ,de verdad que si
exelent
Estimado amigo, me parece muy interesante la manera en la k expones el desarrollo de un foro, felicitaciones por el espacio que tienes y esperome orientes en la generacion de mi propo foro.
saludos desde La Paz - Bolivia
hola la verdad estoy aprendiendo php y mysql
estoy realizando un registro de usuarios en uuna base y no me funciona me podrias ayudar
hola amigo
realmente un buen codigo
hola que tal soy el chico de los vientos
ayuda alguien que sepa me puede agregar y ayudar a crear un foro mi msn es david.853@hotmail.com
dsfdsfdsf
asdasdsaasddsasadsad
asdasdsaasddasdsasadsad
hola me agregan kiero aser un foro yo les enseño cosas o algo a cambio pero agregenme lol david.853@hotmail.com
hola me podrian decir como descargar mysql 1.0.14a para hacer mi proyecto , bye y gracias
saludos amigo me sale el siguiente error en la pagina de index : Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘david’@'localhost’ (using password: YES) in C:\wamp\www\foro\foro\configuracion.php on line 7
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\foro\foro\configuracion.php on line 8
hola me sale el siguiente error en index ….Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘david’@'localhost’ (using password: YES) in C:\wamp\www\foro\foro\configuracion.php on line 7
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\foro\foro\configuracion.php on line 8
Mmm…
Yo creo que esto es excelente!!!
estoy maravillado y pues aun no lo eh probado pero en cuanto tenga la oportunidad lo hare.
Te felicito y sin adularte pero tienes mi admiracion.
Saludos y espero estar en contacto…
Me parece excelente.
Si hay algunos desperfectos, pues es solo cosa del programador (cuestion de arreglar y personalizar), pero en si esto esta muy bien!!! y una vez mas…
FELICIDADEZ!!! muy bueno.
el tutorial esta super pero tengo un error, en index y es este: Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/adondeva/public_html/foro/index.php on line 10
y no se como solucionarlo me podrian ayudar porfa
angy_adrianita@hotmail.com
Yo soy mu tonto porque no me e enterado de nada, me gustari que me lo explicaras como postear. Gracias de adelantado
super bueno el foro pero queria si me puede ayudar como puedo hacer para eliminar los mensajes
si me puede mandar los comandos por favor
este correo shumasher25@hotmail.com atte gracias
Gracias por el aporte, es genial!!!
Hola! Pablo Rigazzi le quiero felicitar por esta excelente guÃa. Estaba buscando un material como este. Gracias. Hasta pronto.
Muchas gracias por este tutorial lo voy a probar a ver si puedo hacer algo…
Gracias, con este articulo estoy preparada para realizar mi propio foro php
Un saludo
Saludos, chevere lo del foro, pero me pueden ayudar con una cosa:
No entendi bien lo de la base de datos, como me lo creo, es decir en que programa.
gracias por su ayuda. mi correo es freddy_gigio@hotmail.com
entren en mi foro los ayudare
que javascript usas?! te recomiendo el location.href(”"); pues este no te creará conflicto con ningun navegador… sea IE o Mozilla..
un saludo me fue de mucha ayuda el foro
la verdad es un foro muy practico gracias por el aporte
buen dÃa.
Más que un foro, me gustarÃa saber si alguien sabe donde puedo encontrar scripts de clasificados en php similares a: http://www.clasiefectivos.com
Además quisiera despúes poder agregarle un foro, pero primero deseo instalar un script potente de clasificados. Gracias.
no encuentro el archivo dle foro, alguien me lo puede pasar?
hola ùes muchas gracias apenas estoy pensando hacer un foro y pues no tenia idea de como se hacian me has facilitado muchas cosas de verdad muchas gracias por todo
kbri xfbcl gjqwd nbwhzkcjm mezwfcrax rdoglae nlkfijgqe
mi foro
muy bueno
muchas gracias me an salbado la vida el tutorial es ta genial y es sencillo entender…
tu articilo esta buenisimo recien me inicie en le mundo de la meb asi que esta publicacion me facilito mucho las cosas… gracias ![]()
Si desea crear un foro gratis, puede utilizar un alojamiento gratuito: http://www.forums-free.com/es/
revisar
Notice: Undefined variable: color in c:\archivos de programa\easyphp1-7\www\pagina\foro\index.php on line 17
Notice: Undefined index: id in C:\EasyPHP\home\www\respuesta.php on line 3
Notice: Undefined index: citar in C:\EasyPHP\home\www\respuesta.php on line 4
Me pasa lo mismo que a otros… que desesperacion.
asdfasdf
sadf
s
adf
sadf
s
adf
s
adf
sa
df
sadf
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