Comunidad PHPeros
Lenguajes => PHP => Tutoriales PHP => Mensaje iniciado 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:
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 :P
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 :P
-
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.
-
-.- haz agarrado mi codigo..
-
Cual codigo? o.o
-
como ago para enviarselo a todos los registrados
-
Facil, haces una lista de todos los usuarios, y que aparezcan en donde dice remitente
-
Cual codigo necesito para q solo vea los mensajes el receptor
-
A mi si me funciona o.o
-
tengo una pregunta? cual codigo es para advertirle a los usuarios qe su reseptor no existe?? lo probare gracias :D
-
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
-
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"?
-
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
-
Esta muy bien pero mejoradle la seguridad, k no tiene...
-
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
-
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)
-
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?
-
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
-
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?
-
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"> :)
-
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
-
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
-
¡Buenísimo!, sos un groso, gracias.
-
¡BUENÍSIMO, SOS UN GROSO, GRACIAS! :D
-
:D
-
¡Buenísimo!, sos un groso, gracias.
¡BUENÍSIMO, SOS UN GROSO, GRACIAS! :D
:D
Primera ves que veo tal cosa...
-
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.
-
Es común en este foro revivir temas de 4 años?
-
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!