Actualizado el domingo, 19 junio, 2016
Hoy explicamos como agregar un sistema de mensajes privados entre los usuarios de tu web. Necesitaremos una tabla en una base de datos SQL. El script esta hecho en PHP.
Creamos la tabla:
CREATE TABLE IF NOT EXISTS `mensajes` ( `id` int(11) NOT NULL AUTO_INCREMENT, `titulo` varchar(255) NOT NULL, `receptor` varchar(30) NOT NULL, `emisor` varchar(30) NOT NULL, `mensaje` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
- id: ID del mensaje, útil para que se muestren en orden descendente o ascendente
- titulo: Título del mensaje
- emisor: El nick del usuario que escribe el mensaje
- receptor: El nick del usuario que recibe el mensaje
- mensaje: Contenido del mensaje
enviar.php
<?php include("conectar.php"); ?> <?php if(isset($_POST["enviar"])){ $titulo = $_POST["titulo"]; $receptor = $_POST["receptor"]; $emisor = $_POST["emisor"]; $mensaje = $_POST["mensaje"]; $query = mysql_query("INSERT INTO mensajes (titulo, receptor, emisor, mensaje) VALUES ('$titulo','$receptor','$emisor','$mensaje')") or die(mysql_error()); echo '<script>alert("El mensaje se envio exitosamente a '.$_POST["receptor"].'")</script>'; } ?> <form name="mp" method="post" action=""> <p>Tu Nick:<br> <input type="text" name="emisor" id="emisor">
Hemos creado el formulario.
index.php
<?php include('conectar.php'); ?> <?php if(isset($_GET["borrar"])){ mysql_query("DELETE FROM mensajes WHERE id = '$_GET[borrar]'"); echo "<script>alert('El mensaje número $_GET[borrar] ha sido eliminado'); document.location=('index.php')</script>"; } ?> <?php if(isset($_GET["id"])){ $sql = mysql_query("SELECT * FROM mensajes WHERE id = '$_GET[id]'"); $fetch = mysql_fetch_array($sql); echo"<table><tr><td> De: $fetch[emisor] </td></tr><tr><td> Para: $fetch[receptor] </td></tr><tr><td> Mensaje: $fetch[mensaje] </td></tr></table><hr>[<a href='index.php'>Volver</a> | <a href='index.php?borrar=$fetch[id]'>Eliminar</a>]"; }else{ ?> <?php $query = mysql_query("SELECT * FROM mensajes ORDER BY id DESC"); if(mysql_num_rows($query)){ while($row = mysql_fetch_array($query)){ echo "<table><tr><td> De: $row[emisor] </td></tr><tr><td> Para: $row[receptor] </td></tr><tr><td> [<a href='index.php?id=$row[id]'>Leer mensaje</a>] </td></tr></table> <hr>"; } }else{ echo'No hay mensajes<hr>'; } ?> [<a href="enviar.php">Enviar Mensaje</a>] <?php } ?>
Con este code mostramos los mensajes.
Si tienes un sistema de usuarios, te recomiendo que para mostrar los mensajes solo de tu usuario, cambies en el index.php:
$query = mysql_query("SELECT * FROM mensajes ORDER BY id DESC");
por…
$query = mysql_query("SELECT * FROM mensajes WHERE receptor = '$_COOKIE[usuario]' ORDER BY id DESC");
HOLA EN TU PRIMER PARTE DE ESTE POST DONDE DICE Creamos la tabla:
ESO VA DONDE EN PHPMYADMIN EN LA PARTE QUE DICE SQL EJECUTE SENTENCIAS SQL EN LOCALHOST O NO ENTIENDO DONDE TENDRIA QUE PONER ESE CODIGO AMIGO?
La puedes crear como tu comentas o bien desde la consola.
Mira la documentación oficial: https://dev.mysql.com/doc/refman/5.7/en/create-table.html