Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom, sexta feira de noite provavelmente não ver ter muita gente aqui pra me ajudar, mas vamos lá!
Eu tenho uma estrutura de BD que relaciona usuarios -> usuarios_grupos <- grupos e gostaria de trazer todos os usuários que participam de vários grupos sem repetir dados.
o código está da seguinte forma:
classe Usuario
class Usuarios extends Connection{
function getGrupos($uid) {
if ($this->logado()) {
$grupos = self::getConn()->prepare("
SELECT
g.id_grupo AS 'gid',
g.nome AS 'nomegrupo'
FROM grupos g
INNER JOIN usuarios_grupos ug ON ug.id_grupo = g.id_grupo
INNER JOIN usuarios u ON u.id_usuario = ug.id_usuario
WHERE u.id_usuario = ?
");
$grupos->execute(array($uid));
$d['num'] = $grupos->rowCount();
$d['dados'] = $grupos->fetchAll();
return $d;
}
}
function getUsuariosPorGrupo($gid){
$usuarios = self::getConn()->prepare("
SELECT DISTINCT
u.nome AS 'nome',
u.sobrenome AS 'sobrenome'
FROM usuarios_grupos ug
INNER JOIN usuarios u ON u.id_usuario = ug.id_usuario
WHERE ug.id_grupo = ?
ORDER BY u.nome ASC
");
$usuarios->execute(array($gid));
$d['num'] = $usuarios->rowCount();
$d['dados'] = $usuarios->fetchAll();
return $d;
}
}
index.php
$br = "<br />";
// chamando a classe Usuarios
$objUsuarios = new Usuarios();
// Chamando os grupos em que o usuário logado está.
// $idUsuario está na sessão
$grupos = $objLogin->getGrupos($uid);
foreach($grupos['dados'] as $g) {
$gid = $g['gid'] . $br;
$usuariosPorGrupo = $objUsuarios->getUsuariosPorGrupo($gid);
echo $gid;
foreach ($usuariosPorGrupo['dados'] as $u) {
echo $u['nome'] . $br;
}
}
Estou trazendo os usuarios para montar um select e não quero que nenhum dado (como o valor 'Renato', mostrado abaixo) venha duplicado.
Do jeito que o codigo está acima ele está trazendo os seguintes valores:
1
Joao
Renato
2
Joao
Maria
Renato
3
Maria
Renato
4
Renato
Qualquer ajuda é bem vinda.
Muito obrigado, desde já!
Carregando comentários...