Sistema de Mensajes Privados

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

2 Comentarios

  1. JAVIER
    27/07/2017
  2. sergio
    27/07/2017

Agregar comentario