Comunidad PHPeros
Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado 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í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í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í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í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:
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
-
Esta muy bueno para enseñar a los principiantes masato, excelente tutorial
-
Excelente aporte masato te felicito :P Nunca habia podido crear un foro por uno mismo o no se me habia ocurrido :P
-
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
-
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?
$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
-
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?
-
Hombre, como ejemplo de aplicacion sencilla no esta mal, pero para aplicarlo como foro en alguna web...
-
Hombre, como ejemplo de aplicacion sencilla no esta mal, pero para aplicarlo como foro en alguna web...
Ya lo dice en el tutorial.
/** 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.
-
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)
-
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?
-
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 :)
-
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
-
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
-
Utiliza el mio, no es un tutorial pero bueno :)
-
Que esto no es un foro es un sistema de comentarios, ya lo probe yo pero buen aporte