Notice: Trying to get property 'description' of non-object in C: \ xampp \ htdocs \ testemenu \ menu.php on line 83 [closed]

0

I need to build a dynamic menu, follow code:

require_once('testemenu.php');

$sql = "SELECT * FROM tbmenu";
$query = $pdo->query($sql);
$menu = $query->fetchAll(PDO::FETCH_ASSOC);

function montaMenuFilho($menu) {
    echo '<ul class="dropdown-menu pull-left">';
    foreach ($menu as $item) {
        if(is_null($item)) {
            echo '<li class="dropdown-submenu">
                        <a href="#">
                        <i class="icon-puzzle"></i>'.$item->Descricao.'</a>';
            echo montaMenuFilho($item);
            echo '</li>';
        } else {
            if ($item->IdMenu == '27') {

                echo '<li class=""><a href="'.$item->Url.'" title="Necessário logar na ferramenta Power BI.">'.$item->Descricao.'</a></li>';

            } elseif ($item->IdMenu == '47') {

                echo '<li class=""><a href="'.$item->Url.'" title="Apenas para acompanhamento da entrada de recursos.">'.$item->Descricao.'</a></li>';

            } elseif ($item->IdMenu == '45') {

                echo '<li class=""><a href="'.$item->Url.'" title="Painel em validação">'.$item->Descricao.'</a></li>';

            } elseif ($item->IdMenu == '11' || $item->IdMenu == '23' || $item->IdMenu == '16' || $item->IdMenu == '17' || $item->IdMenu == '19' || $item->IdMenu == '12' || $item->IdMenu == '26') {

                echo '<li class=""><a target="_blank" href="'.$item->Url.'">'.$item->Descricao.'</a></li>';

            } else {

                echo '<li class=""><a href="'.$item->Url.'">'.$item->Descricao.'</a></li>';

            }
        }        
    }
    echo '</ul>';
}
?>
<ul class="nav navbar-nav">
    <li class="">
        <a href="http://10.31.40.74/novahome/">Home</a>
    </li>                 
    <?php                        
        foreach ($menu as $item) {
            if(!empty($item)) {                                
                echo '<li class="menu-dropdown classic-menu-dropdown">
                            <a data-hover="megamenu-dropdown" data-toggle="dropdown">
                                '.$item->Descricao.'<i class="fa fa-angle-down"></i>
                            </a>';
                echo montaMenuFilho($item);
                echo '</li>';
            } else {
                echo '<li class=""><a href="'.$item->Url.'">'.$item->Descricao.'</a></li>';
            }
        }  
    ?>             
</ul>

The select of the database follows:

  IdMenu | Descricao                   | Url                                                                  | IdMenuPai | Ordem | Status | DataCriacao |
+--------+-----------------------------+----------------------------------------------------------------------+-----------+-------+--------+-------------+
|      1 | Painéis                     | NULL                                                                 |      NULL |     1 |      1 | NULL        |
|      5 | Soluções                    | NULL                                                                 |      NULL |     3 |      1 | NULL        |
|      7 | SCC                         | NULL                                                                 |         5 |     3 |      1 | NULL        |
|      8 | Consulta de Clientes        | http://google.com.br                                                 |         7 |     1 |      1 | NULL        |
|      9 | Utilização do SCC           | http://google.com.br                                                |         7 |     2 |      1 | NULL        |
|     14 | Canais Eletrônicos          |  http://google.com.br                                                 |         1 |    13 |      0 | NULL        |
|     15 | Calculadora de Parcelamento | http://google.com.br                                                 |         5 |     1 |      1 | NULL        |
|     20 | Fluxos do GPS               |  http://google.com.br                                                 |        66 |     2 |      1 | NULL        |
|     21 | Contestação                 | NULL                                                                 |         1 |     7 |      1 | NULL        |
|     22 | Contestação Móvel           |  http://google.com.br                                                 |        21 |     1 |      1 | NULL        |
|     35 | Blended                     |  http://google.com.br                                                 |        43 |     2 |      1 | NULL
    
asked by anonymous 29.09.2018 / 19:57

1 answer

0

Fellow, to correct this, you can change your FETCH's response method to:

$menu = $query->fetchAll(PDO::FETCH_OBJ);

But if you want to keep as FECTH_ASSOC, the form of recovery of fields becomes:

$item["Descricao"]

and so on for all fields accessed ...

    
29.09.2018 / 20:26