Sistema de Mensagens Privadas PHP MYSQL
Olá pessoal.
Bom, estou quebrando a cabeça, tentando criar um sistema de mensagem pessoal mas não estou conseguindo criar por completo...
Preciso de uma lógica.
Tenho uma página de busca, onde o usuário busca o nome de uma pessoa, e quando clica no nome da pessoa, abre uma página e um formulário para enviar a mensagem à essa pessoa. Mas ao enviar a pessoa, programei para que se existisse uma mensagem sua ou da pessoa, aparece uma mensagem como "Você já está em uma conversa com Fulano. Clique aqui para ver a conversa."
Quando a pessoa clicar no link, abre uma outra página com as mensagens da pessoa e um formulário para responder a mensagem.
Há uma outra página também onde aparecem todos os nomes das pessoas que enviaram mensagens e o número de mensagens, como: "Fulano (2), Ciclano (4)" e assim vai...
O ruim é que eu não estou conseguindo criar esse sistema. Quando eu começo a mecher com os selects e as variáveis eu me perco todo e mesmo comentando o código eu me atrapalho. Talvez eu não esteja utilizando a lógica correta.
Minha tabela é a seguinte:
Tenho 1 tabela onde está o nome do usuário cadastrado, id e dados pessoais.
Outra tabela onde armazena as mensagens e outros dados:
Estrutura da tabela msgs
--msgs (
id int(11) NOT NULL AUTO_INCREMENT,
lida enum('S','N') NOT NULL DEFAULT 'N',
idremetente varchar(50) NOT NULL,
iddestinatario varchar(50) NOT NULL,
nomeremetente varchar(100) NOT NULL,
nomedestinatario varchar(100) NOT NULL,
mensagem varchar(300) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=36 ;
--
--
Pesquisei muito sobre como fazer mas não consegui achar alguma coisa.
Obrigado pela atenção.
Olá novamente pessoal.
Durante algumas horas trabalhando, fiz alguns testes e criei o seguinte sistema:
arquivo usermensagens.php que lista as conversas do usuário:
<?php
$a = mysql_query("SELECT DISTINCT idremetente, iddestinatario FROM msgs WHERE nomedestinatario = '$listnome' AND lida = 'N'");
//$listnome é o nome do usuário logado
while($aa = mysql_fetch_array($a)){
$cont = mysql_query("SELECT * FROM msgs WHERE idremetente = '$aa[idremetente]' AND lida = 'N'");
$controws = mysql_num_rows($cont);
$b = mysql_query("SELECT * FROM fichas WHERE id = '$aa[idremetente]'");
$bb = mysql_fetch_array($B)/>/>;
if($bb['foto']==""){
echo "<img class=\"imag\" src=\"img/aa.png\" />";
}else{
echo "<img class=\"imag\" src=\"$bb[foto]\" />";
}
echo "<p>";
echo "Nome: <a href=\"listmensagens.php?pss=$aa[idremetente]\">$bb[text1] ($controws)</a><br />";
echo "Localidade: $bb[text2]<br />";
echo "Profissão: $bb[text6], ";
echo "$bb[text9]";
echo "</p><br />";
echo "<hr style=\"width:500px; margin-right:397px;\"><br />";
}
$aff = mysql_query("SELECT DISTINCT idremetente, iddestinatario FROM msgs WHERE nomedestinatario = '$listnome' AND lida = 'N'");
$aaff = mysql_fetch_array($aff);
$iremetente = $aaff['idremetente'];
$idestinatario = $aaff['iddestinatario'];
$test = mysql_query("SELECT * FROM msgs WHERE idremetente = '$iremetente' AND iddestinatario = '$idestinatario'");
$rowstest = mysql_num_rows($test);
if($rowstest=="0"){
$a2 = mysql_query("SELECT DISTINCT iddestinatario, idremetente FROM msgs WHERE nomeremetente = '$listnome'");while($aa2 = mysql_fetch_array($a2)){
$b2 = mysql_query("SELECT * FROM fichas WHERE id = '$aa2[iddestinatario]'");
$bb2 = mysql_fetch_array($b2);
if($bb2['foto']==""){
echo "<img class=\"imag\" src=\"img/aa.png\" />";
}else{
echo "<img class=\"imag\" src=\"$bb2[foto]\" />";
}
echo "<p>";
echo "Nome: <a href=\"listmensagens.php?pss=$aa2[iddestinatario]\">$bb2[text1]</a><br />";
echo "Localidade: $bb2[text2]<br />";
echo "Profissão: $bb2[text6], ";
echo "$bb2[text9]";
echo "</p><br />";
echo "<hr style=\"width:500px; margin-right:397px;\"><br />";
}
}
?>
e o arquivo listmensagens.php que lista a conversa do usuário com outro usuário. Ainda não obtive sucesso... Tentei com while() mas não consegui:
<?php
$pss = $_GET['pss'];
$a = mysql_query("SELECT * FROM msgs WHERE idremetente = '$listid' OR iddestinatario = '$listid' AND idremetente = '$pss' OR iddestinatario = '$pss'");
//$listid é o id do usuário logado
$aa = mysql_fetch_array($a);
$b = mysql_query("SELECT * FROM msgs WHERE idremetente = '$listid'");
$b2 = mysql_query("SELECT * FROM fichas WHERE id = '$listid'");
$bb = mysql_fetch_array($B)/>/>;
$bb2 = mysql_fetch_array($b2);
if($bb2['foto']==""){
echo "<img class=\"imag\" src=\"img/aa.png\" />";
}else{
echo "<img class=\"imag\" src=\"$bb2[foto]\" />";
}
echo "<ul style=\"margin:0px;\">";
echo "<p>$bb2[text1] disse:<br />";
echo "às 10 e meia<br />";
echo "$bb[mensagem]";
echo "</p></ul>";
echo "<hr style=\"width:500px; margin-right:397px;\"><br />";
$c = mysql_query("SELECT * FROM msgs WHERE idremetente = '$pss'");
$c2 = mysql_query("SELECT * FROM fichas WHERE id = '$pss'");
$cc = mysql_fetch_array($c);
$cc2 = mysql_fetch_array($c2);
if($cc2['foto']==""){
echo "<img class=\"imag\" src=\"img/aa.png\" />";
}else{
echo "<img class=\"imag\" src=\"$cc2[foto]\" />";
}
echo "<ul style=\"margin:0px;\">";
echo "<p>$cc2[text1] disse:<br />";
echo "às 10 e meia<br />";
echo "$cc[mensagem]";
echo "</p></ul>";
echo "<hr style=\"width:500px; margin-right:397px;\"><br />";
$updat = mysql_query("UPDATE msgs SET lida = 'S' WHERE idremetente = '$pss'");
?>
Desculpe pelas variáveis mal nomeadas.
O problema está na listmensagens.php, não consigo criá-la...
Pessoal uma ajuda por favor...
Tenho a tabela msgs:
Estrutura da tabela msgs
--
CREATE TABLE IF NOT EXISTS `msgs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lida` enum('S','N') NOT NULL DEFAULT 'N',
`idremetente` varchar(50) NOT NULL,
`iddestinatario` varchar(50) NOT NULL,
`nomeremetente` varchar(100) NOT NULL,
`nomedestinatario` varchar(100) NOT NULL,
`mensagem` varchar(300) NOT NULL,
`data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
--
--
Como faço para listar as conversas que o usuário tem em uma página?
Não sei como posso fazer...
Uma ajuda aqui por favor.
Discussão (3)
Carregando comentários...