我对这个正在开发的网站过滤器有这个问题,基本上我需要将所有类别放在一起:
我需要将所有类别放在一起,这意味着所有的" sistema operativo"和" disco duro"选项应该在一起,而不是在列表的末尾(如图)。我尝试使用array_push()和in_array函数来实现这一点,但最后它只是再次显示这些最后的选项。
这是我的代码:
<?php
$filterTitle = array();
foreach($resultFiltro as $filtros){ // titulo de categoria
if (!empty($_SESSION['filterId'])){
$resultDatos = filtroCategoriasDatos($filtros['id_padre']);
$resultFiltroDos = filtroDatosEspecificosFiltros($filtros['id'], $in[0]);
}else{
$resultDatos = filtroCategoriasDatos($filtros['id_caracteristica']);
$resultFiltroDos = filtroDatosEspecificos($filtros['id_caracteristica'], $in[0]);
}
<div class="grupo_filtro">
<?php
//if(!in_array($resultDatos[0]['titulo'], $filterTitle)){ ?>
<div class="titulo_filtro">
<?php echo $resultDatos[0]['titulo'];?>
</div>
<?php array_push($filterTitle, $resultDatos[0]['titulo']);?>
<?php //} ?>
<div class="con_filtros_filtro">
<?php foreach($resultFiltroDos as $select){ ?>
<div class="filtro atributo <?php echo $class;?>" titulopadre="<?php echo $resultDatos[0]['titulo'];?>" id="<?php echo $select['id'];?>">
<?php echo $select['titulo'];?>
</div>
<?php } ?>
</div>
</div>
<?php
} ?>
我不知道这是否可以修复以某种方式对记录集进行排序,或者是否有其他技巧可以帮助我解决这个问题。
提前谢谢。答案 0 :(得分:0)
我认为这可能是你的解决方案
<?php
$filterTitle = array();
foreach($resultFiltro as $filtros){ // titulo de categoria
?> <div class="grupo_filtro"> <?php
if (!empty($_SESSION['filterId'])){
$resultDatos = filtroCategoriasDatos($filtros['id_padre']);
$resultFiltroDos = filtroDatosEspecificosFiltros($filtros['id'], $in[0]);
?>
<div class="titulo_filtro">
<?php echo $resultDatos[0]['titulo'];?>
</div>
<?php array_push($filterTitle, $resultDatos[0]['titulo']);
}else{
$resultDatos = filtroCategoriasDatos($filtros['id_caracteristica']);
$resultFiltroDos = filtroDatosEspecificos($filtros['id_caracteristica'], $in[0]);
?>
<div class="con_filtros_filtro">
<?php foreach($resultFiltroDos as $select){ ?>
<div class="filtro atributo <?php echo $class;?>" titulopadre="<?php echo $resultDatos[0]['titulo'];?>" id="<?php echo $select['id'];?>">
<?php echo $select['titulo'];?>
</div>
<?php } ?>
</div>
</div>
<?php
}} ?>
答案 1 :(得分:0)
问题在于功能。我添加了一个订单,它已修复。感谢大家的帮助。
这里我附上了函数
function filtroDatosEspecificosFiltros($datoPadre, $in=""){
global $db;
if($in != ""){
$filtroCategoriaDos = "SELECT p.titulo, pc.id_atributo, pc.id_caracteristica, p.id, pc.id_producto FROM principal p INNER JOIN producto_caracteristica pc WHERE p.id=".$datoPadre." AND p.id=pc.id_atributo AND visible=1 AND pc.id_producto IN (".$in.") group by pc.id_atributo";
}else{
$filtroCategoriaDos = "SELECT p.titulo, pc.id_atributo, pc.id_caracteristica, p.id, pc.id_producto FROM principal p INNER JOIN producto_caracteristica pc WHERE p.id=".$datoPadre." AND p.id=pc.id_atributo AND visible=1 group by pc.id_atributo";
}
$resultDatos = $db->getAll($filtroCategoriaDos);
usort($resultDatos, function ($elem1, $elem2) {
return strcmp($elem1['titulo'], $elem2['titulo']);
});
return $resultDatos;
}
感谢所有的帮助。