Ir para conteúdo

POWERED BY:

Arquivado

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

Matheus Moura

[Resolvido] Exibir postagens dos amigos

Recommended Posts

estou fazendo um script de postagens, mais so os amigos podem ver as postagens dos amigos.

na sql tenho:

 

Postagens:

ID_POST;
Mensagem;
ID;

 

Amigos:

ID;
Amigo_ID
e alguns dados do amigo.

 

preciso que o script faça o seguinte:

Pesquisa no banco de dados do maior para o menor as postagens ;

Verifica se a postagem encontrada é ou não de um amigo, caso seja exibe, caso não seja não faz nada;

 

o eu consegui foi:

 

<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Postagens</title>
</head>
<?php
$id=$_SESSION['id'];
$cont=0;
$conexao = mysql_connect("host","usuario","senha");
mysql_select_db("Usuarios");
$sql = "SELECT * from Amigos where ID = '$id' ";
$sql = mysql_query($sql);
while ($amigo=mysql_fetch_array($sql)){
$cont++;
$aid[$cont]=$amigo['AmigoID'];
$nome[$cont]=$amigo['Nome'];
$foto[$cont]=$amigo['Foto'];
$link[$cont]=$amigo['Link'];
}
$cont2=$cont;
while ($cont>=1) {
$cont--;
$sql2= "SELECT * FROM  Postagens WHERE  ID ='$aid[$cont]' ORDER BY  ID_POST DESC LIMIT 0 , 30";
$sql2 = mysql_query($sql2);
while ($postar=mysql_fetch_array($sql2)) {
$hora=$postar['Hora'];
$partes_da_hora = explode(':',$hora);
$horaP = $partes_da_hora[0].':'.$partes_da_hora[1];
$data=$postar['Data'];
$partes_da_data = explode('-',$data);
$dataP = $partes_da_data[2].'/'.$partes_da_data[1].'/'.$partes_da_data[0];
if ($postar['Mensagem']!="") {
echo "<div id='post'>";
echo "<br /><br /><a href='$link[$cont]'><img src='$foto[$cont]' width='50' height='50' /><br />$nome[$cont]</a><br /><br /></div><img src='imagens/divisor.png' width='600' height='2' /><br/>";
echo "<div id='mensagem'>".$postar['Mensagem']."<br />Postado as $horaP dia: $dataP<br /></div><img src='imagens/divisor.png' width='600' height='2' />";
}
}
}
?>

 

Desde já vlw a ajuda de todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom matheus pela logica aqui seria

 

exemplo:

 

temos 2 amigos joao e maria

 

 

ai tu teria que mostra se o joao era amigo de maria e se maria fosse amiga de joao ow seja 2 verificacoes.

 

exemplo: você logou com joao pra tu definir o do joao simples você puxa a sessao iniciada e verifica os amigos dele...

 

ow seja você tera que ter uma tabela pra definicao dos amigos tabela seria.

 

id,

login,

amigo,

status

 

bom em login a gente salvaria o login da sessoan iniciada apos logar e em amigo a gente salvaria o login de cada amigo e status pra definir se ja é amigo ow o pedido de amigos esta em aberto ainda.

 

ow seja tu usaria dois insert na hora de fazer o pedido e na hora que o outro aluno fosse aceita fazeria um uptade trocando o status de 0 pra 1

 

ate ai tudo bem apos ser amigo

 

você varia o seguinte puxaria por get o id do amigo e buscaria no banco de dados o login dele

 

<?

$u = $_GET["u"];

$perfils = mysql_query("SELECT * FROM usuarios WHERE id='$u'");

$perfil = mysql_fetch_array($perfils);?>

 

<?

$resultado = mysql_query("SELECT * FROM amigos WHERE login='".$perfil['login']."' and amigo='". $_SESSION['login']."'");

$dados = mysql_num_rows($resultado);

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom matheus pela logica aqui seria

 

exemplo:

 

temos 2 amigos joao e maria

 

 

ai tu teria que mostra se o joao era amigo de maria e se maria fosse amiga de joao ow seja 2 verificacoes.

 

exemplo: você logou com joao pra tu definir o do joao simples você puxa a sessao iniciada e verifica os amigos dele...

 

ow seja você tera que ter uma tabela pra definicao dos amigos tabela seria.

 

id,

login,

amigo,

status

 

bom em login a gente salvaria o login da sessoan iniciada apos logar e em amigo a gente salvaria o login de cada amigo e status pra definir se ja é amigo ow o pedido de amigos esta em aberto ainda.

 

ow seja tu usaria dois insert na hora de fazer o pedido e na hora que o outro aluno fosse aceita fazeria um uptade trocando o status de 0 pra 1

 

ate ai tudo bem apos ser amigo

 

você varia o seguinte puxaria por get o id do amigo e buscaria no banco de dados o login dele

 

<?

$u = $_GET["u"];

$perfils = mysql_query("SELECT * FROM usuarios WHERE id='$u'");

$perfil = mysql_fetch_array($perfils);?>

 

<?

$resultado = mysql_query("SELECT * FROM amigos WHERE login='".$perfil['login']."' and amigo='". $_SESSION['login']."'");

$dados = mysql_num_rows($resultado);

?>

 

 

Então, até ai tudo bem eu consigo fazer isso, mais o problema é na hora de exibir as postagens. A logica é essa:

 

pega todas as postagens por 'ID_POST' (ordem decrescente);

e vai exibindo as mensagens dos amigos, as que não são dos amigos são ignoradas.

 

eu até consegui exibir as postagens dos amigos, mais ta mostrando a postagem de amigo por amigo Ex: mostra todos os posts de joão depois todos de maria assim vai... preciso que mostre separadamente, ordenando pelas mais recentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Precisa de lógica e seria pesquisar na tabela amigos o id do seu amigo. Depois pegar o id da pessoa que postou e juntar tudo:

SELECT * FROM postagens AS p 
INNER JOIN amigos AS a 
ON a.id_usuario = '".$_SESSION['id']."' 
AND
a.id_amigo = p.id_usuario 
ORDER BY p.id DESC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Precisa de lógica e seria pesquisar na tabela amigos o id do seu amigo. Depois pegar o id da pessoa que postou e juntar tudo:

SELECT * FROM postagens AS p 
INNER JOIN amigos AS a 
ON a.id_usuario = '".$_SESSION['id']."' 
AND
a.id_amigo = p.id_usuario 
ORDER BY p.id DESC

 

Cara primeiramente brigado pela ajuda, mais eu n manjo muito de mysql poderia me explicar este codigo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu utilizei INNER JOIN.

O que é isso?

É mais ou menos trabalhar com duas tabelas ou mais ao mesmo tempo.

O que fiz?

SELECT * FROM postagens AS p 
INNER JOIN amigos AS a 
ON a.id_usuario = '".$_SESSION['id']."' 
AND
a.id_amigo = p.id_usuario 
ORDER BY p.id DESC

  1. 1ª linha: Selecionei os dados da tabela postagens;
  2. 2ª linha: Fiz um INNER JOIN pra trabalhar com a tabela amigos também;
  3. 3ª linha: Pedi para que selecionasse o campo da tabela amigos, que sria id_usuario (não sei qual é o campo que marca o id do usuário logado) e pedi que selecionasse todos os registros de amigos com o id do user logado;
  4. 4ª e 5ª linha: Agora pedi para que selecionasse, a partir dos ids dos amigos, todas as postagens com com aqueles ids;
  5. 6ª linha: Ordenei as postagens pelo id, do último para o primeiro, de forma descendente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu utilizei INNER JOIN.

O que é isso?

É mais ou menos trabalhar com duas tabelas ou mais ao mesmo tempo.

O que fiz?

SELECT * FROM postagens AS p 
INNER JOIN amigos AS a 
ON a.id_usuario = '".$_SESSION['id']."' 
AND
a.id_amigo = p.id_usuario 
ORDER BY p.id DESC

  1. 1ª linha: Selecionei os dados da tabela postagens;
  2. 2ª linha: Fiz um INNER JOIN pra trabalhar com a tabela amigos também;
  3. 3ª linha: Pedi para que selecionasse o campo da tabela amigos, que sria id_usuario (não sei qual é o campo que marca o id do usuário logado) e pedi que selecionasse todos os registros de amigos com o id do user logado;
  4. 4ª e 5ª linha: Agora pedi para que selecionasse, a partir dos ids dos amigos, todas as postagens com com aqueles ids;
  5. 6ª linha: Ordenei as postagens pelo id, do último para o primeiro, de forma descendente.

 

Funcionou! mais está repetindo as postagens o codigo que usei foi:

 

$sql="SELECT * FROM Postagens AS p 
INNER JOIN Amigos AS a  
where a.ID = '$id' 
AND
a.AmigoID = p.ID
ORDER BY p.ID_POST DESC";
$sql=mysql_query($sql);
while ($exibir=mysql_fetch_array($sql)) {
echo "".$exibir['Mensagem']."</br></br>";
}

 

o resultado que ele mostrou foi:

 

primeira postagem é amigo id 80

 

meio postagem amigo id: 60

 

meio postagem amigo id: 60

 

meio postagem amigo id: 60

 

penultima postagem amigo id: 60

 

penultima postagem amigo id: 60

 

penultima postagem amigo id: 60

 

ultima postagem amigo id: 80

 

era pra aparecer assim:

 

 

primeira postagem é amigo id 80

 

meio postagem amigo id: 60

 

penultima postagem amigo id: 60

 

ultima postagem amigo id: 80

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido foi so alterar a forma de exibir os dados que parou de repetir ficou assim:

 

while ($exibir=mysql_fetch_array($sql)) {
if ($exibir['Mensagem']!=$msg) {
echo "".$exibir['Mensagem']."</br></br>";
$msg=$exibir['Mensagem'];
}
}

 

Vlw Gabriel Jacinto e Marcos_Imasters.

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.