Foros del Web » Programando para Internet » PHP »

Sistema mensajes privados php

Estas en el tema de Sistema mensajes privados php en el foro de PHP en Foros del Web. Hola a todos! como va? espero que bien. Bueno, estoy haciendo un sistema de mensajeria privada entre usuarios de mi web. Me funciona la bandeja ...
  #1 (permalink)  
Antiguo 15/01/2011, 09:55
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Sistema mensajes privados php

Hola a todos! como va? espero que bien.
Bueno, estoy haciendo un sistema de mensajeria privada entre usuarios de mi web.
Me funciona la bandeja de entrada,escribir un nuevo mensaje pero tengo problemas al leer un mensaje recibido.
Me muestra asi:
Titulo:
De:
Mensaje:
Y me falta que muestre el titulo del mensaje,el usuario que envio el mensaje, y el contenido del mensaje.
Mi tabla es esta:
Código PHP:
CREATE TABLE `messages` (
  `
message_idint(11NOT NULL auto_increment,
  `
from_uservarchar(65character set latin1 collate latin1_general_ci NOT NULL,
  `
to_uservarchar(65character set latin1 collate latin1_general_ci NOT NULL,
  `
message_titlevarchar(65NOT NULL,
  `
message_contentslongtext NOT NULL,
  `
message_readint(11NOT NULL default '0',
  
PRIMARY KEY  (`message_id`)
ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=21
El codigo de buzon de entrada es este:
Código PHP:
<?php
//Conexion con la Base de Datos
$link=@dbConnect();
if (!
$link) {
    echo 
"Error conectando a la Base de Datos."
}

if (
$link =="202") {
    echo 
"Error seleccionando la Base de Datos.";
}
echo 
'<br />
  <br />'
;
  
   if (isset(
$_SESSION['id']))
   {
        
$id $_SESSION['id'];
        
$username $_SESSION['username'];
    
// obtengo los mensajes de la db
$get_messages mysql_query("SELECT message_id FROM messages WHERE to_user='$username' ORDER BY message_id DESC") or die(mysql_error());
$get_messages2 mysql_query("SELECT * FROM messages WHERE to_user='$username' ORDER BY message_id DESC") or die(mysql_error());
$num_messages mysql_num_rows($get_messages);
// muestro el titulo de cada mensaje, con un enlace a su contenido
echo '<ul>';
for(
$count 1$count <= $num_messages$count++)
{

    
$row mysql_fetch_array($get_messages2);
    
//si el mensaje nuevo no ha sido leido muestro (nuevo)
if($row['message_read'] == 0)
{
    echo 
'<a href="read_message.php?messageid=' $row['message_id'] . '">' $row['message_title'] . '</a>(Nuevo)<br>';
}else{
echo 
'<a href="read_message.php?messageid=' $row['message_id'] . '">' $row['message_title'] . '</a><br>';
}}
echo 
'</ul>';
echo 
'<form name="newmsgfrm" method="post" action="new_message.php">';
echo 
'<input type="submit" value="Enviar nuevo mensaje">';
echo 
'</form>';
   }else{
        echo 
'Tienes que iniciar sesion.<br />';
   }
   
?>
El codigo para leer el mensaje:

Código PHP:
<?php
//Conexion con la Base de Datos
$link=@dbConnect();
if (!
$link) {
    echo 
"Error conectando a la Base de Datos."
}

if (
$link =="202") {
    echo 
"Error seleccionando la Base de Datos.";
}
if (isset(
$_SESSION['id'])) {
    
$id $_SESSION['id'];
    
$username=$_SESSION['username'];
    
$messageid $_POST['message'];
    
$message mysql_query("SELECT * FROM messages WHERE message_id = '$message_id' AND to_user = '$username'");
    
$message=mysql_fetch_assoc($message);

echo 
"<h1>Titulo: ".$message['message_title']."</h1><br><br>";
echo 
"<h3>De: ".$message['from_user']."<br><br></h3>";
echo 
"<h3>Mensaje: <br>".$message['message_contents']."<br></h3>";

echo 
'<form name="backfrm" method="post" action="index.php">';
echo 
'<input type="submit" value="Volver">';
echo 
'</form>';
}else{
    echo 
'tienes que <a href="../login.php">iniciar sesion</a> para ver tus mensajes.';
    }
?>

Bueno el problema es que no se ve el contenido del mensaje,quien lo mando y el titulo.
Muchas gracias y saludos!
  #2 (permalink)  
Antiguo 15/01/2011, 10:05
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sistema mensajes privados php

Cita:
$messageid = $_POST['message'];
Se supone que uses GET, no POST. Seria: $_GET['messageid']

Código PHP:
$message_id $_GET['messageid']; #He aqui los cambios
    
$message mysql_query("SELECT * FROM messages WHERE message_id = '$message_id' AND to_user = '$username'"); 
Otra cosa, en el buzon de entrada REDUNDAS:
Código PHP:
$get_messages mysql_query("SELECT message_id FROM messages WHERE to_user='$username' ORDER BY message_id DESC") or die(mysql_error());
$get_messages2 mysql_query("SELECT * FROM messages WHERE to_user='$username' ORDER BY message_id DESC") or die(mysql_error());
$num_messages mysql_num_rows($get_messages);
// muestro el titulo de cada mensaje, con un enlace a su contenido
echo '<ul>';
for(
$count 1$count <= $num_messages$count++)
{

    
$row mysql_fetch_array($get_messages2); 
No hay necesidad de hacer una consulta aparte para leer el numero de resultados, con la segunda basta y sobra.
  #3 (permalink)  
Antiguo 15/01/2011, 10:13
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Respuesta: Sistema mensajes privados php

Muchas gracias por tu respuesta Ronruby!
Saludos
  #4 (permalink)  
Antiguo 15/01/2011, 10:15
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sistema mensajes privados php

¿Funcionó? xD
  #5 (permalink)  
Antiguo 15/01/2011, 10:18
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Respuesta: Sistema mensajes privados php

Si funciono y ahora el problema que tengo es.
Cuando leo el mensaje tendria que dejar de decir (nuevo) y en la base de datos tendria que aparecer message_read = 1.
Eso nomas es ahora
Muchas gracias!
  #6 (permalink)  
Antiguo 15/01/2011, 10:22
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Sistema mensajes privados php

Debes agregar una consulta que cambie dicho valor:

mysql_query("UPDATE messages SET message_read=1 WHERE message_id = $message_id");

Esa consulta la agregas en tu script que muestra el mensaje.
  #7 (permalink)  
Antiguo 15/01/2011, 10:31
Avatar de ale_dla  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 189
Antigüedad: 15 años
Puntos: 3
Respuesta: Sistema mensajes privados php

Listo problema solucionado !
Te agradezco mucho por la ayuda amigo!
Saludos y buen año :D
  #8 (permalink)  
Antiguo 15/12/2011, 14:21
 
Fecha de Ingreso: noviembre-2010
Ubicación: Montevideo, Uruguay
Mensajes: 6
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Sistema mensajes privados php

lástima que no está el código completo... seguiré investigando a ver si lo descifro y puedo adaptarlo
  #9 (permalink)  
Antiguo 15/12/2011, 14:31
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Sistema mensajes privados php

Cita:
Iniciado por erg1968 Ver Mensaje
lástima que no está el código completo... seguiré investigando a ver si lo descifro y puedo adaptarlo
y pediselo por ahi te lo comparte!

Etiquetas: mensajes, pm, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:23.