Stack Overflow em Português Asked by Wesley Souza on August 21, 2020
Fiz uma iteração foreach para gerar categorias e subcategorias, pois não queria fazer DOIS SELECTS, ficando assim:
//----> Foreach para gerar a categoria, pois são vários items com as mesmas chaves, portanto agrupo
foreach($exibeLista as $row){
$dlD[$row["nameD"]][] = [
"nameD"=>$row["nameD"],
"idD"=>$row["idD"],
"qtdR"=>$row["qtdR"],
"qtdF"=>$row["qtdF"]
];
}
//----> Foreach para gerar subcategorias
foreach($exibeLista as $row){
$dLA[$row["nameP"]][] = [
"nameD"=>$row["nameD"],
"idD"=>$row["idD"],
"idAss"=>$row["idAss"],
"idT"=>$row["idT"],
"nameP"=>$row["nameP"],
"qtdR"=>$row["qtdR"],
"qtdF"=>$row["qtdF"]
];
}
$fsHTML = [];
$rateD = 0;
$qtdAss = 0;
if(is_array($dlD) || is_object($dlD)){
foreach ($dlD as $key => $ds) {
if ($key <> '' && $key <> NULL) {
$rateD += (($ds[0]["qtdR"]*100)/$ds[0]["qtdF"]);
$qtdAss += count($dlD[$key]);
//----> Array para inserir HTML da Categoria criada e criar accordion
$fsHTML[] = '
<div class="col-md-12 col-sm-12 col-xs-12">
<div class="x_panel overflow_hidden padding-into-row-qsts bg-white-row filtro-on">
<span class="rateD">'.ceil($rateD/$qtdAss).'%</span>
<span class="opcao-into-top">'.$ds[0]["idD"].' - '.$ds[0]["nameD"].'
<a class="collapse-link open-filter-qsts border-radius8"><i class="fa fa-chevron-up"></i></a></span>
<div class="x_content" style="display:none;padding-top:10px">
<div class="accordion" id="accordion" role="tablist" aria-multiselectable="true">
';
//----> Verificar se a subcategoria contém a categoria, se contém é incluída na array
foreach ($dLA as $keys => $ass) {
if($ass[0]["idD"] == $ds[0]["idD"] ){
if($ass[0]['idT'] <> 0){ $link = 't='.$ass[0]['idT']; }else{ $link = 'a='.$ass[0]['idAss'];}
$fsHTML[] = '
<div class="panel">
<a class="panel-heading collapsed" href="/v/fs/st?mz=y&type=c&'.$link.'">
<span class="eficiencia-accordion">'.ceil(($ass[0]['qtdR']*100)/$ass[0]['qtdF']).'%</span>
<h4 class="panel-title">'.$ass[0]['nameP'].'</h4>
<span class="unicamente">'.$ass[0]['qtdR'].' respondido de '.$ass[0]['qtdF'].'</span>
</a>
</div>
';
}//if ass
}//foreach ass
}//if ds
//----> Aqui é aonde ocorre o ERRO! Era pra fazer o fechamento do Accordion e gerar uma nova DIV.
//No índice [0] isso ocorre normalmente, porém no [1] ela agrupa todos os accordions. (abaixo farei a amostra)
$fsHTML[] = '</div></div></div></div>';
}//foreach ds
}//if verifica se é array e se é objeto
return implode('', array_unique($fsHTML));
O correto seria assim:
– Categoria
Subcategoria
Subcategoria
– Categoria
Subcategoria
Subcategoria
Como está acontecendo:
– Categoria
Subcategoria
Subcategoria
– Categoria
Subcategoria
Subcategoria
– Categoria
Subcategoria
Subcategoria
– Categoria
Subcategoria
Subcategoria
– Categoria
Subcategoria
Subcategoria
Não consigo entender de jeito nenhum pq o primeiro fecha corretamente e a partir do segundo não.
Alguém me ajuda?
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP