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

Enviar vairos itens com suas quantidades inseridas de uma vez ao carri


marcosfj1

Pergunta

Olá galera eu evolui o sistema de enviar varios itens de uma vez para o carrinho de compra....agora eu posso colocar a quantidade q eu quero q seja inserida de cada item, mas não esta dando muito certo....ele não esta mandando a quantidade

Vou postar meu codigo, já esta bem comentado, para vocês verem se deixei passar algo

Primeiro a forma como eu envio, campos de input:

<input name="id_produto[]" id="id_produto[]" type="checkbox" value="<?=$cp['id_produto'] ?>" /> Compra Rápida
<input name="qt_produto[]" id="qt_produto[]" size ="2" maxlength="2" type="text" style="width:17px;font-size: 13px" /> Qtde
Ai apos clicar no botao enviar eu faço:
//VERIFICO SE CLICOU NO BOTAO COMPRAR
            if (isset($_POST['carrinho_adicionar_varios'])) {

            //FAÇO UM FOR PARA PEGAR TODOS OS IDs
                for ($i=0; $i<sizeof($_POST['id_produto']); $i++) {
                    
                    //VERIFICO SE FOI MARCADO ALGUM PRODUTO PELO SEU ID
                        if ($_POST['id_produto'][$i]) {
                        
                        //FAÇO UM SELECT NA TABELA CARRINHO PARA VER SE O PRODUTO JÁ SE ENCONTRA LA
                        $sql = "SELECT C.*, P.qt_limite_venda, P.vl_peso
                                FROM carrinho C
                                INNER JOIN produto P ON P.id_produto = C.id_produto
                                WHERE C.id_cliente = {$_SESSION['cliente']['id_cliente']}
                                AND C.id_produto = {$_POST['id_produto'][$i]}";    
                        $req = mysql_query($sql);
                        $cp = mysql_fetch_array($req);
                            
                        //SE O PRODUTO JÁ SE ENCONTRAR NA TABELA CARRINHO, AUMENTO APENAS A QUANTIDADE DELE
                            if($cp['id_produto'] == $_POST['id_produto'][$i]){
                                //SE TIVER SETADO A QUANTIDADE
                                if ($_POST['qt_produto'][$j]){
                                    //QUANTIDADE QUE ESTA NO CARRINHO + A QUANTIDADE QUE EU DIGITEI                                
                                    $qt_produto = $cp['qt_produto'] + $_POST['qt_produto'][$j];    
                                }else{
                                    //SENAO DIGITEI NADA APENAS SOMO 1 A QUANTIDADE JÁ EXISTENTE NO CARRINHO
                                    $qt_produto = $cp['qt_produto'] + 1;
                                }
                                //AQUI REALIZO O UPDATE DA TABELA, JÁ QUE ENCONTREI O PRODUTO
                                $sql = "UPDATE carrinho SET qt_produto = {$qt_produto}
                                        WHERE id_produto = {$cp['id_produto']}
                                        AND id_cliente = {$cp['id_cliente']}";
                                mysql_query($sql);
                        //CASO não TENHA ENCOTRADO O PRODUTO, OU SEJA ELE não FOI INSERIDO ANTERIORMENTE
                            }else{
                                //SE TIVER SETADO A QUANTIDADE
                                if ($_POST['qt_produto'][$j]){
                                    //ADICIONO A QUANTIDADE QUE EU DIGITEI
                                    $qt_produto = $_POST['qt_produto'][$j];
                                }else{
                                    //SENAO DIGITEI NADA NA QUANTIDADE APENAS ADICIONO 1
                                    $qt_produto = 1;
                                }
                                $chave_produto = md5(uniqid(rand(), true));
                            //COMO O PRODUTO É NOVO NA TABELA EU FAÇO A INSERÇÃO DELE
                            $sql = "INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto)
                                    VALUES (now(), {$_SESSION['cliente']['id_cliente']}, {$_POST['id_produto'][$i]}, '$qt_produto', '$chave_produto')";
                            mysql_query($sql) or die(mysql_error());
                            }
                        }
                    
                }
                
    
            }

Bom o problema na verdade é que ele não esta mandando a quantidade....eu vou coloco 4 no campo input de quantidade e clico em enviar e ele apenas adiciona 1....não estou conseguindo pegar o valor que é mandado por $_POST['qt_produto'][$j].

alguém sabe me ajudar?

Valeu

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Calma irmãozinho, você envia sua dúvida 12:30 e que ela respondida em 2 horas? Então paga! xD

De onde vem a variavel $j? não vi em parte alguma ela ser declarada.

Hahhaah....cara faz 2 dias q to nessa luta haha....já to q nem doido pra resolveu isso logo...não guento mais ver este codigo e não conseguir resolver

Mas então uma parte eu já consegui, troquei o $j por $i....afinal eu já tinha um FOR não precisava de outro....agora surgiu outro problema

Se eu tenho no meu carrinho 4 produtos, ai eu volto a pagina inicial e seleciono este 4 e coloco na quantidade 10, beleza ele insere no carrinho mais 10 na quantidade de cada item....mas se dos 4 produtos que estao já no carrinho, eu seleciono novamente apenas 2 desses e coloco a quantidade 10 ele adiciona apenas um....mas não sei porque?

Alguma ideia do q pode ser?

Eu acredito que o problema esteja nesse IF

if($cp['id_produto'] == $_POST['id_produto'][$i]){
                                //SE TIVER SETADO A QUANTIDADE
                                
                                    if ($_POST['qt_produto'][$i]){
                                        //QUANTIDADE QUE ESTA NO CARRINHO + A QUANTIDADE QUE EU DIGITEI                                
                                        $qt_produto = $cp['qt_produto'] + $_POST['qt_produto'][$i];    
                                    }else{
                                        //SENAO DIGITEI NADA APENAS SOMO 1 A QUANTIDADE JÁ EXISTENTE NO CARRINHO
                                        $qt_produto = $cp['qt_produto'] + 1;
                                    }
                                    //AQUI REALIZO O UPDATE DA TABELA, JÁ QUE ENCONTREI O PRODUTO
                                    $sql = "UPDATE carrinho SET qt_produto = {$qt_produto}
                                            WHERE id_produto = {$cp['id_produto']}
                                            AND id_cliente = {$cp['id_cliente']}";
                                    mysql_query($sql);
                                
                        //CASO não TENHA ENCOTRADO O PRODUTO, OU SEJA ELE não FOI INSERIDO ANTERIORMENTE
                            }

Pois foi encontrado que existe um produto já na tabela carrinho igual ao q vai ser add, mas na hora de verificar se todos tem qt_produto setado ele ve q não ai sai do If e insere apenas 1

Link para o comentário
Compartilhar em outros sites

  • 0

Vou explicar detalhadamente meu problema, eu acho q deve ta faltando pouca coisa, mas ou to quebrando a cabeça e não consigo ver, talvez alguém mais experiente ou q esteja com a cabeça limpa consiga me dizer o q esta faltando ou ao menos me dar um visao diferente do problema...vamos la:

Meu carrinho tava vazio, ai eu selecionei 4 itens diferentes e coloquei quantidades diferentes e cliquei em comprar, então beleza vou no carrinho e esta la os 4 itens com as quantidades que eu determei.

Ai beleza voltei na lista de produtos...fui la e selecionei o primeiro produto que esta no carrinho (o numero 1) e adicionei mais 5 na quantidade dele, beleza ele adiciona os 5 que eu determinei

MAS...

- Se eu seleciono algum dos outros produtos (numero 2, 3, 4) e tento adicionar uma quantidade ele não faz, adiciona apenas 1

- Se eu busco um outro produto ou seja um quinto produto e tento adicionar ele com 5 de quantidade e clico em adicionar, ele adiciona apenas 1

Parece que ele simplesmente não faz mais as buscas do vetor quantidade

Vou colocar meu codigo inteiro:

Campos inputs:

<span class="compra"> 
        <input name="id_produto[]" id="id_produto[]" type="checkbox" value="<?=$cp['id_produto'] ?>" /> Compra Rápida 
        <input name="qt_produto[]" id="qt_produto[]" size ="2" maxlength="2" type="text" style="width:17px;font-size: 13px" value="1"/> Qtde 
</span>
Botao comprar e campos hidden:
<input type="image" name="carrinho_adicionar_varios" id="carrinho_adicionar_varios" onClick="conf()" value="carrinho_adicionar_varios"  src="imagem/bt_comprar.gif" alt="Adicionar Itens Selecionados" /> 
<input type="hidden" name="carrinho_adicionar_varios" id="carrinho_adicionar_varios" value="<?php  $_POST['id_produto'] ?>"/> 
<input type="hidden" name="carrinho_adicionar_varios" id="carrinho_adicionar_varios" value="<?php  $_POST['qt_produto'] ?>"/>
E a ultima parte:
if (isset($_POST['carrinho_adicionar_varios'])) { 
                         
                        //FAÇO UM FOR PARA PEGAR TODOS OS IDs 
                                for ($i=0; $i<sizeof($_POST['id_produto']); $i++) { 
                                 
                                        //VERIFICO SE FOI MARCADO ALGUM PRODUTO PELO SEU ID 
                                                if ($_POST['id_produto'][$i]) { 
                                                 
                                                //FAÇO UM SELECT NA TABELA CARRINHO PARA VER SE O PRODUTO JÁ SE ENCONTRA LA 
                                                $sql = "SELECT C.*, P.qt_limite_venda, P.vl_peso 
                                                                FROM carrinho C 
                                                                INNER JOIN produto P ON P.id_produto = C.id_produto 
                                                                WHERE C.id_cliente = {$_SESSION['cliente']['id_cliente']} 
                                                                AND C.id_produto = {$_POST['id_produto'][$i]}";  
                                                $req = mysql_query($sql); 
                                                $cp = mysql_fetch_array($req); 
                                                 
                                                $qt_produto = $cp['qt_produto'] + $_POST['qt_produto'][$i];      
                                                echo $_POST['qt_produto'][$i].'<br>'; 
                                                echo $qt_produto.'<br>'; 
                                                //SE O PRODUTO JÁ SE ENCONTRAR NA TABELA CARRINHO, AUMENTO APENAS A QUANTIDADE DELE 
                                                                if($cp['id_produto'] == $_POST['id_produto'][$i]){                                               
                                                                        $sql = "UPDATE carrinho SET qt_produto = {$qt_produto} 
                                                                                        WHERE id_produto = {$cp['id_produto']} 
                                                                                        AND id_cliente = {$cp['id_cliente']}"; 
                                                                        //mysql_query($sql) or die(mysql_error()); 
                                                                         
                                                                }else{ 
                                                                        $chave_produto = md5(uniqid(rand(), true)); 
                                                                        $sql = "INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto)  
                                                                                        VALUES (now(), '".$_SESSION['cliente']['id_cliente']."', '".$_POST['id_produto'][$i]."', '".$qt_produto."', '".$chave_produto."'"; 

                                                                         
                                                                        //mysql_query($sql) or die(mysql_error()); 
                                                                } 
                                                } 
                                } 
                        }

Pronto...acho q consegui explicar certinho o que esta acontecendo...senao me fala q tento melhorar

Falou

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

  • 0

Bom vejo q teve mtas visitas mas nenhuma resposta hehe, acho q ou minha duvida deve ser bem dificil ou como meu tópico é grande ta dando preguiça no pessoal de ler hehe....Mas agora eu vim aqui colocar uns testes que fiz pra quem sabe alguém possa me falar o porque disso

Fiz um var_jump() de tudo q estou enviando, e dei um echo onde insere e atualiza os produtos, ai veio o detalhe

Eu selecionei um produto e coloquei la a quantidade 99, ou seja deveria ser inserido 99 no item correspondendo, mas ele mostra q só ira inserir 1 olhem:

Array POST id produtos

array(1) {

[0]=>

string(4) "6575"

}

Array POST quantidade produtos

array(28) { [0]=> string(1) "1" [1]=> string(2) "99" [2]=> string(1) "1" [3]=> string(1) "1" [4]=> string(1) "1" [5]=> string(1) "1" [6]=> string(1) "1" [7]=> string(1) "1" [8]=> string(1) "1" [9]=> string(1) "1" [10]=> string(1) "1" [11]=> string(1) "1" [12]=> string(1) "1" [13]=> string(1) "1" [14]=> string(1) "1" [15]=> string(1) "1" [16]=> string(1) "1" [17]=> string(1) "1" [18]=> string(1) "1" [19]=> string(1) "1" [20]=> string(1) "1" [21]=> string(1) "1" [22]=> string(1) "1" [23]=> string(1) "1" [24]=> string(1) "1" [25]=> string(1) "1" [26]=> string(1) "1" [27]=> string(1) "1" }

Já existe

Atualizar item ID: 6575

Nova quantidade: 1

Ele mostra o ID certo do produto, e no array de POST quantidade ele mostra la em string(2) "99" que ele pegou a quantidade q mandei, mas na hora de inserir só vem 1

não entendo o porque disso :(

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,3k
    • Posts
      652,2k
×
×
  • Criar Novo...