Mount Filter and Subfilter Menu

Asked

Viewed 312 times

3

I am trying to assemble a menu where I should show the Filter and Subfilter, I am able to assemble the Filter description but the Subfilter not yet.

What is happening is that it starts to assemble the subfilter and not "break" to the next, staying as it is in the look of the site, the same should be:

Tampo
- Vidro
Formato
- Redondo
Largura
- 0,51m - 1,00
- 1,01m - 1,50
Lugares
- 1 lugar
- 2 lugares
Material
- Metal
- Couro Sintético

Echo of id_filter variables

Look how it’s mine query:

if ($dep != ""  and $sub != "") {   

$arrayProdutos = "";
$arrayFiltros = "";

// COMEÇANDO O MENU
while($row_rsPesquisa = mysql_fetch_assoc($rsPesquisa)) {               

    if ($arrayProdutos == "") { 
        $arrayProdutos = $row_rsPesquisa['id_produto'];                     
    } else {
        $arrayProdutos = $arrayProdutos . "," .$row_rsPesquisa['id_produto'];
    }

}

    mysql_select_db($database_conexao, $conexao);
    $query_filtro = "SELECT 
                          filtro.id_filtro,
                          filtro.descricao
                        FROM
                          produtos_filtro_subfiltro
                          INNER JOIN filtro ON (produtos_filtro_subfiltro.id_filtro = filtro.id_filtro)
                        WHERE
                          produtos_filtro_subfiltro.id_produto IN ($arrayProdutos)
                          GROUP BY
                          produtos_filtro_subfiltro.id_filtro";
    $filtro = mysql_query($query_filtro, $conexao) or die(mysql_error());
    $row_filtro = mysql_fetch_assoc($filtro);                                           
    $totalRows_filtro = mysql_num_rows($filtro);

// MOSTRANDO MENU
while($row_filtro = mysql_fetch_assoc($filtro)) {

    // MONTANDO VALORES PARA O SUBFILTRO
    if ($arrayFiltros == "") { 
        $arrayFiltros = $row_filtro['id_filtro'];                       
    } else {
        $arrayFiltros = $arrayFiltros . "," .$row_filtro['id_filtro'];
    }

echo 
  "<ul class='menu2'>
    <li><a href='#'>$row_filtro[descricao]</a></li>
    <li class='current-menu-item'></li>                
  </ul>";   
// FIM DO MENNU                 

    // COMEÇANDO O SUBMENU              
    mysql_select_db($database_conexao, $conexao);
    $query_subfiltro = "SELECT 
                          subfiltro.descricao
                        FROM
                          produtos_filtro_subfiltro
                          INNER JOIN subfiltro ON (produtos_filtro_subfiltro.id_subfiltro = subfiltro.id_subfiltro)
                        WHERE
                          produtos_filtro_subfiltro.id_filtro IN ($arrayFiltros) AND 
                          produtos_filtro_subfiltro.id_produto IN ($arrayProdutos)
                        GROUP BY
                          subfiltro.descricao";
    $subfiltro = mysql_query($query_subfiltro, $conexao) or die(mysql_error());
    $row_subfiltro = mysql_fetch_assoc($subfiltro);                                         
    $totalRows_subfiltro = mysql_num_rows($subfiltro);

    while($row_subfiltro = mysql_fetch_assoc($subfiltro)) {

        $descProdutoSub = $row_subfiltro['descricao'];

    echo 
      "<ul class='menu2'>
        <li><a href='#'>$descProdutoSub</a></li>
      </ul>";
    }

    // FIM DO SUBMENU
}

echo $arrayFiltros;
}

Structure of submenu menu tables:

inserir a descrição da imagem aqui

inserir a descrição da imagem aqui

  • Hello @Qmechanic73, thanks for the tip, yes, I am aware of the risk, but I am trying to hit this problem from my menu.

1 answer

1


I managed to solve the problem of my filter menu and subfilter, after hours of testing, I realized that what was going wrong was the position of my WHILE, initially I did so:

while($row_rsSubFiltro = mysql_fetch_assoc($rsSubFiltro)) {

}

The command was failing and I made the inversion, so:

do {

} while($row_rsSubFiltro = mysql_fetch_assoc($rsSubFiltro));

The result can be seen here:

Filter and Subfilter being displayed correctly

Browser other questions tagged

You are not signed in. Login or sign up in order to post.