Como exibir registros de database na visualização sem repetir um campo?

Na minha base de dados, eu tenho duas tabelas de uma política (política, política, política, tipo de identidade) e outros tipo-políticas (policy_type_id, policy_type).
Esta é a política da tabela

politics_id | politics | politics_type_id -------- | -------- | ------------- 1 | Politic 1 | 1 2 | hello world | 2 3 | magic | 1 4 | love |1 

Esta é a tabela tipo_politics

  politics_type_id | politics_type ------------- | -------- 1 | general 2 | life 

O que eu preciso é na visão para mostrar os registros da tabela política com o tipo de política como o header, mas o header não é repetido. Algo assim.

 **General** - Politic 1 - magic - love **Life** - hello world 

Trate de fazer a consulta com um grupo, mas mostra apenas um registro com political_type_id 1 . Este é o código de exibição.

  <?php for ($j = 0; $j  

Com este formulário, mostre os registros como este:

  **General** - Politic 1 **General** - magic **General** - love **Life** - hello world 

Espero que você possa me ajudar e que minha pergunta seja uma boa pergunta.

Parece que você quer que os headers sejam exibidos somente quando houver uma mudança no tipo de politics_type . Isso exigiria manter uma pista de seu valor em cada iteração e a lógica pode assim ser construída da seguinte maneira:

 < ?php $previous_politics_type = ""; for ($j = 0; $j < $contador; $j++) { if($previous_politics_type != $list_politic[$j]['politics_type']){ // <-- new if condition ?> 

< ?php echo $list_politic[$j]['politics_type']; ?>

< ?php } // <-- end if $previous_politics_type = $list_politic[$j]['politics_type']; ?>
  • < ?php echo $list_politic[$j]['politicas']; ?>
< ?php } // for j ?>

O layout do

s acima pode ou não ser exatamente como você precisa, mas espero que ele dê uma idéia sobre como usar a nova variável $previous_politics_type .

Se você fizer uma consulta como essa, então você receberá uma linha para o tipo, bem como a política atual:

 select tp.politics_type_id, tp.politics_type politics_text, null politics_id, 1 row_type from tipo_politics tp union select p.politics_type_id, p.politics politics_text, p.politics_id, 2 row_type from politics p order by politics_type_id, row_type, politics_id; 

Isso dá resultados como este:

 +------------------+---------------+-------------+----------+ | politics_type_id | politics_text | politics_id | row_type | +------------------+---------------+-------------+----------+ | 1 | general | | 1 | | 1 | Politic 1 | 1 | 2 | | 1 | magic | 3 | 2 | | 1 | love | 4 | 2 | | 2 | life | | 1 | | 2 | hello world | 2 | 2 | +------------------+---------------+-------------+----------+ 

Agora você pode percorrer os resultados e atuar apenas nas linhas de header (onde row_type = 1 ). Então dentro desse loop, faça outro loop e escolha as linhas de detalhes (onde row_type = 2 ).

 < ?php for ($j = 0; $j < $contador; $j++) { if($list_politic[$j]['row_type'] == 1){ ?> 

< ?php echo $list_politic[$j]['politics_text']; ?>

  • < ?php for($i=0; $i < $contador; $i++) { if($list_politic[$i]['row_type'] == 2 && $list_politic[$i]['politics_type_id'] == $list_politic[$j]['politics_type_id']) { ?> < ?php echo $list_politic[$j]['politics_text']; ?> < ?php } // if ?> < ?php } // for i ?>
< ?php } // for if ?> < ?php } // for j ?>