Comunidad PHPeros

Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado por: Masato en 14 de Septiembre de 2009, 22:31:41 pm

Título: [TUTORIAL] Foro sencillo By Masato
Publicado por: Masato en 14 de Septiembre de 2009, 22:31:41 pm
Bueno amigos de PHPeros, como llevo bastante tiempo sin ningún aporte, hoy les quiero presentar este código, es muy simple, pero les puede ayudar bastante a mejorar ^^.

Empecemos:

conectar.php

<?PHP
/** SISTEMA DE FOROS SIMPLE By MASATO **/
/** ESTE SISTEMA DE FOROS ES ÚNICAMENTE CON EL FIN DE EXPLICAR PHP A LOS NOVATOS **/

$db_host = ('localhost'); //Nombre del servidor MySQL, por defecto localhost
$db_user = ('root'); //Usuario de la base de datos
$db_pass = ('tu_pass'); //Contraseña de la base de datos
$db_name = ('forito'); //Nombre de la base de datos

$conectar = mysql_connect($db_host, $db_user, $db_pass) or die (mysql_error()); //Conectamos a la base de datos

mysql_select_db($db_name, $conectar) or die (mysql_error()); //Seleccionamos la base de datos

?>

index.php

<?PHP
/** SISTEMA DE FOROS SIMPLE By MASATO **/
/** ESTE SISTEMA DE FOROS ES ÚNICAMENTE CON EL FIN DE EXPLICAR PHP A LOS NOVATOS **/
include('conectar.php'); //Incluimos el archivo conectar.php

echo "<b><a href='nuevo.php'>Dejar un Mensaje</a></b><br><hr>"; //Boton para dejar mensaje

$seleccionar = mysql_query("SELECT * FROM mensajes ORDER BY id ASC"); //Acemos la consulta a la base de datos para mostrar los mensajes ordenados por ID y en orden asendente
if (mysql_num_rows($seleccionar)) { //Si hay contenido en la DB continuamos con while

while ($row = mysql_fetch_array($seleccionar)) { //Hacemos un bucle para que nos muestre todos los mensajes

echo "<b><a href='mensajes.php?id=$row[id]'>$row[titulo]</a></b>"; //Mostramos el título con un enlace al mensaje y sus respuestas
echo "<br><hr>"; //Bajamos un renglon y creamos una linea

}

} else { //Si no hay ningún mensaje en la DB mostramos lo siguiente

echo "Nuestro foro no posee mensaje alguno";

}

?>


nuevo.php
<?PHP
/** SISTEMA DE FOROS SIMPLE By MASATO **/
/** ESTE SISTEMA DE FOROS ES ÚNICAMENTE CON EL FIN DE EXPLICAR PHP A LOS NOVATOS **/
include('conectar.php'); //Incluimos el archivo conectar.php

if (isset($_POST['enviar'])) { //Si se apretó el boton de enviar, grabamos los datos

$insert = "INSERT INTO mensajes (autor,titulo,mensaje) VALUES ('".mysql_real_escape_string($_POST['autor'])."', '".mysql_real_escape_string($_POST['titulo'])."', '".mysql_real_escape_string($_POST['mensaje'])."')"; //Consulta para agregar el mensaje

if (mysql_query($insert) or die (mysql_error())) { //Si se agregó el mensaje correctamente le mostramos un mensaje

echo "Su mensaje ha sido agregado correctamente";

} else { //Si no le mostramos el mensaje de error

echo "Hubo un error al agregar el mensaje";

}

} else { //Si no se a pulsado el boton ENVIAR, mostramos el formulario

echo "<form action='nuevo.php' method='POST'>
Autor: <input type='text' name='autor'>
<br>
T&iacute;tulo: <input type='text' name='titulo'>
<br>
Mensaje: <textarea name='mensaje'></textarea>
<br>
<input type='submit' name='enviar' value='Enviar mensaje'>";

}

?>

mensajes.php
<?PHP
/** SISTEMA DE FOROS SIMPLE By MASATO **/
/** ESTE SISTEMA DE FOROS ES ÚNICAMENTE CON EL FIN DE EXPLICAR PHP A LOS NOVATOS **/
include('conectar.php'); //Incluimos el archivo conectar.php

$get = $_GET['id']; //Definimos $_GET['id'] como $get

$seleccionar = mysql_query("SELECT * FROM mensajes WHERE id = '$get'"); //Acemos la consulta a la base de datos para mostrar los mensajes ordenados por ID y en orden desendente donde la ID es igual a la enviada por $_GET

$row = mysql_fetch_array($seleccionar); //Extraemos los resultados para mostrarlos

echo "<a href='respuesta.php?id=$get'><b>RESPONDER</b></a>
<br><br>";

echo "<b>T&iacute;tulo:</b> <i>$row[titulo]</i>
<br>
<b>Mensaje:</b>
<br>
$row[mensaje]
<br>
<b>Enviado por:</b> <i>$row[autor]</i>"; //Mostramos los datos ordenados

$seleccionar1 = mysql_query("SELECT * FROM respuestas WHERE respuestas = '$get' ORDER BY id DESC");

if (mysql_num_rows($seleccionar1) or die (mysql_error())) { //Si hay respuestas mostramos los datos ordenados

$row1 = mysql_fetch_array($seleccionar1);

echo "<hr>";

echo "<b>T&iacute;tulo:</b> <i>$row1[titulo]</i>
<br>
<b>Mensaje:</b>
<br>
$row1[mensaje]
<br>
<b>Enviado por:</b> <i>$row1[autor]</i>"; //Mostramos los datos ordenados

echo "<br><br>
<a href='respuesta.php?id=$get'><b>RESPONDER</b></a>";

} //Si no hay respuestas, no se mostrará nada

?>


respuesta.php
<?PHP
/** SISTEMA DE FOROS SIMPLE By MASATO **/
/** ESTE SISTEMA DE FOROS ES ÚNICAMENTE CON EL FIN DE EXPLICAR PHP A LOS NOVATOS **/
include('conectar.php'); //Incluimos el archivo conectar.php

$get = $_GET['id']; //Definimos $_GET['id'] como $get

if (isset($_POST['enviar'])) { //Si se apretó el boton de enviar, grabamos los datos

$insert = "INSERT INTO respuestas (autor,titulo,mensaje,respuestas) VALUES ('".mysql_real_escape_string($_POST['autor'])."', '".mysql_real_escape_string($_POST['titulo'])."',' ".mysql_real_escape_string($_POST['mensaje'])."', '$_POST[get]')"; //Consulta para agregar el mensaje

if (mysql_query($insert)) { //Si se agregó el mensaje correctamente le mostramos un mensaje

echo "Su mensaje ha sido agregado correctamente";

} else { //Si no le mostramos el mensaje de error

echo "Hubo un error al agregar el mensaje";

}

} else { //Si no se a pulsado el boton ENVIAR, mostramos el formulario

echo "<form action='respuesta.php' method='POST'>
Autor: <input type='text' name='autor'>
<br>
T&iacute;tulo: <input type='text' name='titulo'>
<br>
Mensaje: <textarea name='mensaje'></textarea>
<br>
<input type='submit' name='enviar' value='Enviar mensaje'>
<input type='hidden' value='$get' name='get'>"; //Formulario, usamos un input hidden para mandar el valor de GET

}

?>

Base de Datos:
Código: [Seleccionar]
CREATE TABLE `mensajes` (
  `id` int(11) NOT NULL auto_increment,
  `autor` varchar(255) NOT NULL,
  `titulo` varchar(255) NOT NULL,
  `mensaje` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE `respuestas` (
  `id` int(11) NOT NULL auto_increment,
  `autor` varchar(255) NOT NULL,
  `titulo` varchar(255) NOT NULL,
  `mensaje` text NOT NULL,
  `respuestas` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Bueno, eso es todo, espero que les sirva y recuerden que esto lleva tiempo, así que si lo toman para su web, por lo menos no le quiten quien lo hizo ^^

15/9/09: Arreglado conectar gracias a naveda ^^

SALU-2 :D :D
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: westwest en 14 de Septiembre de 2009, 22:40:47 pm
Esta muy bueno para enseñar a los principiantes masato, excelente tutorial
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: reef en 14 de Septiembre de 2009, 22:43:06 pm
Excelente aporte masato te felicito :P Nunca habia podido crear un foro por uno mismo o no se me habia ocurrido :P
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: Masato en 14 de Septiembre de 2009, 22:43:50 pm
Gracias west ^^, en fin, gracias a west me di cuenta de un par de cosas, en fin, les explico porque puse htmlentities, lo que pasa es que no me acordaba de mysql_real_escape_string, xD, en fin, ahora lo corrijo
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: naveda en 15 de Septiembre de 2009, 11:38:26 am
Veo un fail como una casa...

¿Que eso de pasarle un texto a la funcion mysql_error() cuando debe recibir OPCIONALMENTE el enlace a la base de datos?
Código: [Seleccionar]
$conectar = mysql_connect($db_host, $db_user, $db_pass) or die (mysql_error("No se puede conectar a la base de datos")); //Conectamos a la base de datos
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: Masato en 15 de Septiembre de 2009, 18:32:34 pm
Bueno, como dije anteriormente, este código lo tenía desde hace mucho en mi PC y se me dió por terminarlo xD, no revisé mucho el conectar ya que andaba bien, pero en conclución, que te parece?
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: naveda en 15 de Septiembre de 2009, 19:29:06 pm
Hombre, como ejemplo de aplicacion sencilla no esta mal, pero para aplicarlo como foro en alguna web...
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: crunch en 15 de Septiembre de 2009, 19:58:39 pm
Hombre, como ejemplo de aplicacion sencilla no esta mal, pero para aplicarlo como foro en alguna web...
Ya lo dice en el tutorial.
Citar
/** ESTE SISTEMA DE FOROS ES ÚNICAMENTE CON EL FIN DE EXPLICAR PHP A LOS NOVATOS **/

--
Buen aporte =)
¿Alguien lo instaló? me gustaría ver como es, curiosidad mas que otra cosa.
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: Masato en 16 de Septiembre de 2009, 20:27:27 pm
Acá unas capturas:

Vista de todos los mensajes:
(http://img21.imageshack.us/img21/7536/foro1y.png)

Vista de los mensajes:
(http://img33.imageshack.us/img33/2426/foro2g.png)

Vista de Agregar/Responder mensaje:
(http://img15.imageshack.us/img15/3923/foro3k.png)
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: naveda en 16 de Septiembre de 2009, 21:24:28 pm
Ya lo dice en el tutorial.
--
Buen aporte =)
¿Alguien lo instaló? me gustaría ver como es, curiosidad mas que otra cosa.

Se lo que pone, simplemente doy mis puntos de vista, como buen lugar de opinión es este, ¿no te parece?
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: Siquillote en 13 de Noviembre de 2009, 14:51:15 pm
Perdón por responder fuera de tiempo pero tengo una duda u opinión. Haber este foro no esque tenga diseño pero por programación está bastante bien

Masato ¿por que no haces que se muestren awars? Yo se los voi a poner y gracias por todo :)
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: hackerwcb en 14 de Abril de 2010, 01:29:13 am
hola tengo una duda con el foro sencillo que nos enseñaste quiero saber como se hace para que aparezcan todas las respuestas a un tema porque a mi SOLO ME APARECE LA ULTIMA RESPUESTA que toca agregar o que de ante mano se los agradezco
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: Joel en 08 de Mayo de 2012, 00:33:00 am
Oye amigo, tengo un problema en el archivo respuesta.php

Cuando quiero enviar una respuesta, el  boton de envio no funciona, se queda trabado, porque este script lo implemente en un futuro portal que estoy haciendo.. y mejore bastante este script... pero nose porque no me envia el comentario o respuesta..

Intente de varias formas y nada..

Este es un futuro portal que estoy haciendo a partir de este script, algo parecido a taringa, mira metete a un post de ejemplo: http://pixoloo.uni.me/Topic.php?id=7

Y comenta.... no se porque no reacciona el boton de envio :/ pero primero debes ingresar. User: Admin Pass: admin
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: Animus en 14 de Mayo de 2012, 12:04:44 pm
Utiliza el mio, no es un tutorial pero bueno :)
Título: Re:[TUTORIAL] Foro sencillo By Masato
Publicado por: KevinxD en 18 de Junio de 2012, 13:43:02 pm
Que esto no es un foro es un sistema de comentarios, ya lo probe yo  pero buen aporte