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é +!