Ir para conteúdo

POWERED BY:

Arquivado

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

marcosfj1

Inserir varios itens ao carrinho de uma vez

Recommended Posts

Troquei e nao mudou nada....isso da abreviação nao faz diferença meu sistema inteiro ta assim

 

Eu acho q o q ta pegando é q ele nao consegue fazer o foreach pois nao tem um POST...se eu coloco um alert(JS) apos o foreach ele nao faz pq nao consegue validar o foreach

 

Tenho q de alguma forma mandar aquilo q eu seleciono atraves do POST ai sim ele vai ter algo

 

Tem ctz que aquilo que vai em VALUE, nao importa?

 

<input name="id_produto[]" id="id_produto[]" type="checkbox" value="<?=$cp['id_produto'] ?>" />

 

Valeu

 

=============================================================================

COMO ESTA MEU CODIGO

=============================================================================

 

Envio do checkbox:

<input name="id_produto[]" id="id_produto[]" type="checkbox" value="<?=$cp['id_produto'] ?>" />

 

Formulario que envia o q selecionei(talvez esteja aqui o problema):

<form id="form1" name="form1" method="post" action="">
    	<input type="image" name="carrinho_adicionar_varios" id="carrinho_adicionar_varios" 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="<?=$cp['id_produto'] ?>"/>
    </form>

 

Onde trato os produtos escolhidos (exatamente o que você me passou):

if (isset($_POST['carrinho_adicionar_varios'])) {
			$chave_produto = md5(uniqid(rand(), true)); 

			$values = Array(); 

			foreach($_POST['id_produto'] AS $item ) { 
				if( !empty( $item ) ) 
				  $values[] = "(now(), '{".$_SESSION['cliente']['id_cliente']."}', '{".$_POST['id_produto']."}', 1, '{".$chave_produto."}')"; 
				} 
			 $sql = "INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto) VALUES ".implode( ', ', $values ); 
			   mysql_query($sql); 
			 echo $sql; 

 

Pronto é isso que tenho de código, e este é o erro que esta dando:

Warning: Invalid argument supplied for foreach() in /blabla.php on line 234

INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto) VALUES

 

E isso :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei isso

print_r($_POST['id_produto']);

foreach($_POST['id_produto'] AS $item ) {

 

Apareceu isso na tela apos selecionar os checkbox e clicar em comprar

 

Warning: Invalid argument supplied for foreach() in /blabla.php on line 234

INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto) VALUES

 

Cara vou ter q sair do forum agora.....mto obrigado por tentar me ajudar, pena q por enquanto nao deu certo

 

Amanha tentamos mais

 

Valeu, por toda ajuda

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara , se o print_r não ta retornando nada e porque com certeza tem algo errado com seu formulario ..

você mudou as tags ?

 

Entao cara é isso q eu acho desde o comeco, o formulario nao deve estar enviando as informaçoes, ai claro o foreach nao funciona.

 

Vou postar novamente o meu formulario:

<form id="form1" name="form1" method="post" action="">
    	<input type="image" name="carrinho_adicionar_varios" id="carrinho_adicionar_varios" 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="<?=$_POST['id_produto'] ?>"/>
</form>

 

Se mais alguem quiser tentar ajudar é bem vindo hehe

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara , você ate agora não mudou as tags como eu falei ..

 

 

Cara mudei as tags como você sugeriu, e fiz o teste deu a mesma coisa....as tags estao habilitadas para funcionar inclusive em todo meu sistema eu uso elas...eu nao tinha custume de usar elas, mas como peguei o sistema de um outro programador eu mantive o padrao dele

 

Mas em todo caso eu mudei elas:

<form id="form1" name="form1" method="post" action="">
    	<input type="image" name="carrinho_adicionar_varios" id="carrinho_adicionar_varios" 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'] ?>"/>
    </form>

 

E continua a dar o mesmo erro:

Warning: Invalid argument supplied for foreach() in /blabla.php on line 234

INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto) VALUES

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara , e muito estranho .. uma questão

 

$_POST['id_produto']

 

não seria um resultado vindo do banco ? ou você bota o ID ali ?

 

Entao cara no comeco das minhas duvidas eu jogava la no formulario onde agora está o $_POST['id_produto'] eu colocava um <?=$cp['id_produto'] ?>, nesta variavel eu trazia do banco o ID do produto, mas como nao tava enviando troquei por POST

 

Será q se eu colocar POST tbm la no value do checkbox nao iria?

 

Abraco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao é o q ta pegando este $_POST['id_produto'] nao é enviado, ai claro nunca vai fazer o foreach....vou colocar o codigo todo hehe

 

Primeiro o CHECKBOX

<input name="id_produto[]" id="id_produto[]" type="checkbox" value="<?=$cp['id_produto'] ?>" />

 

Este cp['id_produto'] é vindo do banco contendo o ID do produto, eu já dei um echo nele para aparecer e apareceu normal todos os IDs entao tras do banco os dados

 

Agora o FORMULARIO de envio

<form id="form1" name="form1" method="post" action="">
    	<input type="image" name="carrinho_adicionar_varios" id="carrinho_adicionar_varios" 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'] ?>"/>
    </form>

 

E por ultimo onde eu TRATO os DADOS igual você me ensinou:

if (isset($_POST['carrinho_adicionar_varios'])) {
			$chave_produto = md5(uniqid(rand(), true)); 

			$values = Array(); 
			print_r($_POST['id_produto']);
			foreach($_POST['id_produto'] AS $item ) { 
				if( !empty( $item ) ) 
				  $values[] = "(now(), '{".$_SESSION['cliente']['id_cliente']."}', '{".$_POST['id_produto']."}', 1, '{".$chave_produto."}')"; 
				} 
			 $sql = "INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto) VALUES ".implode( ', ', $values ); 
			   mysql_query($sql); 
			 echo $sql; 

 

Repara que deixei até o print_r($_POST['id_produto']) mas continua sem aparecer nada

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara se eu for te mandar completo eu tenho q te enviar umas 30 paginas hehe

 

A conexao com o banco esta funcionado pois senao eu nao conseguiria obter o valor de $cp['id_produto']

Compartilhar este post


Link para o post
Compartilhar em outros sites

então , eu não to entendendo a forma que você ta fazendo isso

pra min seria assim

 

você cria a lista de todos produtos do site ..

e cada hidden com seu respectivo ID o cara seleciona todos produtos que ele quer .

e então envia pro carrinho , ai que entra o INSERT ..

mais você ta fazendo pegar o ID no POST , eu acho isso errado .

o certo seria você preencher o value do hidden com os dados vindos do banco e ai sim enviar o POST com os

campos marcados e seus valores .

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou tentar ser mais claro, sem mostrar todo o sistema como é construido:

 

Bom eu tenho uma pagina que chama produtos.php nela eu faço o seguinte eu busco na tabela produtos as informaçoes de cada produto que foi cadastrado, faço ela da seguinte forma:

 

Evidente que resumi a busca, mas para o que agente precisa é isso

$sql = "SELECT P.*,FROM produto P WHERE P.id_produto IS NOT NULL"; 
$req = mysql_query($sql) or die(mysql_error());

 

Ai eu faço um while para mostrar todas as informacoes que eu trago:

while ($cp = mysql_fetch_array($req)) {

 

Dentro desse while esta a geração do checkbox para que pra cada produto com seu ID tenha o seu checkbox

<input name="id_produto[]" id="id_produto[]" type="checkbox" value="<?=$cp['id_produto'] ?>" />

 

Repara que eu jogo o $cp['id_produto'] dentro do value do CHECKBOX para tentar colocar o ID do produto la

 

Ai faço no final da listagem de produtos, o formulario:

 

<form id="form1" name="form1" method="post" action="">
    	<input type="image" name="carrinho_adicionar_varios" id="carrinho_adicionar_varios" 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'] ?>"/>
    </form>

 

Bom é isso....ai depois já é o codigo que você me passou

 

Falou

 

============================================================

 

Puts cara acho q DESCOBRI o problema hahaha....dá vontade de socar a cara haha

 

Olha só que ridiculo: como eu posso mandar o que esta no input sendo q ele nao esta dentro das tags <form>?

 

hahaha

 

ai coloquei ele dentro da tag e olha o q mostrou:

 

Array ( [0] => 6446 [1] => 6444 ) INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto) VALUES (now(), '{5}', '{Array}', 1, '{0484340bd496cb9ebdf834a1163271d0}'), (now(), '{5}', '{Array}', 1, '{0484340bd496cb9ebdf834a1163271d0}') 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao cara foi o q eu fiz agora hehe....que descobri q o problema tava q o checkbox tava fora do formulario hehe

 

mas agora preciso da sua ajuda que finalmente mostrou o resultado que você queria...selecionei 2 produtos pelo checkbox e apareceu:

 

Array ( [0] => 6446 [1] => 6444 ) INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto) VALUES (now(), '{5}', '{Array}', 1, '{e3c4db8c3dec34b6ec3f2928ce980700}'), (now(), '{5}', '{Array}', 1, '{e3c4db8c3dec34b6ec3f2928ce980700}')

Compartilhar este post


Link para o post
Compartilhar em outros sites

então , ta vendo .. os outros que ele não selecionou ele não joga pro array ..

o insert ta com erro .. , remove as {}

 

sabe o

 

$values[]

 

você tem que editar ali , pra poder pegar oque você quer ...

 

deixa o values assim .

 

$values[] = "(now(), '".$_SESSION['cliente']['id_cliente']."', '".$_POST['id_produto']."', 1, '".$chave_produto."')";

e manda gravar no banco pra ve se vai botar 2 linhas no bd la ..

 

qual realmente a duvida agora ?

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.