Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gabriel T.

Sistema de Mensagens Privadas PHP MYSQL

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom cara como você falou de lógica eu li aqui e ignorei o seu code.

 

o que pensei agora foram 2 tabelas ligadas uma que é só para colocar as mensagens enviadas e outras as recebidas, mas por que isso apesar de ser a mesma mensagem?

 

se o usuário que recebeu a mensagem apagar a dele a da pessoa que enviou deve continuar e vice-versa então acho que esse é o primeiro problema que você deve arrumar na tabela.

 

depois se você não consegui continuar abra um novo tópico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara você tem que relacionar as tabelas, usando o inner join, com as entidades relacionadas

fica mais facil de programar, e a logica ficará mais clara.Oh a tabela a entidade mensagem vai concerteza

ser uma tabela então a tabela mensagem va ter foreign key do remetente e do destinatario, entendeu...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal eu preciso de uma ajuda.

Não estou conseguindo criar o código e também a lógica inteira...

Preciso montar um sistema de conversas.

 

Uma página para listar o nome dos usuários com as conversas somente, pois a página que lista a conversa com o usuário já está criada:

 

<?php
$a = mysql_query("SELECT * FROM msgrecebida WHERE idremetente = '$listid' AND iddestinatario = '$idremetente' OR idremetente = '$idremetente' AND iddestinatario = '$listid'");
while($aa = mysql_fetch_array($a)){
$ll = $aa['idremetente'];
$b = mysql_query("SELECT * FROM fichas WHERE id = '$ll'");
$bb = mysql_fetch_array($B);
$nome = $bb['text1'];
$mensagem = $aa['mensagem'];

echo "<div class=\"cuf\">";
if($ll !== $_GET['pss']){
	echo "<ul style=\"margin-left:0px; padding:10px 10px 0 10px; width:70%; border:5px solid #fff; background:#fff; box-shadow:0 0 5px blue; -moz-box-shadow:0 0 5px blue; -webkit-box-shadow:0 0 5px blue;\">";
	}else{
	echo "<ul style=\"margin-left:5%; padding:10px 10px 0 10px; width:70%;  border:5px solid #fff; background:#fff; box-shadow:0 0 5px #999; -moz-box-shadow:0 0 5px #999; -webkit-box-shadow:0 0 5px #999;\">";	
	}
if($bb['foto']==""){
	echo "<img class=\"imag\" src=\"img/aa.png\" />";
	}else{
	echo "<img class=\"imag\" src=\"$bb[foto]\" />";
	}
	echo "<p style=\"font-size:15px;\">";
	if($ll !== $_GET['pss']){
	echo "<b>Você</b> disse:<br />";
	}else{
		echo "<a href=\"#\" style=\"float:right; display:inline-block;\">Apagar</a>";
	echo "<b>".$nome."</b> disse:<br />";	
	}
	echo "Em data 000000<br /><br />";
	echo $mensagem;
	echo "</p>";
	echo "</ul><br /><br />";
echo "</div>";

} 
echo "
<form id=\"form12\" method=\"post\" action=\"processarmp.php\">
 <label for=\"mp\"></label>
 <textarea name=\"mp\" id=\"mp\" cols=\"45\" rows=\"5\"></textarea><br />
 <input style=\"padding:3px;\" type=\"submit\" name=\"submit\" id=\"submit\" value=\"Enviar\" />
 <input type=\"hidden\" name=\"id\" id=\"id\" value=\"$_GET[pss]\" />
</form><br />
";
?>

 

Agora só falta a de listar os usuários... Preciso de uma ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.