Ir para conteúdo

Arquivado

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

rpmarques

botão alterar QTDE em carrinho de compras

Recommended Posts

Bom dia pessoal, este é meu primeiro post aqui, pode até ser uma coisa banal, mas não consegui achar a solução:

É o seguinte, estou me aventurando em montar uma loja virtual na empresa que faço estágio, até ai tudo bem, já tenho a área administrativa do site toda OK, só esta faltando o carrinho de compra, o resto já esta tudo ok.

Bom a minha dúvida a seguinte, eu tenho um carrinho, já faço a inclusão dele, a exclusão, estou empacado na alteração das qtde dos produtos, eu tenho uma coluna num <table> com os botões alterar e excluir, eles são links, o excluir esta ok, passo o id do produto por get e ta, já esta 100%, agora o alterar eu tenho uma situação em que tenho um campo text para o usuário digitar a qtde nova, e como eu faço pra passar esta nova qtde por get?

 

segue o código da minha <table>:

<table class="table table-bordered table-condensed table-striped">
   <thead>
      <tr>
        <th>Nro Item</th>
        <th>Produto</th>
        <th>Qtde</th>
        <th>Ação</th>
     </tr>
   </thead>
   <tbody>
      <tr>
         <td>1</td>
         <td><input type="hidden" name="produto_id[]" value="326">Hot Hit Barbecue - Código 10243</td>
         <td><input type="text" value="11" name="qtde[]" id="qtde"></td>
         <td>
            <a class="btn btn-primary btn-xs" href="carrinho.php?alterar=MzI2?qtde="><i class="fa fa-edit"></i> Atualizar </a>
            <a class="btn btn-danger btn-xs" name="excluir" href="carrinho.php?excluir=MzI2"><i class="fa fa-edit"></i> Excluir </a>
         </td>
      </tr>
      <tr>
         <td>2</td>
         <td><input type="hidden" name="produto_id[]" value="327">Lasanha Bolonhesa - Código 10138</td>
         <td><input type="text" value="22" name="qtde[]" id="qtde"></td>
         <td>
            <a class="btn btn-primary btn-xs" href="carrinho.php?alterar=MzI3?qtde="><i class="fa fa-edit"></i> Atualizar </a>
            <a class="btn btn-danger btn-xs" name="excluir" href="carrinho.php?excluir=MzI3"><i class="fa fa-edit"></i> Excluir </a>
         </td>
      </tr>              
    </tbody>
</table>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro que isto nunca vai funcionar:

carrinho.php?alterar=MzI3?qtde=

Os vários elementos da querystring você une com &

carrinho.php?alterar=MzI3&qtde=

Se você deseja passar isto por get, use uma função JS para montar o link e redirecionar:

<table class="table table-bordered table-condensed table-striped">
<thead>
<tr>
<th>Nro Item</th>
<th>Produto</th>
<th>Qtde</th>
<th>Ação</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td><input type="hidden" name="produto_id[]" value="326">Hot Hit Barbecue - Código 10243</td>
<td><input type="text" value="11" name="qtde[]" id="qtde_326"></td>
<td>
<a class="btn btn-primary btn-xs" href="javascript:;" onclick="qtde('MzI2', 326)"><i class="fa fa-edit"></i> Atualizar </a>
<a class="btn btn-danger btn-xs" name="excluir" href="carrinho.php?excluir=MzI2"><i class="fa fa-edit"></i> Excluir </a>
</td>
</tr>
<tr>
<td>2</td>
<td><input type="hidden" name="produto_id[]" value="327">Lasanha Bolonhesa - Código 10138</td>
<td><input type="text" value="22" name="qtde[]" id="qtde_327"></td>
<td>
<a class="btn btn-primary btn-xs" href="javascript:;" onclick="qtde('MzI3', 327)"><i class="fa fa-edit"></i> Atualizar </a>
<a class="btn btn-danger btn-xs" name="excluir" href="carrinho.php?excluir=MzI3"><i class="fa fa-edit"></i> Excluir </a>
</td>
</tr> 
</tbody>
</table>
<script>
function qtde(id, id2){
window.location.href = 'carrinho.php?excluir='+id+'&qtde='+$('#qtde_'+id2).val();
}
</script>

No caso assumi que você também usará jQuery...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela resposta, Edgar, esta função qtde vai pegar o que o usuário digitar no campo?

Não deveria ter um getElementById ali pra ele pegar o conteúdo do input text também?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpem a demora por responder, mas estive ocupado com outros problemas, mas então, vamos ao que interessa, na função eu teria que passar duas vezes as id? Mas porque isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples, um dos ids estão em base 64 e o outro não, se você perder 5 segundos e ler o script verá que eu nomeei todos os campos como id="qtde_XXX" onde XXX é o número do ID, nesse caso ele vai sem o base 64, mas no seu script você está trabalhando com esta codificaçao na hora das ações, se não quiser passar duas vezes, basta alterar ao seu gosto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ESerra, obrigado por responder, fiz as alterações para que só passe um ID do produto e não funcionou, vou postar o código para tu ver como esta.

<form role="form" action="finalizaCarrinho.php" method="post" >
    <div class="section">
      <div class="container">
        <div class="row">
          <div class="col-md-1"></div>
          <div class="col-md-10">
            <table class="table table-bordered table-condensed table-striped">
              <thead>
                <tr>
                  <th>Nro Item</th>
                  <th>Produto</th>
                  <th>Qtde</th>
                  <th>Ação</th>
                </tr>
              </thead>
              <tbody>
                <tr>
           <td>1</td>
           <td><input type="hidden" name="produto_id[]" value="326">Hot Hit Barbecue</td>
           <td><input type="text" value="111" name="qtde[326]" id="qtde"></td>
           <td>
                <a class="btn btn-primary btn-xs" name="qtde" href="javascript:;" onclick="qtde(MzI2)"><i class="fa fa-edit"></i> Atualizar </a>
                <a class="btn btn-danger btn-xs" name="excluir" href="carrinho.php?excluir=MzI2"><i class="fa fa-edit"></i> Excluir </a>
            </td>
         </tr><tr>
           <td>2</td>
           <td><input type="hidden" name="produto_id[]" value="327">Lasanha Bolonhesa</td>
           <td><input type="text" value="222" name="qtde[327]" id="qtde"></td>
           <td>
                <a class="btn btn-primary btn-xs" name="qtde" href="javascript:;" onclick="qtde(MzI3)"><i class="fa fa-edit"></i> Atualizar </a>
                <a class="btn btn-danger btn-xs" name="excluir" href="carrinho.php?excluir=MzI3"><i class="fa fa-edit"></i> Excluir </a>
            </td>
         </tr>              </tbody>
            </table>
            <script>
                function qtde(id){
                    window.location.href = 'carrinho.php?alterar='+id+'&qtde='+$('#qtde_'+id).val();
                }
            </script>
          </div>
          <div class="col-md-1"></div>
        </div>
          <div class="row text-right">
            <div class="col-md-12">
                <a  href="carrinho.php?atualiza" class="btn btn-primary" name="atualiza">Atualizar carrinho</a>
                  <input type="submit" value="Finalizar Pedido" class="btn btn-primary">
                  <a  href="vitrine.php" class="btn btn-primary">Continuar comprando</a>
            </div>
        </div>
      </div>
    </div>
</form>

dai inspecionando o elemento, ele me retorna:"Uncaught ReferenceError: MzI2 is not defined"

 

pelo que eu puder ver, geralmente este erro é pq falta fechar algum () ou {}, mas esta tudo fechado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Erro crasso:

...se você perder 5 segundos e ler o script verá que eu nomeei todos os campos como id="qtde_XXX" onde XXX é o número do ID...

 

Exemplo que passei no post #3:

<input type="text" value="11" name="qtde[]" id="qtde_326">

Seu HTML:

<input type="text" value="111" name="qtde[326]" id="qtde">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo com a alteração para:

<a class="btn btn-primary btn-xs" id="qtde_MzI2" name="qtde[]" href="javascript:;" onclick="qtde(MzI2)"><i class="fa fa-edit"></i> Atualizar </a>

segue dando o erro...

 

 

:wacko: :wacko: :wacko:

 

pode ser pq neste campo estou usando o priceformat para permitir somente números?

na minha ignorância, não deve ser né?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Forma simples de se resolver...

<input value="1" name="qtde" onchange="atualizarQtde($(this).val(), '327');" />

<script>
	function atualizarQtde(val, id) {
	    alert(val+ id );
		window.location.href = 'carrinho.php?id='+id+'&qtde='+val;
	}
</script>

 

Dessa forma você não precisa de um botão atualizar, pois o ONCHANGE vai fazer isso para você todas as vezes que você alterar o campo.

Espero ajudar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

S

 

Mesmo com a alteração para:

<a class="btn btn-primary btn-xs" id="qtde_MzI2" name="qtde[]" href="javascript:;" onclick="qtde(MzI2)"><i class="fa fa-edit"></i> Atualizar </a>

segue dando o erro...

 

 

:wacko: :wacko: :wacko:

 

pode ser pq neste campo estou usando o priceformat para permitir somente números?

na minha ignorância, não deve ser né?

 

Se você está passando uma string, utilize aspas:

qtde('MzI2')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora o detalhe é que ele não esta postando na url o valor digitado,

ele traz a url da seguinte forma

http://localhost/sitenovo/carrinho.php?alterar=MzI2&qtde=

lembrando que a função eu alterei ela para o seguinte código:

function qtde(id){
   window.location.href = 'carrinho.php?alterar='+id+'&qtde='+$('#qtde_'+id).val();
}

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.