Undefined index in SELECT with INNER JOIN in PHP table

Asked

Viewed 42 times

0

I made a PHP code that makes the INNER JOIN of 4 tables, only in the other PHP code that is inside a <table> several mistakes are happening.

  • Error
Notice: Undefined index: itens_venda.cd_itens_venda 
Notice: Undefined index: produto.nome 
Notice: Undefined index: funcionario.nome
Notice: Undefined index: cliente.nome
Notice: Undefined index: itens_venda.tipo_pagamento 
Notice: Undefined index: itens_venda.valor_item
Notice: Undefined index: itens_venda.quantidade
Notice: Undefined index: itens_venda.valor_total
Notice: Undefined index: itens_venda.data_venda 

Someone can help me with this problem.

  • Code
<?php
        try {
            $selecao = "SELECT itens_venda.cd_itens_venda, produto.nome, funcionario.nome, cliente.nome, 
            itens_venda.tipo_pagamento, itens_venda.valor_item, itens_venda.quantidade, 
            itens_venda.valor_total, itens_venda.data_venda FROM itens_venda
            INNER JOIN produto ON (produto.cd_produto = itens_venda.cd_produto)
            INNER JOIN funcionario ON (funcionario.cd_funcionario = itens_venda.cd_funcionario)
            INNER JOIN cliente ON (cliente.cd_cliente = itens_venda.cd_cliente)";
            $seleciona_dados = $conexao->prepare($selecao);
            $seleciona_dados->execute();
            $linhas = $seleciona_dados->fetchAll(PDO::FETCH_ASSOC);
        } catch (PDOException $falha_selecao) {
            echo "A listagem de dados não foi feita".$falha_selecao->getMessage();
        }
    ?>
    <table border="1">
        <tr> <td> ID <td> Produto <td> Funcionário <td> Cliente 
        <td> Pagamento <td> Valor item <td> Quantidade <td> Valor total <td> Data da venda </tr>
        <?php 
            foreach ($linhas as $exibir_colunas){
                echo '<tr>';
                echo '<td>'.$exibir_colunas['itens_venda.cd_itens_venda'].'</td>';
                echo '<td>'.$exibir_colunas['produto.nome'].'</td>';
                echo '<td>'.$exibir_colunas['funcionario.nome'].'</td>';
                echo '<td>'.$exibir_colunas['cliente.nome'].'</td>';
                echo '<td>'.$exibir_colunas['itens_venda.tipo_pagamento'].'</td>';
                echo '<td>'.$exibir_colunas['itens_venda.valor_item'].'</td>';
                echo '<td>'.$exibir_colunas['itens_venda.quantidade'].'</td>';
                echo '<td>'.$exibir_colunas['itens_venda.valor_total'].'</td>';
                echo '<td>'.$exibir_colunas['itens_venda.data_venda'].'</td>';
                echo '</tr>'; echo '</p>';
            }
        ?>
    </table>

1 answer

0


The table name does not go next to the name of the fields in the query results. As some fields have the same name in different tables, I had to add aliases to them. Follow the settings:

    <?php
            try {
                $selecao = "
                     SELECT itens_venda.cd_itens_venda, 
                            produto.nome as nome_produto, 
                            funcionario.nome as nome_funcionario, 
                            cliente.nome as nome_cliente, 
                            itens_venda.tipo_pagamento,
                            itens_venda.valor_item, 
                            itens_venda.quantidade, 
                            itens_venda.valor_total, 
                            itens_venda.data_venda 
                     FROM itens_venda
                     INNER JOIN produto ON (produto.cd_produto = itens_venda.cd_produto)
                     INNER JOIN funcionario ON (funcionario.cd_funcionario = itens_venda.cd_funcionario)
                     INNER JOIN cliente ON (cliente.cd_cliente = itens_venda.cd_cliente)
                ";
                $seleciona_dados = $conexao->prepare($selecao);
                $seleciona_dados->execute();
                $linhas = $seleciona_dados->fetchAll(PDO::FETCH_ASSOC);
            } catch (PDOException $falha_selecao) {
                echo "A listagem de dados não foi feita".$falha_selecao->getMessage();
            }
        ?>
        <table border="1">
            <tr> <td> ID <td> Produto <td> Funcionário <td> Cliente 
            <td> Pagamento <td> Valor item <td> Quantidade <td> Valor total <td> Data da venda </tr>
            <?php 
                foreach ($linhas as $exibir_colunas){
                    echo '<tr>';
                    echo '<td>'.$exibir_colunas['cd_itens_venda'].'</td>';
                    echo '<td>'.$exibir_colunas['nome_produto'].'</td>';
                    echo '<td>'.$exibir_colunas['nome_funcionario'].'</td>';
                    echo '<td>'.$exibir_colunas['nome_cliente'].'</td>';
                    echo '<td>'.$exibir_colunas['tipo_pagamento'].'</td>';
                    echo '<td>'.$exibir_colunas['valor_item'].'</td>';
                    echo '<td>'.$exibir_colunas['quantidade'].'</td>';
                    echo '<td>'.$exibir_colunas['valor_total'].'</td>';
                    echo '<td>'.$exibir_colunas['data_venda'].'</td>';
                    echo '</tr>'; echo '</p>';
                }
            ?>
        </table>
  • It worked, thanks Benilson, helped me a lot.

  • Happy to have helped.

Browser other questions tagged

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