Buenas, buenas..
En este tutorial les voy a explicar cómo realizar un sistema de mensajes privados para incorporar en tu web, foro, etc...
Empezamos con lo básico; 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 ;
Explicaciones:
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
Bien, una vez creada la tabla, vamos con el código:
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">
</p>
<p>Receptor:<br>
<input type="text" name="receptor" id="receptor">
</p>
<p>Título:<br>
<input type="text" name="titulo" id="titulo">
</p>
<p>Mensaje:<br>
<textarea name="mensaje" id="mensaje" cols="45" rows="5"></textarea>
</p>
<p>
<input type="submit" name="enviar" id="enviar" value="Enviar">
</p>
</form>
Bien, una vez terminado el formulario, pasamos a mostrar los mensajes...
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 } ?>
Y eso es todo

Si tienen sistema de usuarios, les recomiendo para mostrar los mensajes solo de tu usuario, en el index.php, cambiar:
$query = mysql_query("SELECT * FROM mensajes ORDER BY id DESC");
Por esto:
$query = mysql_query("SELECT * FROM mensajes WHERE receptor = '$_COOKIE[usuario]' ORDER BY id DESC");
Espero que les haya gustado
