Comunidad PHPeros

Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado por: Warlox en 22 de Abril de 2009, 22:36:27 pm

Título: [Tutorial] Sistema de Mensajes Privados
Publicado por: Warlox en 22 de Abril de 2009, 22:36:27 pm
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:

Código: [Seleccionar]
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

Código: [Seleccionar]
<?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 (&#39;$titulo&#39;,&#39;$receptor&#39;,&#39;$emisor&#39;,&#39;$mensaje&#39;)") or die(mysql_error());
echo &
#39;<script>alert("El mensaje se envio exitosamente a &#39;.$_POST["receptor"].&#39;")</script>&#39;;
}
?>

<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

Código: [Seleccionar]
<?php include(&#39;conectar.php&#39;); ?>
<?php
if(isset($_GET["borrar"])){
mysql_query("DELETE FROM mensajes WHERE id = &#39;$_GET[borrar]&#39;");
echo "<script>alert(&#39;El mensaje número $_GET[borrar] ha sido eliminado&#39;); document.location=(&#39;index.php&#39;)</script>";
}
?>

<?php
if(isset($_GET["id"])){
$sql mysql_query("SELECT * FROM mensajes WHERE id = &#39;$_GET[id]&#39;");
$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=&#39;index.php&#39;>Volver</a> | <a href=&#39;index.php?borrar=
$fetch[id]&#39;>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=&#39;index.php?id=
$row[id]&#39;>Leer mensaje</a>]
                  </td></tr></table>
  <hr>"
;
  }
}else{
echo&#39;No hay mensajes<hr>&#39;;
}
?>

[<a href="enviar.php">Enviar Mensaje</a>]
<?php ?>

Y eso es todo :P

Si tienen sistema de usuarios, les recomiendo para mostrar los mensajes solo de tu usuario, en el index.php, cambiar:

Código: [Seleccionar]
$query = mysql_query("SELECT * FROM mensajes ORDER BY id DESC");

Por esto:

Código: [Seleccionar]
$query = mysql_query("SELECT * FROM mensajes WHERE receptor = '$_COOKIE[usuario]' ORDER BY id DESC");

Espero que les haya gustado :P
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: Masato en 27 de Abril de 2009, 22:59:53 pm
Muy buen aporte amigo ^^, te daría un +1 si pudiera.

Esto me va a servir para el sistema de foros que me estoy haciendo.
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: x.mara.x en 02 de Mayo de 2009, 20:01:38 pm
-.- haz agarrado mi codigo..
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: Warlox en 04 de Mayo de 2009, 06:00:47 am
Cual codigo? o.o
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: jimmysito96 en 06 de Mayo de 2009, 02:08:52 am
como ago para enviarselo a todos los registrados
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: Masato en 06 de Mayo de 2009, 18:58:07 pm
Facil, haces una lista de todos los usuarios, y que aparezcan en donde dice remitente
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: jimmysito96 en 07 de Mayo de 2009, 00:16:20 am
Cual codigo necesito para q solo vea los mensajes el receptor
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: Warlox en 09 de Mayo de 2009, 02:21:30 am
A mi si me funciona o.o
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: HooKiPo en 11 de Junio de 2009, 03:33:21 am
tengo una pregunta? cual codigo es para advertirle a los usuarios qe su reseptor no existe?? lo probare gracias :D
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: x.mara.x en 13 de Junio de 2009, 17:41:34 pm
el codigo de mensajes privados que hice.. :/

facil, quitas lo de select y luego te fijas si hay valor de ese receptor en la tabla de usuarios y si no hay muestras el mensaje
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: Joel en 01 de Agosto de 2009, 03:36:24 am
Hola buen aporte! Me sirvio muchisimo. pero. ¿Como puedo hacer para que el usuario le llege un aviso diciendo "Has recibido un mensaje de "X" persona"?
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: Warlox en 01 de Agosto de 2009, 21:02:21 pm
bueno, pues puedes poner un código que al entrar en cada página compruebe si ha llegado nuevo mensaje, y si es así, le mandas la alerta, de l contrario, no haces nada XD
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: westwest en 02 de Agosto de 2009, 00:07:07 am
Esta muy bien pero mejoradle la seguridad, k no tiene...
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: Masato en 02 de Agosto de 2009, 02:53:36 am
Ahora que lo veo mejor (sabiendo un poquito mas de php >.<) es algo un poco simple, osea, es como una especie de sistema de noticias xD
Título: Re: [Tutorial] Sistema de Mensajes Privados
Publicado por: nac en 05 de Agosto de 2009, 04:34:17 am
Cita de: HooKiPo link=topic=3600. msg24376#msg24376 date=1244684001
tengo una pregunta? cual codigo es para advertirle a los usuarios qe su reseptor no existe?? lo probare gracias :D

Podrias hacerlo con un if y una consulta de la tabla . .  (no se si estoy bien, pk soy medio n00b xD pero aun asin prueba :D)
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: Siquillote en 11 de Septiembre de 2009, 15:43:57 pm
Hola Kevin,

Tengo una pregunta, he cogido tu codigo y lo he unido a un sistema de usuarios que tengo y me va de 10 pero tengo una pregunta que quizas sea un poco complejo.

¿Podria ser que en enviar.php en el campo receptor se podria mandar un mensaje a 2 usuarios o mas?

¿Es posible?, es decir que en vez de mandar un mensaje a un usuario se mande a 2 ¿Entiendes?
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: nac en 13 de Septiembre de 2009, 02:07:20 am
Hola Kevin,

Tengo una pregunta, he cogido tu codigo y lo he unido a un sistema de usuarios que tengo y me va de 10 pero tengo una pregunta que quizas sea un poco complejo.

¿Podria ser que en enviar.php en el campo receptor se podria mandar un mensaje a 2 usuarios o mas?

¿Es posible?, es decir que en vez de mandar un mensaje a un usuario se mande a 2 ¿Entiendes?
Pues mira ahi una funcion que se llama explode y su sintáxis es:  explode("A separar","$variable"); ( y lo podrias utilizar asi: $vector = explode(",","$receptor); y luego podrias poner: $vector[0] y mostraría el remitente 1 luego con la funcion while agregarle a ese 0 un 1 :D.

Suerte
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: Siquillote en 13 de Septiembre de 2009, 17:03:52 pm
Hola nac, de eso ya pense yo pero lo que no se es el codigo y ando fastidiado por que yo modifique el codigo y en vez de escribir el destinatario se elige mediante una lista/menu con los usuarios existentes en la BD.

Entonces lo que no se es como poner 2 usuarios a la vez ¿Debo crear una segunda lista?

¿Que debo hacer?
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: nac en 13 de Septiembre de 2009, 21:00:13 pm
Lo mejor sería que quitaras la lista, porque si tienes muchos usuarios es dificil, podrias hacer con JS (no se como) que si le das a Agrega otro usuario salga otra lista. O hacer como en hotmail un CC osea segundo destinatario y que ese fuera ya con un <input type="text"> :)
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: Siquillote en 14 de Septiembre de 2009, 12:04:11 pm
Nac, haber no soi tan tonto. Si añado un CC seria : <input type="text" name="cc">

Y luego en el codigo PHP ¿Que? :S
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: nac en 15 de Septiembre de 2009, 00:54:44 am
Mira, si te ofendi perdon xD y el codigo seria <? el insert etc.. ?> y luego: <?
$sql = mysql_query("SELECT * FROM cc WHERE nick=$enviador");
$fetch = mysql_fetch_array($sql);
$explotar = explode(',',$fetch[enviador]');
y al final un for que valla sumando 1 al $explotar (recordemos que el explode regresa en vectors o arrays como le quieras decir :D)

finito :B
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: Caconasio en 23 de Octubre de 2012, 00:41:46 am
¡Buenísimo!, sos un groso, gracias.
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: Caconasio en 23 de Octubre de 2012, 00:43:02 am
¡BUENÍSIMO, SOS UN GROSO, GRACIAS!  :D
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: Caconasio en 23 de Octubre de 2012, 00:43:50 am
 :D
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: SoyJoaquin. en 23 de Octubre de 2012, 01:15:31 am
¡Buenísimo!, sos un groso, gracias.
¡BUENÍSIMO, SOS UN GROSO, GRACIAS!  :D
:D

Primera ves que veo tal cosa...
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: iStocker en 18 de Enero de 2013, 06:56:46 am
Si me permites hacer una recomendación podrías trabajar el nombre del receptor y/ destinatario mediante sus id de registro, así, si de casualidad llegan a cambiar su nick puedas identificarlos de cualquier forma.
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: cjbaeza en 30 de Enero de 2013, 12:39:30 pm
Es común en este foro revivir temas de 4 años?
Título: Re:[Tutorial] Sistema de Mensajes Privados
Publicado por: CarlosRdrz en 30 de Enero de 2013, 15:43:40 pm
Es común en este foro revivir temas de 4 años?

Suele venir mucha gente nueva, desde Google, buscando temas y tutoriales como estos, y no se fijan en la fecha, jeje

Cierro el tema para que no se vuelva a revivir y ya esta :)

Saludos!