Problem with select dynamic to show dropdown menu for user

2

I am building the visualization layer for the clients of a system in my database I have two tables with relationships:

Ihaveamethodtoreturntheresultsofthesetables:

publicfunctiondropDownCategoria(){$consulta=PDOUtil::getStance()->prepare("SELECT categoria_pagina.id_categoria_pagina as cat_id, categoria_pagina.nome as c_nome,
    pagina.id_pagina as p_id, pagina.tema, pagina.data, pagina.id_categoria_pagina,
    descricao_pagina.id_descricao_pagina, descricao_pagina.sub_titulo, descricao_pagina.texto_da_pagina, descricao_pagina.id_pagina as d_Id_pag,
    imagem.id_imagem, imagem.nome as img_nome, imagem.tipo, imagem.tamanho, imagem.id_pagina as img_id_pagina,
    descricao_imagem.id_descricao_imagem, descricao_imagem.titulo, descricao_imagem.texto_da_imagem, descricao_imagem.id_imagem
    FROM categoria_pagina
    left JOIN pagina ON (pagina.id_categoria_pagina = categoria_pagina.id_categoria_pagina)
    left JOIN descricao_pagina ON (descricao_pagina.id_pagina = pagina.id_pagina)
    left JOIN imagem ON(imagem.id_pagina = pagina.id_pagina)
    left JOIN descricao_imagem ON(descricao_imagem.id_imagem = imagem.id_imagem)
    group by c_nome");
    $consulta->execute();
    while ($linha = $consulta->fetch(PDO::FETCH_OBJ)) {
        echo '<li class="dropdown"><a href="index.php?id_categoria='.$linha->id_categoria_pagina.'" class="dropdown-toggle"
        data-toggle="dropdown">' . $linha->c_nome . '<b class="caret"></b></a>';

        $novaConsulta = PDOUtil::getStance()->prepare("Select * from pagina where id_categoria_pagina=:'$linha->p_id'");
        $novaConsulta->execute();
        while ($novaLinha = $novaConsulta->fetch(PDO::FETCH_OBJ)) {
            echo'<ul class="dropdown-menu">
        <li><a href="index.php?pagina=' . $novaLinha->id_pagina . '">';
        echo $novaLinha->tema;
        echo '</a></li></ul></li>';
        }



    }
}

It is a dropDown:

The problem is that it is not bringing the results.

    
asked by anonymous 14.06.2015 / 20:38

1 answer

1

The problem seems to be the lack of bind in the query and also the missing quotation marks, which are causing an error.

    $novaConsulta = PDOUtil::getStance()->prepare("
    Select * from pagina where id_categoria_pagina=:'$linha->p_id'");
                                                   ^^            ^ 
    caracteres inválidos---------------------------||------------|

    $novaConsulta->execute();
    while ($novaLinha = $novaConsulta->fetch(PDO::FETCH_OBJ)) {

I believe your intention was to do this:

    $novaConsulta = PDOUtil::getStance()->prepare("
    Select * from pagina where id_categoria_pagina = :id");
    $novaConsulta->execute(array(':id' => $linha->p_id));
    
15.06.2015 / 02:00