php – GET passing all records in URL and POST Displays only the last record

Question:

Good afternoon everyone, all right?

I'm trying to create a page to insert items into a cart, this page stores the customer code and the command code in a variable and passes it between screens, in my product search screen I added a button, where when clicking on it , add the product in this id that I kept.

Problem: When I leave the form's Action as GET , it presents all records in the URL , now when I leave it as POST , it passes the value of the last database record to a variable.

I believe there is some flaw in the logic created, could you help me?

NOTE: I left the product code inside the input to pass it as POST ;

<?php if($rows=mysqli_num_rows($result) > 0){ 

    ?>
    <form method="GET" action="incluir_itens.php">
        <!-- Criando os inputs abaixo para incluir o id da comanda e código do cliente, para enviar via POST pra incluir itens, não sei se é o melhor jeito, mas funcionou-->
        <input type="text" name="id_comanda" id="id_comanda" value="<?php echo $id_comanda;?>">
        <input type="text" name="cod_cliente" id="cod_cliente" value="<?php echo $cod_cliente;?>">

        <table id="tabela" class="table table-hover">
           <thead>
              <tr>
                 <th scope="col">Código</th>
                 <th scope="col">Descrição</th>
                 <th scope="col">Qtd</th>
                 <th scope="col">Preço de Venda</th>
                 <th scope="col"></th>
              </tr>
           </thead>
           <tbody>
              <?php
                 while($rows = mysqli_fetch_array($result)){ //while que mostra os resultados
                 ?>
              <tr>
                 <td>
                     <b><input type="text" name="cod_produto" id="cod_produto" value="<?php echo $rows['cod_produto']; ?>"></b>
                </td>
                    <div class="col-5">
                            <button type="submit" style="border:none;"><i class="fa fa-check" style="font-size:25px;color:green;"></i></button>
                    </div>

                 </td>
              </tr>
              <?php
                 }
                 mysqli_close($conn);
                 ?>
           </tbody>
        </table>
        </form>

URL as GET: /incluir_itens.php?id_comanda=32&cod_cliente=2&cod_produto=1&quantidade=&cod_produto=2&quantidade=&cod_produto=3&quantidade=&cod_produto=4&quantidade=&cod_produto=5&quantidade=

SQL Used:

session_start();
   include('conexao.php');

   $tipo_pesquisa = $_POST['pesquisa_produto'];
   $valor_pesquisa = $_POST['valor_pesquisa'];



   if ($tipo_pesquisa == "descricao"){
       $sql_produtos = "select * from produtos where descricao like '%$valor_pesquisa%'";
   }
   elseif($tipo_pesquisa == "cod_produto"){
       $sql_produtos = "select * from produtos where cod_produto = $valor_pesquisa";
   }
   elseif($tipo_pesquisa == "cod_interno"){
       $sql_produtos = "select * from produtos where cod_interno = '$valor_pesquisa'";
   }

   $result=mysqli_query($conn, $sql_produtos);

If I leave it as POST , it shows only the last record of my bank. If my bank record only shows 1 record, I can include it in the cart normally.

Answer:

This is because there are several inputs with the same name . Try switching from:

<b><input type="text" name="cod_produto" id="cod_produto" value="<?php echo $rows['cod_produto']; ?>"></b>

For:

<b><input type="text" name="cod_produto[]" id="cod_produto" value="<?php echo $rows['cod_produto']; ?>"></b>
Scroll to Top