Ir para conteúdo

POWERED BY:

Arquivado

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

Renato de Araujo

Dados duplicados com foreach dentro de foreach

Recommended Posts

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á!

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu não entendi bem mais para você tirar os itens duplicados pode fazer da seguinte forma

 

$select =  array();
if(array_search($usuario, $select) === false){
    array_push($select, $usuario);
}

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.