Problem with select dynamical to show dropdown menu for user

Asked

Viewed 131 times

2

I am building the visualization layer for clients of a system in my database have two tables with relationships: inserir a descrição da imagem aqui

and I have a method to return the results of these tables:

 public function dropDownCategoria() {
    $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 comes to a dropdown: inserir a descrição da imagem aqui

the problem is that it is not bringing the results.

1 answer

1


The problem seems to lack the bind in the query and also the left quotes, 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 so:

    $novaConsulta = PDOUtil::getStance()->prepare("
    Select * from pagina where id_categoria_pagina = :id");
    $novaConsulta->execute(array(':id' => $linha->p_id));
  • thank you very much for your reply.

Browser other questions tagged

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