Ir para conteúdo
Fórum Script Brasil
  • 0

Paginar sem perder os dados do input


Carlos Rocha

Pergunta

Pessoal.

Tenho uma lista de produtos paginada.

Em cada linha que exibe os produtos, tem lá um input para que o usuario possa digitar a quantidade daquele produto que ele quer.

Esse form paginado, pemite ao usuario, navegar entre as paginas e depois, clikar no botão submit e enviar os dados dos produtos que tiveram suas quantidades alteradas do padrão 0 para qualquer valor.

O problema é que, estando na primeira pagina e o usuario altera o produto 1, por exemplo de 0 para 5 unidades, dai ele troca de pagina e altera naquela a quantidade de um outro produto. Quando o usuario volta na pagina 1, ele perde quantidade que ele digitou no produto que ele escolheu na pagina 1.

Como faço para guardar isso?

Tentei com sesões mas não tive sorte.

<?
     if ($acao== "mostra_produtos"){
     $sql = mysql_query("
              select 
               pl.id_lista,
                p.foto, 
               pl.id_produto,
                  p.nome,  
               f.nome, 
               f.razaosocial, 
               g.nome,
               p.quantidadecaixa,
               p.preço
              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
              ");                 

      $total = mysql_num_rows($sql); // Esta função irá retornar o total de linhas na tabela
      $lpp = 2; // Especifique quantos resultados você quer por página
      $paginas = ceil($total / $lpp); // Retorna o total de páginas
      if(!isset($pagina)) { $pagina = 0; } // Especifica uma valor para variavel pagina caso a mesma não esteja setada
      $inicio = $pagina * $lpp; // Retorna qual será a primeira linha a ser mostrada no MySQL
     $sql = mysql_query("
              select 
               pl.id_lista,
                p.foto, 
               pl.id_produto,
                  p.nome,  
               f.nome, 
               f.razaosocial, 
               g.nome,
               p.quantidadecaixa,
               p.preço
              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
              LIMIT $inicio, $lpp
              ");        
         
       if ($total == "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 "<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>
                  <form action=\"carrinho.php?op=adicionar\" method=\"post\" name=\"envia_tudo\">
                  ";
             $i = 0;
             while(list($id_lista, $foto, $id_produto, $nome_produto, $nome_fornece, $razao_fornece, $nome_grupo, $quantidadecaixa, $preço) = mysql_fetch_row($sql)){
                 $quant{$i}[quant] = $_POST["{$i}[quant]"];
                  session_register("$quant{$i}[quant]");
             echo "<input type=\"hidden\" name=\"{$i}[id_prod]\"  id=\"{$i}[id_prod]\" value=\"$id_produto\">
                   <input type=\"hidden\" name=\"{$i}[quan]\" id=\"{$i}[quan]\" value=\"\">    
                   <input type=\"hidden\" name=\"{$i}[id_lista]\" value=\"$id_lista\">
                  ";
             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\">
                      <a href=\"?acao=saibamais&id_prod=$id_produto&&id_da_lista=$id_lista\">Saiba Mais</a>
                      </td>    
                      <td align=center>$quantidadecaixa</td>
                      <td align=right>R$ $preço</td>
                      <td align=right>
        <input type=text id={$i}[quant] value=\"".$quant{$i}[quant]."\" size=2 style=\"text-align: center;\" 
        onKeyPress=\"BloqueiaLetras();\" 
        onchange=\"calculo(this.value, $preço,'{$i}[quant]','{$i}[quan]','{$i}[label_preco]');\" >
                      </td>              
                      <td align=right>R$ <label id=\"{$i}[label_preco]\">0.00</label></td>              
                      <td align=center valign=\"middle\">
        <a href=\"#\" onclick=\"this.href=' carrinho.php?op=adicionar&id_produto=$id_produto&id_da_lista=$id_lista&quantidade='+document.getElementById('{$i}[quant]').value\" > 
        Enviar </a>             
                      </td>
                    </tr>";
                         $i++;    
                               }    
                if($pagina > 0) {
                   $menos = $pagina - 1;
                   $url = "$PHP_SELF?acao=mostra_produtos&pagina=$menos";
                   echo "<a href=".$url.">Anterior</a>"; // Vai para a página anterior
                }
                for($i=0;$i<$paginas;$i++) { // Gera um loop com o link para as páginas
                   $url = "$PHP_SELF?acao=mostra_produtos&pagina=$i";
                   echo " | <a href=".$url.">$i</a>";
                }
                if($pagina < ($paginas - 1)) {
                   $mais = $pagina + 1;
                   $url = "$PHP_SELF?acao=mostra_produtos&pagina=$mais";
                   echo " | <a href=".$url.">Próxima</a>";
                }
                 
                echo "
                 <tr>
                     <td align=center valign=\"middle\" colspan=11 height=50>
                     
                       <input type=\"submit\" value=\"Enviar todos os ítens\">
                      </form>
                     </td>
                 </tr> ";
        echo "</table>";     
               }
               }
     ?>

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Pessoal.

Estive pensando o seguinte:

Se, a cada laço do while, o input ganha um novo id (claro, é um input para cada produto né?), então, o que ei preciso é criar uma array bidirecional carregando, o nome do input e o seu valor e guardar esse array em uma sessão e depois recuperar esses dasdos, entregando os valores do array aos valores dos inputs conforme os índices do array.

Como eu faria isso?

Aqui vai meu while

$i = 0;
             while(list($id_lista, $foto, $id_produto, $nome_produto, $nome_fornece, $razao_fornece, $nome_grupo, $quantidadecaixa, $preço) = mysql_fetch_row($sql)){
             echo "<input type=\"hidden\" name=\"{$i}[id_prod]\"  id=\"{$i}[id_prod]\" value=\"$id_produto\">
                   <input type=\"hidden\" name=\"{$i}[quan]\" id=\"{$i}[quan]\" value=\"\">    
                   <input type=\"hidden\" name=\"{$i}[id_lista]\" value=\"$id_lista\">
                  ";
             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\">
                      <a href=\"?acao=saibamais&id_prod=$id_produto&&id_da_lista=$id_lista\">Saiba Mais</a>
                      </td>    
                      <td align=center>$quantidadecaixa</td>
                      <td align=right>R$ $preço</td>
                      <td align=right>
        <input type=text id={$i}[quant] value=0 size=2 style=\"text-align: center;\" 
        onKeyPress=\"BloqueiaLetras();\" 
        onchange=\"calculo(this.value, $preço,'{$i}[quant]','{$i}[quan]','{$i}[label_preco]');\" >
                      </td>              
                      <td align=right>R$ <label id=\"{$i}[label_preco]\">0.00</label></td>              
                      <td align=center valign=\"middle\">
        <a href=\"#\" onclick=\"this.href=' carrinho.php?op=adicionar&id_produto=$id_produto&id_da_lista=$id_lista&quantidade='+document.getElementById('{$i}[quant]').value\" > 
        Enviar </a>             
                      </td>
                    </tr>";
                         $i++;    
                               }

Link para o comentário
Compartilhar em outros sites

  • 0

Boa tarde, fiz um exemplo básico com uma input tipo texto que não perde seu valor quando a form é submetida.

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title></title>
    </head>
    <body>
        <form action="" method="get">
            <input type="text" value="<?php echo $_GET['texto']; ?>" name="texto"/>
            <input type="submit" value="envia"/>
        </form>        
    </body>
</html>

Toda vez que você clica no enviar o php ecoa no value da input o texto digitado.

Observe que na url ele joga o nome da input com o valor digitado ?texto=

Espero ter ajudado.

Editado por dinohills
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...