Carcleo 4 Denunciar post Postado Junho 15, 2011 Pessoal. A minha dificuldade agora é a seguinte: Tenho uma lista de produtos onde o cliente escolhe, o produto, a quantidade desse produto. Essa lista esta paginada. Como posso fazer para que, quando o cliente passar da pagina um para a pagina dois e resolva então submeter o form, ele não perca as quantidades digitadas nas paginas anteriores? Abaixo esta o form. A lista ainda não esta paginada pois preciso saber como fazer (não para paginar mas sim não perder os dados). Esse código, tem botão adicionar para cada produto e, depois do while, um form com um botão para incluir todos os produtos que o cliente alterou sua quantidade, de 0 para outro valor. Como fazer isso? <? if ($acao== "mostra_produtos"){ $sql = " select pl.id_lista, p.foto, pl.id_produto, p.nome, f.nome, f.razaosocial, g.nome, p.quantidadecaixa, p.preco from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo where pl.data_fim >= CURRENT_DATE order by pl.id_lista desc, f.nome, f.razaosocial, p.nome "; $sql2=mysql_query($sql); if(mysql_num_rows($sql2)==0) { echo "<table border=1 width=800 align=center> <tr><td colspan=11 align=center><h3>Ainda não há produtos cadastrados</h3></td></tr> </table>"; } echo "<table border=1 width=800 align=center> <tr><td colspan=11 align=center><h3>Produtos</h3></td></tr> <tr> <td align=center>Lista</td> <td align=center>Foto</td> <td align=center>Produto</td> <td align=center>Fornecedor</td> <td align=center>Grupo</td> <td align=center>Descrição</td> <td align=center>Qtde. caixa</td> <td align=center>Preço</td> <td align=center>Quantidade</td> <td align=center>Sub Total</td> <td align=center>Adicionar</td> </tr> "; while(list($id_lista, $foto, $id_produto, $nome_produto, $nome_fornece, $razao_fornece, $nome_grupo, $quantidadecaixa, $preco) = mysql_fetch_row($sql2)){ include("../global/funcoes_php/foto_ver.php"); $icone = "<img border=0 src='../img/saiba_mais.png' alt='Saiba Mais'>"; echo "<tr> <td align=center>$id_lista</td> <td align=center>$foto2</td> <td align=let>$nome_produto</td> <td align=let>$nome_fornece$razao_fornece</td> <td align=let>$nome_grupo</td> <td align=\"center\" valign=\"middle\"> <form action='?acao=saibamais' method=\"post\"> <input type=\"hidden\" name=\"id_prod\" value=\"$id_produto\"> <input type=\"hidden\" name=\"id_lista\" value=\"$id_lista\"> <input type=\"submit\" alt=\"Saiba Mais\" style=\"background-image:url(../img/saiba_mais.png);width=72;height=28\" value=\"\"> </form> </td> <td align=center>$quantidadecaixa</td> <td align=right>R$ $preco</td> <td align=right> <input type=text id=quant[$id_produto] value=1 size=2 style=\"text-align: center;\" onKeyPress=\"BloqueiaLetras();\" onchange=\"calculo(this.value, $preco,'quant[$id_produto]','quan[$id_produto]','label_preco[$id_produto]');\" > </td> <td align=right>R$ <label id=\"label_preco[$id_produto]\">$preco</label></td> <td align=center valign=\"middle\"> <form action='carrinho.php?op=adicionar' method=\"post\" name=\"form_add[$id_produto]\"> <input type=\"hidden\" name=\"id_prod\" value=\"$id_produto\"> <input type=\"hidden\" name=\"quan[$id_produto]\" id=\"quan[$id_produto]\" value=\"1\"> <input type=\"hidden\" name=\"id_lista\" value=\"$id_lista\"> <input type=\"button\" value=\"Adicionar\" onclick=\"validaprodutoenviado('quant[$id_produto]','form_add[$id_produto]');\"> </form> </td> </tr>"; } $sql_prods = " select pl.id_produto, pl.id_lista from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo where pl.data_fim >= CURRENT_DATE order by pl.id_lista desc, f.nome, f.razaosocial, p.nome "; $sql2=mysql_query($sql_prods); if(mysql_num_rows($sql2)==0) { echo "<table border=1 width=800 align=center> <tr><td colspan=11 align=center><h3>Ainda não há produtos cadastrados</h3></td></tr> </table>"; } else { echo "<form action=\"carrinho.php?op=adicionar\" method=\"post\" name=\"envia_tudo\">"; $i = 0; while(list($id_produto, $id_lista)=mysql_fetch_row($sql2)) { echo "<input type=\"hidden\" name=\"{$i}[id_prod]\" value=\"$id_produto\">"; echo "<input type=\"hidden\" name=\"{$i}[id_lista]\" value=\"$id_lista\">"; $i++; } echo " <tr> <td align=center valign=\"middle\" colspan=11 height=50> <input type=\"submit\" value=\"Enviar todos os ítens\"> </form> </td> </tr> "; } echo "</table>"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Junho 15, 2011 <!doctype html> <html> <head> <meta http-equiv="content-type" content="text/html;charset=iso-8859-1" /> </head> <body> <fieldset> <form method="POST"> <?php for( $i = 0; $i <= 5; ++$i ){ printf( '<input type="checkbox" name="itens[]" value="marqueiOCheckboxNumero(%s)" />', $i ); } ?> <input type="submit" name="enviar" value="Enviar Selecionados" /> </form> </fieldset> <?php echo '<pre>'; if( isset( $_POST['enviar'] ) ){ print_r( $_POST ); } ?> </body> </html> Saída: Array ( [itens] => Array ( [0] => marqueiOCheckboxNumero(0) [1] => marqueiOCheckboxNumero(1) [2] => marqueiOCheckboxNumero(2) [3] => marqueiOCheckboxNumero(3) [4] => marqueiOCheckboxNumero(4) [5] => marqueiOCheckboxNumero(5) ) [enviar] => Enviar Selecionados ) Cria seus inputs na forma de um array com o código de cada produto, é envia ... Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Junho 15, 2011 Irmão. Acho que eu não te entendi ou você não me compreendeu! rsrs Meu código já esta pronto. Já sei como paginar. O problema é que não sei como manter as quantidades guardadas de forma que o cliente, quando clikar no botão envia todos os produtos, envie apenas os produtos que sua quantidade foi alterada de 0 para outra quantidade. Alem disso, ja tem todo uma baga de códigos dependendo desse. Caso eu refaça em outro esquema, vai complicar minha vida. A maior dificuldade é fazer com que o botão enviar todos os itens consiga pegar os dados digitados em outro form. Outra coisa: no teu código, só tem como eu enviar todos de uma só vez. E agora, como ficaria se eu quisesse enviar um produto e enviar ele para o carrinho? Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Junho 15, 2011 Boa noite Carcleo, na verdade você pode fazer assim: Toda vez que o usuário selecionar os produtos e quantidades, salvar em uma session os id's dos produtos e a quantidade. Geralmente se cria uma session antes de tudo, cada interação que ele fizer no form você envia via json/ajax os valores para uma página .php onde vai ter o seu controllador dessa sessão, faz uma pesquisa nela para ver se ja existe o $id do produto e incrementa/descrementa, conforme a necessidade ou da um array_push() para adicionar o novo registro. Independente da paginação é bom fazer isso no site inteiro, porque muitas vezes o usuário muda de página(fale conosco/mapa do site) e coisa do tipo e acaba perdendo tudo o que foi digitado. Outra coisa: Você também pode fazer esse armazenamento direto no BD. Abraços e até mais :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Junho 15, 2011 Boa Noite André. Vou tentar fazer isso aqui. Mas, mexendo mexendo, entri noutra furada: Na listagem dos produtos tenho la|: form while{ lista | foto | produto | fornecedor | grupo | descriçao | itens na caixa | preço | quantidade | subtotal | adicionar } Botão Submit Isso é uma linha por produto. Essas linhas teem um botão submit que vai enviar todos os produtos que, no item quantidade, o cliente alterou de 0 (padrão) para outro valor, e só os produtos que foram alterados Outro problema é que, na descrição, tem um form com um submit indicando o id do produto da linha. Esse form irá abrir uma action para exibir os dados desse produto. no campo adicionar, tem um form com um submit indicando o id do produto da linha e a quantidade digitada no input quantidade. Esse form irá abrir uma action com a finalidade de enviar apenas este produto para o carrinho. Existe tambem o problema de um form dentro do outro. Já não sei mais oque fazer. Tô todo perdido. Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Junho 15, 2011 André. Fiz minha tentativa mas não consegui fazer a adaptação do teu exemplo ao meu código. Principalmente por causa de ter dois forms dentro de um form grande. Olha só. Me ajuda nisso por favor. Fiz um trabalho enorme e agora, não estou conseguindo fazer essa ultima coisa que o cliente pediu. Se eu não conseguir, perderei todo o resto que ja fiz e eu trabalho em casa sozinho. Estou me esforçando. Se puderem me ajudar ficarei muito agradecido. Compartilhar este post Link para o post Compartilhar em outros sites
André Severino 3 Denunciar post Postado Junho 16, 2011 Você tem 1 form e dentro desse form você tem 2 form's ? ? Porque não separa 1 form e outro form ? ? Coloca seu código e seu problema para nós visualizarmos, e ver o que pode fazer, e com certeza tentarei te ajudar. :thumbsup: Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Junho 16, 2011 Ok. Trata-se de uma lista de podutos. form while aqui, cada linha tras as informações do produtos. Aqui, você envia cada produto, um por um, o dessa linha no caso. Fiz um form passando os paametros para o carrinho. A ideia desse form aqui é evitar href. end while submit todos os produtos que o cliente trocou a quantidade de 0 para outro valor end form Segue o codigo: <? if ($acao== "mostra_produtos"){ $sql = " select pl.id_lista, p.foto, pl.id_produto, p.nome, f.nome, f.razaosocial, g.nome, p.quantidadecaixa, p.preco from produtos_lista pl inner join produtos p on pl.id_produto = p.id inner join fornecedores f on f.id = p.fornecedor inner join grupos g on p.grupo = g.id_grupo where pl.data_fim >= CURRENT_DATE order by pl.id_lista desc, f.nome, f.razaosocial, p.nome "; $sql2=mysql_query($sql); if(mysql_num_rows($sql2)==0) { echo "<table border=1 width=800 align=center> <tr><td colspan=11 align=center><h3>Ainda não há produtos cadastrados</h3></td></tr> </table>"; } echo "<table border=1 width=800 align=center> <tr><td colspan=11 align=center><h3>Produtos</h3></td></tr> <tr> <td align=center>Lista</td> <td align=center>Foto</td> <td align=center>Produto</td> <td align=center>Fornecedor</td> <td align=center>Grupo</td> <td align=center>Descrição</td> <td align=center>Qtde. caixa</td> <td align=center>Preço</td> <td align=center>Quantidade</td> <td align=center>Sub Total</td> <td align=center>Adicionar</td> </tr> "; while(list($id_lista, $foto, $id_produto, $nome_produto, $nome_fornece, $razao_fornece, $nome_grupo, $quantidadecaixa, $preco) = mysql_fetch_row($sql2)){ include("../global/funcoes_php/foto_ver.php"); $icone = "<img border=0 src='../img/saiba_mais.png' alt='Saiba Mais'>"; echo "<tr> <td align=center>$id_lista</td> <td align=center>$foto2</td> <td align=let>$nome_produto</td> <td align=let>$nome_fornece$razao_fornece</td> <td align=let>$nome_grupo</td> <td align=\"center\" valign=\"middle\"> <form action='?acao=saibamais' method=\"post\"> <input type=\"hidden\" name=\"id_prod\" value=\"$id_produto\"> <input type=\"hidden\" name=\"id_lista\" value=\"$id_lista\"> <input type=\"submit\" alt=\"Saiba Mais\" style=\"background-image:url(../img/saiba_mais.png);width=72;height=28\" value=\"\"> </form> </td> <td align=center>$quantidadecaixa</td> <td align=right>R$ $preco</td> <td align=right> <input type=text id=quant[$id_produto] value=1 size=2 style=\"text-align: center;\" onKeyPress=\"BloqueiaLetras();\" onchange=\"calculo(this.value, $preco,'quant[$id_produto]','quan[$id_produto]','label_preco[$id_produto]');\" > </td> <td align=right>R$ <label id=\"label_preco[$id_produto]\">$preco</label></td> <td align=center valign=\"middle\"> <form action='carrinho.php?op=adicionar' method=\"post\" name=\"form_add[$id_produto]\"> <input type=\"hidden\" name=\"id_prod\" value=\"$id_produto\"> <input type=\"hidden\" name=\"quan[$id_produto]\" id=\"quan[$id_produto]\" value=\"1\"> <input type=\"hidden\" name=\"id_lista\" value=\"$id_lista\"> <input type=\"button\" value=\"Adicionar\" onclick=\"validaprodutoenviado('quant[$id_produto]','form_add[$id_produto]');\"> </form> </td> </tr>"; } echo " <tr> <td align=center valign=\"middle\" colspan=11 height=50> <input type=\"submit\" value=\"Enviar todos os ítens\"> </form> </td> </tr> "; echo "</table>"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Carcleo 4 Denunciar post Postado Junho 16, 2011 Será que não haverá saida? Se não. Como eu poderia então, treoar estes dois forms por dois hrefs? E como vou, nestes hrefs, passar como parametro, o valor de um outro campo do formulario? Compartilhar este post Link para o post Compartilhar em outros sites