Ícone do site Linha de Comando

PHP: Exemplos práticos – Agrupando uma lista de clientes por país e cidade(s)

Olá!

Neste post vamos aprender como agrupar uma lista de clientes por país e cidade(s). Em nosso contexto, teremos 3 tabelas, a tabela de país tblPais, a tabela de cidades tblCidades e a tabela de clientes tblClientes. Teremos uma função que fará o agrupamento e um arquivo de conexão com o banco de dados.

Tabelas

tbClientes(idCliente PK AI, nomeCliente VARCHAR(180), idPais INT(), idCidade INT())
 
tbPais(idPais PK AI, nomePais VARCHAR(180))
 
tbCidades(idCidade PK AI, nomeCidade VARCHAR(180), idPais INT())

O resultado esperado:

--------------------------------------------------------
País: Brasil - Cidade: Belo Horizonte
--------------------------------------------------------
9 - João
1 - Maria
10 - Roberto
--------------------------------------------------------
País: Brasil - Cidade: Rio de Janeiro
--------------------------------------------------------
2 - Ana
--------------------------------------------------------
País: Brasil - Cidade: São Paulo
--------------------------------------------------------
3 - Carlos
--------------------------------------------------------
País: Itália - Cidade: Roma
--------------------------------------------------------
12 - André
13 - Gabriel
5 - Matheus
------------------------------------------
País: Portugal - Cidade: Porto
------------------------------------------
11 - Carla
6 - Lucia

Vamos ao código, sem frescura e direto ao ponto.

1º. Crie o arquivo conexao.php que fará a conexão com o banco de dados via MySQLi


2º. Crie o arquivo funcoes.php que conterá a função de agrupamento.

";
            $html .= "País: {$linha['nomePais']} - Cidade: {$linha['nomeCidade']}";
            $html .= "
"; $html .= "

{$linha['idCliente']} - {$linha['nomeCliente']}

"; $idPaisOld = $idPaisNew; $idCidadeOld = $idCidadeNew; } else { if ($idCidadeNew != $idCidadeOld) { $html .= "
"; $html .= "País: {$linha['nomePais']} - Cidade: {$linha['nomeCidade']}"; $html .= "
"; $idCidadeOld = $idCidadeNew; } $html .= "

{$linha['idCliente']} - {$linha['nomeCliente']}

"; } } return $html; }

3º. Crie o arquivo index.php que fará a requisição dos arquivos conexao.php e funcoes.php, além do select e exibição dos resultados.

query($sql)->fetch_all(MYSQLI_ASSOC);
// passamos o array para a função e exibimos o resultado
echo (agruparClientesPorPaisCidades($retorno));

Baixe o projeto completo clicando aqui.

Qualquer dúvida ou sugestão, deixe nos comentários.

Até +!

Sair da versão mobile