Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Carcleo

Enviar todos os produtos que foram marcados?

Recommended Posts

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

<!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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.