Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá. eu gostaria de tirar uma dúvida que já faz exatamente 1 dia que eu estou fazendo pesquisas e nada.
Minha dúvida é a seguinte, Estou fazendo um aplicativo de mensagem por browser se e que pode se chamar assim.
Tipo eu tenho o loby de mensagem semelhante ao Whatsapp e quando a pessoa clica em conversas eu faço a consulta via ajax
Nesta consulta eu só informo o meu id ou seja o id do usuário logado. e na pagina php eu faço a seguinte consulta no banco de dados:
Procurar por todas as mensagens da tabela: privado, Nesta consulta me retorna todas as mensagens cujo meu id existe como na coluna: Para, com o status da mensagem valor 0
Ou seja 0= Disponível e 1 seria deletada. este e o código usado:
$sql = $db->prepare("SELECT * FROM privado WHERE Para = '$ID_user' AND Status = '0' ORDER BY id DESC");
$sql->execute();
Continuando;
Após o fazer esta consulta coloquei para listar tudo com o while, colocando todos os id dos usuários em uma variável e dentro deste mesmo while eu faço
Outra consulta por os usuários informado pela variável id da pessoa que mandou. e isso ocorre com sucesso, ou seja eu consigo fazer quase tudo que eu quero.
Procurei pelas mensagem, pesquisei por estes usuários mostro: Nome, foto, e a mensagem; Este e o código usado:
while($dados = $sql->fetch(PDO::FETCH_OBJ)){
$ID_De = ($dados -> De);
$U_mensagem = ($dados -> Texto);
$sql1 = $db->prepare("SELECT * FROM usuarios WHERE id = '$ID_De' ORDER BY id DESC");
$sql1->execute();
while($dados1 = $sql1->fetch(PDO::FETCH_OBJ)){
$Foto = ($dados1 -> foto == "") ? "defaut.png" : $dados1 -> foto;
$Nome = ($dados1 -> nome);
echo "Nome: ".$Nome."<br>Foto: ".$Foto."<br>Mensagem: ".$U_mensagem."<br><br>";
}
}
No final fica tudo assim:
Nome: ModeradorFoto: user_3.pngMensagem: Mensagem do moderadorNome: RonaldoFoto: user_1.pngMensagem: Como vai você?Nome: RonaldoFoto: user_1.pngMensagem: Olá
Mas no final das contas eu gostaria de saber somente uma coisa para que meu projeto funcione como quero:
Eu quero que a listagem da ultima mensagem de cada usuário não todas as mensagem daquele usuário, ou seja somente da ultima mensagem de cada um usuário
"Tabela nome: usuários
Colunas: [ id, De, Para, Texto, Status ]"
Este e o código completo da pagina:
<?php
$Hostname = "localhost";
$Database = "servidor_app";
$Charset = "utf8";
$Username = "root";
$Password = "";
$db = new PDO('mysql:host='.$Hostname.';dbname='.$Database.';charset='.$Charset.'', $Username, $Password);
$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$URL_ATUAL= "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
parse_str(parse_url($URL_ATUAL, PHP_URL_QUERY), $vamos_ver);
$ID_user = $vamos_ver['id'];
$sql = $db->prepare("SELECT * FROM privado WHERE Para = '$ID_user' AND Status = '0' ORDER BY id DESC");
$sql->execute();
while($dados = $sql->fetch(PDO::FETCH_OBJ)){
$ID_De = ($dados -> De);
$U_mensagem = ($dados -> Texto);
$sql1 = $db->prepare("SELECT * FROM usuarios WHERE id = '$ID_De' ORDER BY id DESC");
$sql1->execute();
while($dados1 = $sql1->fetch(PDO::FETCH_OBJ)){
$Foto = ($dados1 -> foto == "") ? "defaut.png" : $dados1 -> foto;
$Nome = ($dados1 -> nome);
echo "Nome: ".$Nome."<br>Foto: ".$Foto."<br>Mensagem: ".$U_mensagem."<br><br>";
}
}
?>
Pro favor preciso de ajuda urgente.
Atenciosamente,
~Ronaldo>
5 horas atrás, Omar~ disse:
Nesse caso você terá que ter uma coluna na tabela para armazenar a data e a hora da última postagem, daí é só fazer a comparação com a data e a hora atual mais atual, só exibindo esse resultado.
Só uma coisa queria ressaltar aqui:
Você está lançando consultas dentro de loop, isso sobrecarrega demais e você perderá em performasse.
O ideal é você fazer as consultas separadamente armazenar os valores daí manipular esses resultados.
Há algum tempo me deparei com essa situação similar veja:
https://forum.imasters.com.br/topic/580417-separar-resultados-com-base-de-outra-tabela/
Poderia dar um exemplo com código por favor ?, estou confuso. ahh e a coluna hora já armazena o horário.
>
22 horas atrás, TheRonaldoStar disse:
Eu quero que a listagem da ultima mensagem de cada usuário não todas as mensagem daquele usuário, ou seja somente da ultima mensagem de cada um usuário
Nesse caso você terá que ter uma coluna na tabela para armazenar a data e a hora da última postagem, daí é só fazer a comparação com a data e a hora atual mais atual, só exibindo esse resultado.
Só uma coisa queria ressaltar aqui:
Você está lançando consultas dentro de loop, isso sobrecarrega demais e você perderá em performasse.
O ideal é você fazer as consultas separadamente armazenar os valores daí manipular esses resultados.
Há algum tempo me deparei com essa situação similar veja:
https://forum.imasters.com.br/topic/580417-separar-resultados-com-base-de-outra-tabela/