Ir para conteúdo
andersonjob

Troca de mensagens em php entre os usuarios do site

Recommended Posts

Fala amigos, tudo bem? Estou criando um sistema simples para a empresa que trabalho e queria colocar nele um sistema de mensagens entre os usuarios, algo que quando o funcionario efetua-se o login ele conseguisse ver todos os registros de mensagens só que com o destino pra ele, apenas liste mesmo inicialmente, eu to com um código q meio que rankeia os registros do banco de dados com base ACRESCENTE na ID.(para utilizar isso para ver as mais recentes primeiro) Só que não consigo exibir somente as mensagens para o determinado destinatario, neste codigo ela rankeia todos os registros .

 

PS: Tentei inner join e WHERE e não funcionou, posso ter feito algo de errado, podem me ajudar? 

<div align="left">
<table>
  <tr>
<span style="color:#000000;font-family:'Arial Black';font-size:13px;">
<th></th><th></th>
<th></th>
<th></th>
<th></th>
</span>
<?php
include("config.php");
$sql = mysql_query('Select * FROM user ORDER BY user.id DESC LIMIT 0,5');

$lista = 0;
while($dado = mysql_fetch_array ($sql))
{
  
 $lista++; ?>
<tr>

<td><img src="<?php echo $dado['foto_perfil'];?>" width="45" height="45" /> </span></td>
<div class="style1"><td><td><strong><span style="color:#FFFFFF;font-family:''Calibri Light';font-size:15px;"><?php echo $dado['nome']; ?></a></strong></span></td></div></td>
<td><span style="color:#1E90FF;font-family:'Arial Black';font-size:13px;"></span></td>
<td> <td>  <td>         <span style="color:#FF1493;font-family:''Calibri Light';font-size:18px;">R$<?php echo $dado['mensagem']; ?>,00</span></td>
<?php } ?>
</span>
</table>
</div>

 

Editado por Gabriel Heming
adicionar marcação de código

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma logica seria você criar uma tabela em seu banco de dados para armazenar as mensagens, incluindo os ids dos usuarios.

na hora de exibir, normal, recupere as  mensagens onde o id do destinatario seja  igual ao id do usuario corrente, por exemplo.

Citar

PS: Tentei inner join e WHERE

ai é SQL,  amigo. sugiro que estude o tema mais a fundo. aqui vao uns links bem interessantes:

https://www.google.com.br/search?q=sql+devmedia&ie=utf-8&oe=utf-8&client=firefox-b&gws_rd=cr&dcr=0&ei=tG4uWqbaO8ycwAS0uKlA

obs: funçoes mysql* foram removidas; pesquise sobre PDO ou Mysqli.

Compartilhar este post


Link para o post
Compartilhar em outros sites
21 minutos atrás, Fernando C disse:

uma logica seria você criar uma tabela em seu banco de dados para armazenar as mensagens, incluindo os ids dos usuarios.

na hora de exibir, normal, recupere as  mensagens onde o id do destinatario seja  igual ao id do usuario corrente, por exemplo.

ai é SQL,  amigo. sugiro que estude o tema mais a fundo. aqui vao uns links bem interessantes:

https://www.google.com.br/search?q=sql+devmedia&ie=utf-8&oe=utf-8&client=firefox-b&gws_rd=cr&dcr=0&ei=tG4uWqbaO8ycwAS0uKlA

obs: funçoes mysql* foram removidas; pesquise sobre PDO ou Mysqli.

SIm entendi e muito obrigado, só mais uma coisa, naquele método de salvar tudo em uma tabela,(mensagen, id do usuario, e etc..) Como eu faria para a consulta só exibir os resultados do usuario logado?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, andersonjob disse:

SIm entendi e muito obrigado, só mais uma coisa, naquele método de salvar tudo em uma tabela,(mensagen, id do usuario, e etc..) Como eu faria para a consulta só exibir os resultados do usuario logado?

 

Uma tabela seria Mensagens;

Campos: id, mensagem, id_remetente , id_destinatario;

Para puxar as mensagens então você vai fazer uma consulta no banco de dados onde id_destinatario = id da pessoa logado, isso puxaria todas as mensagens enviada ao usuário logado;

Compartilhar este post


Link para o post
Compartilhar em outros sites
20 horas atrás, Gleyson Abreu disse:

Uma tabela seria Mensagens;

Campos: id, mensagem, id_remetente , id_destinatario;

Para puxar as mensagens então você vai fazer uma consulta no banco de dados onde id_destinatario = id da pessoa logado, isso puxaria todas as mensagens enviada ao usuário logado;

sim mas é nisto q estou tendo difilculdades, como posso listar somente esses? pq nao posso simplesmente puxar um value $mensagem , se existe mais de 1 registro(mensagem) pro mesmo usuario?? ME AJUDA AII POR FAVORR

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, andersonjob disse:

sim mas é nisto q estou tendo difilculdades, como posso listar somente esses? pq nao posso simplesmente puxar um value $mensagem , se existe mais de 1 registro(mensagem) pro mesmo usuario?? ME AJUDA AII POR FAVORR

Se entendi bem o que você quer, você vai utilizar o while para retorna todos os registros daquele usuário;

ex:

$sql = $pdo->prepare("SELECT * FROM mensagens WHERE id_destinario = 1"); // Pegando todas as mensagens destinadas ao usuário de ID N°1
$sql->execute();

if($sql->rowCount() == 0 ){
	echo "Não há mensagens";
}else{
	while($msg = $sql->fetch(PDO::FETCH_ASSOC)){
		echo $msg['mensagem']."<br>";
	}
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 12/12/2017 at 11:43, Gleyson Abreu disse:

Se entendi bem o que você quer, você vai utilizar o while para retorna todos os registros daquele usuário;

ex:


$sql = $pdo->prepare("SELECT * FROM mensagens WHERE id_destinario = 1"); // Pegando todas as mensagens destinadas ao usuário de ID N°1
$sql->execute();

if($sql->rowCount() == 0 ){
	echo "Não há mensagens";
}else{
	while($msg = $sql->fetch(PDO::FETCH_ASSOC)){
		echo $msg['mensagem']."<br>";
	}
}

 

<div align="left">
<table>
  <tr>
<span style="color:#000000;font-family:'Arial Black';font-size:13px;">
<th></th><th></th>
<th></th>
<th></th>
<th></th>
</span>

<?php
include("config.php");
$sql = $pdo->prepare("Select * FROM notificacoes INNER JOIN user ON notificacoes.id_user = user.login WHERE id_user = '$login' ORDER BY notificacoes.id DESC LIMIT 0,100");
$sql->execute();

if($sql->rowCount() == 0 ){
	echo "Não há mensagens";
}else{
	while($dado = $sql->fetch(PDO::FETCH_ASSOC)){

 $lista++; ?>


<tr>


<div class="style1"><td><td><strong><span style="color:#C71585;font-family:''Calibri Light';font-size:15px;"><?php echo $dado['notify_name']; ?></a></strong></span></td></div></td>
<td><span style="color:#1E90FF;font-family:'Arial Black';font-size:13px;"></span></td>
<td> <td>  <td>         <span style="color:#C71585;font-family:''Calibri Light';font-size:18px;">R$<?php echo $dado['desc']; ?>,00</span></td>
<?php } ?>
</span>
</table>
</div>

Deu um erro aqui de suntax
"Parce error : syntax error, unexpected end of file in ....

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui:

}else{
	while($dado = $sql->fetch(PDO::FETCH_ASSOC)){

você abriu 2 chaves; verifique se fechou as duas.

a proposito: por gentileza, ajude-nos tambem, evitando postar HTML desnecessario mas exibindo se possivel as mensagens de erro completas.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, Fernando C disse:

aqui:


}else{
	while($dado = $sql->fetch(PDO::FETCH_ASSOC)){

você abriu 2 chaves; verifique se fechou as duas.

a proposito: por gentileza, ajude-nos tambem, evitando postar HTML desnecessario mas exibindo se possivel as mensagens de erro completas.

Desculpa a falta de profissionalismo no forum, sou novo e aos poucos vou aprendendo as regras.

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, andersonjob disse:

Desculpa a falta de profissionalismo no forum, sou novo e aos poucos vou aprendendo as regras.

E ai o erro foi resolvido? continua com o erro? Você fechou as duas {{ que foram abertas? como o Fernando falou?

3 horas atrás, andersonjob disse:

<?php } ?>

Por que aqui está somente uma fechada.

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 horas atrás, andersonjob disse:

falta de profissionalismo

ops.. foi mal, se fui grosseiro nao foi essa intenção, com certeza.

aqui estamos todos aprendendo e nos ajudando, ok?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 minuto atrás, Fernando C disse:

ops.. foi mal, se fui grosseiro nao foi essa intenção, com certeza.

aqui estamos todos aprendendo e nos ajudando, ok?

 

 

apareceu esse erro, só ocutei as informações da minha hospedagem

 

 

Parse error: syntax error, unexpected end of file in /(meudominio) on line 42

 

<?php
include("config.php");
$sql = $pdo->prepare("Select * FROM notificacoes INNER JOIN user ON notificacoes.id_user = user.login WHERE id_user = '$login'");

if($sql->rowCount() == 0 ){
	echo "Não há mensagens";
while($msg = $sql->fetch(PDO::FETCH_ASSOC)){
		echo $msg['mensagem']."<br>";
	}

?>

e esse foi o codigo q usei

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
include("config.php");
$sql = $pdo->prepare("Select * FROM notificacoes INNER JOIN user ON notificacoes.id_user = user.login WHERE id_user = '$login'");
$sql->execute();
if($sql->rowCount() == 0 ){
	echo "Não há mensagens";
}else{
while($msg = $sql->fetch(PDO::FETCH_ASSOC)){
		echo $msg['mensagem']."<br>";
	}
}

?>

Tente desde jeito acima pelo que vi só está faltando fechar uma } que foi aberta e não foi fechada.

https://pt.stackoverflow.com/questions/51002/script-retornando-parse-error-syntax-error-unexpected-end-of-file da uma olhada neste tópico la diz oque pode causar "unexpected end".

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 horas atrás, Gleyson Abreu disse:

<?php
include("config.php");
$sql = $pdo->prepare("Select * FROM notificacoes INNER JOIN user ON notificacoes.id_user = user.login WHERE id_user = '$login'");
$sql->execute();
if($sql->rowCount() == 0 ){
	echo "Não há mensagens";
}else{
while($msg = $sql->fetch(PDO::FETCH_ASSOC)){
		echo $msg['mensagem']."<br>";
	}
}

?>

Tente desde jeito acima pelo que vi só está faltando fechar uma } que foi aberta e não foi fechada.

https://pt.stackoverflow.com/questions/51002/script-retornando-parse-error-syntax-error-unexpected-end-of-file da uma olhada neste tópico la diz oque pode causar "unexpected end".

exibiu o seguinte erro com esse código que postasse

Fatal error: Call to a member function prepare() on a non-object in 

on line 25 ( que no caso seria essa 
$sql = $pdo->prepare("Select * FROM notificacoes INNER JOIN user ON notificacoes.id_user = user.login WHERE id_user = '$login'");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

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