Dynamic Menu in Bootstrap with PHP and Mysql

2

I have in mysql two tables (subjects and pages), the page table has a field (subject_id), which relates what subject is that page.

I would like to mount a menu with submenu in bootstrap

This is Table Subjects

ID  nome_menu_assunto
1   Titulo_1
2   Titulo_2
3   Titulo_3
4   Titulo_4

This is Table Pages

ID  assunto_id titulo_menu_pagina
1   2          Titulo...
2   3          Titulo...
3   3          Titulo...
4   4          Titulo...
5   2          Titulo...
6   4          Titulo...
7   3          Titulo...
8   2          Titulo...

This is the script I have in php

    $assuntos = "SELECT * FROM assuntos";

    $resultado_assuntos = mysqli_query($conexao,$assuntos);

    while ($linha_assunto = mysqli_fetch_array($resultado_assuntos)) {

    $subpagina = "SELECT * FROM paginas WHERE assunto_id = {$linha_assunto['id']}";

    $resultado_subpagina = mysqli_query($conexao,$subpagina);

        while ($linha_subpagina = mysqli_fetch_array($resultado_subpagina)) {

            if (!isset($linha_subpagina['assunto_id'])) {
                    echo "<li><a href=\"/{$linha_assunto['nome_menu']}\">{$linha_assunto['nome_menu']}</a></li>";
            } else {
                    echo "<li class=\"dropdown\">";
                    echo "<a href=\"\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\">{$linha_assunto['nome_menu']} <span class=\"caret\"></span></a>";
                    echo "<ul class=\"dropdown-menu\" role=\"menu\">";

                        while ($linha_subpaginas = mysqli_fetch_array($resultado_subpagina)) {
                            echo "<li><a href=\"/{$linha_subpaginas['nome_menu']}\">{$linha_subpaginas['nome_menu']}</a></li>";
                        }

                    echo "</ul>";
                    echo "</li>";                       
                }
            }
    }

But this way, it shows as menu, only the titles that have indication in the menu subject_id, and does not show all submenus,

    
asked by anonymous 18.05.2015 / 02:58

1 answer

1

I got the result I wanted, this is the script

$assuntos = "SELECT * FROM assuntos";
$resultado_assuntos = mysqli_query($conexao,$assuntos);

while ($linha_assunto = mysqli_fetch_array($resultado_assuntos)) {

    $linha_assunto_slug = url_slug($linha_assunto['nome_menu']);

    $linha_sem_filho = "<li><a href=\"{$linha_assunto['nome_menu']}\">{$linha_assunto['nome_menu']}</a></li>";

    $subpagina = "SELECT * FROM paginas WHERE assunto_id = {$linha_assunto['id']}";
    $resultado_subpagina = mysqli_query($conexao,$subpagina);

    $fieldinfo=mysqli_fetch_field_direct($resultado_subpagina,1);

    if ($fieldinfo->max_length > 0) {

        echo "<li class=\"dropdown\">";
        echo "<a href=\"\" class=\"dropdown-toggle\" data-toggle=\"dropdown\" role=\"button\" aria-expanded=\"false\">{$linha_assunto['nome_menu']} <span class=\"caret\"></span></a>";
        echo "<ul class=\"dropdown-menu\" role=\"menu\">";

        while ($linha_subpagina = mysqli_fetch_array($resultado_subpagina)) {
        echo "<li><a href=\"{$linha_subpagina['nome_menu']}\">{$linha_subpagina['nome_menu']}</a></li>";
        }
        echo "</ul>";
        echo "</li>";

        } else {
            echo $linha_sem_filho;
        }                   
} 
    
18.05.2015 / 05:50