Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Form em um foreach

Salve amigos!

Tenho um 'foreach' que renderiza uma lista de produtos. Nesse foreach tenho um 'form' que, quando submetido deveria via POST submeter os values dos campos(id_produto e quantidade).

O problema é que ao submeter ele sempre envia os dados da ultima posicao renderizada pelo foreach.

Gostaria de saber também qual o melhor caminho para submeter de forma assincrona esse POST e também manipular o DOM fazendo com que o item que já fora submetido não seja mais renderizado. Na minha cabeça vizualizo um atributo que determina isso através de uma condicional no foreach. Porém gostaria de fazer 'assincronamente'.

Obrigado

<div class="row">
                                <?php
                                $margem = 1.8;
                                $produtos = listaProdutos();
                                foreach ($produtos as $produto) :
                                ?>
                                <!-- Card do produto -->
                                <div class="col-lg-3 col-sm-4 col-xs-6">
                                    <!--Card-->
                                    <div class="card">

                                        <!--Imagem-->
                                        <div class="view overlay hm-white-slight">
                                            <img src="imagens/produto/uva-verde.png" class="img-overlay img-fluid" alt="">
                                            <a href="#!">
                                                <div class="mask"></div>
                                            </a>
                                        </div>
                                        <!--/.Imagem-->

                                        <!--Card content-->
                                        <div class="card-deck">
                                            <!--Nome-do-Produto-->
                                            <h4 class="card-title"><?php echo $produto->nome_produto; ?></h4>
                                            <!--Descrição-->

                                            <p style="font-size: large" class="card-text">R$ <strong><?php echo number_format($produto->preco_custo*$margem,2,',','.'); ?></strong> | <?php echo $produto->unidade; ?></p>
                                            <form action="cesta-adiciona-item-session.php" method="post">
                                                <?php if($produto->unidade == "Kg"){ ?>
                                                    <select style="padding: 2%; width: 20%" name="quantidade">
                                                        <option selected="selected">0</option>
                                                        <option> 0,5 </option>
                                                        <option> 1   </option>
                                                        <option> 1,5 </option>
                                                        <option> 2   </option>
                                                        <option> 2,5 </option>
                                                        <option> 3   </option>
                                                    </select>

                                                <?php } else { ?>
                                                    <select style="padding: 2%;"  name="quantidade">
                                                        <option selected="selected"> 0 </option>
                                                        <option> 1 </option>
                                                        <option> 2 </option>
                                                        <option> 3 </option>
                                                        <option> 4 </option>
                                                        <option> 5 </option>
                                                    </select>

                                                <?php } ?>
                                                <input type="hidden" name="id_produto" value="<?php echo("$produto->id_produto"); ?>" >
                                                <br><button type="submit" class="btn btn-md btn-primary btn-flat">Colocar na cesta</button>


                                            <div class="read-more">
                                                <p class="card-text"><br></p>
                                            </div>
                                        </div>
                                        <!--/.Card content-->

                                    </div>
                                    <!--/.Card-->
                                </div>
                                <!--/.Card do produto -->
                                <?php
                                endforeach;
                                ?>
                            </div>
4 respostas

Fala ai Kaue, tudo bem ?

Desculpa cara, não entendi muito bem sua dúvida, você quer submeter todos os produtos de uma vez, ou para cada form submeter os dados do produto referente ?

Abraços

E ai Matheus, obrigado pela atenção. Cada form deve submeter os dados do produto referente. Explicando melhor o cenário, veja que a action do form é "cesta-adiciona-item-session.php". Esta action adiciona o produto(que deve vim deste POST em questão) a um array de produtos que se encontra na sessão, incrementa um indice que também está na sessão e retorna para a página para que outros produtos sejam adicionados.

solução!

Era só fechar o form -.- rsrs

Desculpe Kaue, fds foi corrido para mim, acabei não vendo sua respostas, fico feliz que tenha resolvido.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software