roxerio 0 Denunciar post Postado Julho 7, 2015 Em uma rede social, para fazer o feed de notícias, preciso das postagens em que o usuário conectado ou algum de seus amigos foi a pessoa que postou ou a pessoa para quem postaram. Na tabela, quem postou está na coluna added_by. E para quem foi postado está na coluna user_posted_to. E body é a coluna onde está o texto postado. A variável com o nome do usuário conectado é $user. A variável para o nome de seus amigos é $value. E pode ser que a pessoa postou para si mesma, estando o nome dela em ambas as colunas. Quando vou tentar fazer o feed de notícias, aparece sempre alguns repetidos. Já tentei usar GROUP by e DISTINCT, mas como sou iniciante, posso não estar usando direito. <?php include ( "inc/header.inc.php" ); if (isset($_GET['u'])) { $username = mysqli_real_escape_string($link,$_GET['u']); if (ctype_alnum($username)) { $check = mysqli_query($link,"SELECT username FROM users WHERE username='$username'"); if (mysqli_num_rows($check)!= "") { $get = mysqli_fetch_assoc($check); $username = $get['username']; } else { echo "<meta http-equiv=\"refresh\" content=\"0; url=http://localhost/howcode/index.php\">"; exit ();}}} $selectFriendsQuery = mysqli_query ($link, "SELECT friend_array FROM users WHERE username='$user'"); $friendRow = mysqli_fetch_assoc($selectFriendsQuery); $friendArray = $friendRow['friend_array']; if ($friendArray != "") { $friendArray = explode(",",$friendArray); foreach ($friendArray as $value){ $getposts = mysqli_query($link, "SELECT * FROM posts WHERE user_posted_to='$value' or added_by='$value' xor added_by='$user' or user_posted_to='$user'") or die (mysqli_error()); while ($teste = mysqli_fetch_assoc ($getposts)){ echo $teste['body']."<br/>"; } } } ?> Depois de pensar um pouco, vi que o problema está no foreach, eu acho. pois em cada loop ele pega os dados de novo. Mas continuo sem saber como resolver. Deu para entender agora? Me ajudem, por favor... Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Julho 7, 2015 GROUP BY e/ou suas funções agregadas? (Não entendi muito bem o problema) Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Julho 7, 2015 Ou DISTINCT , mas o problema não me ficou claro. Compartilhar este post Link para o post Compartilhar em outros sites
roxerio 0 Denunciar post Postado Julho 8, 2015 Vou explicar de novo, ficou muito confuso mesmo. Em uma rede social, para fazer o feed de notícias, preciso das postagens em que o usuário conectado ou algum de seus amigos foi a pessoa que postou ou a pessoa para quem postaram. Na tabela, quem postou está na coluna added_by. E para quem foi postado está na coluna user_posted_to. E body é a coluna onde está o texto postado. A variável com o nome do usuário conectado é $user. A variável para o nome de seus amigos é $value. E pode ser que a pessoa postou para si mesma, estando o nome dela em ambas as colunas. Quando vou tentar fazer o feed de notícias, aparece sempre alguns repetidos. Já tentei usar GROUP by e DISTINCT, mas como sou iniciante, posso não estar usando direito. <?php include ( "inc/header.inc.php" ); if (isset($_GET['u'])) { $username = mysqli_real_escape_string($link,$_GET['u']); if (ctype_alnum($username)) { $check = mysqli_query($link,"SELECT username FROM users WHERE username='$username'"); if (mysqli_num_rows($check)!= "") { $get = mysqli_fetch_assoc($check); $username = $get['username']; } else { echo "<meta http-equiv=\"refresh\" content=\"0; url=http://localhost/howcode/index.php\">"; exit ();}}} $selectFriendsQuery = mysqli_query ($link, "SELECT friend_array FROM users WHERE username='$user'"); $friendRow = mysqli_fetch_assoc($selectFriendsQuery); $friendArray = $friendRow['friend_array']; if ($friendArray != "") { $friendArray = explode(",",$friendArray); foreach ($friendArray as $value){ $getposts = mysqli_query($link, "SELECT * FROM posts WHERE user_posted_to='$value' or added_by='$value' xor added_by='$user' or user_posted_to='$user'") or die (mysqli_error()); while ($teste = mysqli_fetch_assoc ($getposts)){ echo $teste['body']."<br/>"; } } } ?> Depois de pensar um pouco, vi que o problema está no foreach, eu acho. pois em cada loop ele pega os dados de novo. Mas continuo sem saber como resolver. Deu para entender agora? Me ajudem, por favor... Compartilhar este post Link para o post Compartilhar em outros sites