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

Bom pessoal, seguinte tenho uma listagem grande de produtos, ai o q acontece hj qdo um cara quer comprar algo ele precisa clicar no produto, ai abre a pagina de detalhe e clica em comprar e ai vai para a pagina do carrinho onde ele pode selecionar a quantidade de cada produto, ou excluir algum produto...Beleza esta funcionando tudo OK.

 

Mas quer dar velocidade as compras, da seguinte maneira:

Coloquei junto ao nome do produto um campo de CHECKBOX que contem o id do produto entao no final da listagem de porduto coloquei um botao COMPRAR ai o q eu quero é q qdo o usuario selecionar 5 produtos(por exemplo) e clicar em comprar este produtos sejam inseridos direto no carrinho dele e ao clicar ele deve ser enviado para a tela do carrinho.

 

Vou colocar o q eu fiz até agora:

 

pagina de produtos com checkbox

 <?  
//verifico se o cliente esta logado e coloco o checkbox na frente do produto
if ($_SESSION['cliente']['id_cliente']) { ?>
       <input name="id[]" id="id[]" type="checkbox" value="<?=$cp['id_produto'] ?>" /><?=$cp['id_produto'] ?>
       <?php } ?>

 

final da listagem de produtos

<form id="form1" name="form1" method="post" action="">
    	<input type="image" name="carrinho_adicionar_varios" id="carrinho_adicionar_varios" value="Adicionar ao Carrinho"  src="imagem/bt_comprar.gif" alt="Adicionar Itens Selecionados" />
    	<input type="hidden" name="id_produto" id="id_produto" value="<?=$cp['id_produto'] ?>"/>
    </form>

 

Bom ai o que pensei para add varios fazer:

 

if (isset($_POST['carrinho_adicionar'])
if ($_POST['id_produto']) {

			//
			$_POST['id_produto'] = addslashes($_POST['id_produto']);

			//
			$sql = "INSERT blablabla";	
			$req = mysql_query($sql);
}

 

Mas acho q assim nao funcionaria, e mesmo q funcionasse seria apenas para um produto

 

 

Alguem sabe me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você faz um for ou foreach .. e um implode ..

olha so

 

$values = Array();
foreach( $_POST['item'] AS $item )
{
if( !empty( $item ) )
$values[] = "(NULL, '{$item}')"; // aqui você monta o insert .. sendo que cada (valores) e uma linha
}
$sql = "INSERT INTO `table` ( `campo` ) VALUES ".implode( ', ', $values );

 

no caso de 3 items

a saida da query se você fazer certo seria

INSERT INTO `table` ( `campo` ) VALUES ('item'),('item'),('item')

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu colocaria isso depois do if ($_POST['id_produto']) {

 

E no caso nao preciso verificar se ta vazio? se entrou no POST é q nao esta vazio entao é só inserir certo?

 

Tenta esclarecer mais um pouco hehe....ta complicado aqui

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra isto serve o

if( !empty( $item ) )

 

sim você colocaria dentro das chaves do if .. debuga a query antes de executar , pra não ficar

enviando dados pro banco desnecesariamente ..

 

você vendo como a query tá , você vai entender .. e fazer ela do jeito que deseja ..

Compartilhar este post


Link para o post
Compartilhar em outros sites

pra isto serve o

if( !empty( $item ) )

 

 

Hehehe foi mal eu perguntei mas quis afirmar hehe

 

Eu nao precisoverificar se ta vazio pois já entrou no POST entao tem o id_produto q foi enviado

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehe vou tentar aqui

mas ainda to perdidinho no que tem q fazer haha....vou tentar adaptar seu codigo

 

valeu

 

Amigo seguinte fiz de uma certa maneira aqui, mas nao esta nem entrando no primeiro IF...dei um echo pra ver se entrava e nada

 


if (isset($_POST['carrinho_adicionar_varios'])) {
	$chave_produto = md5(uniqid(rand(), true));	
	echo 'entrou';
		//
		if ($_POST['id_produto']) {
			$values = Array(); 
			foreach($_POST['id_produto'] AS $item ) 
			{ 
			if( !empty( $item ) ) 
			$values[] = "(NULL, '{$item}')"; // aqui você monta o insert .. sendo que cada (valores) e uma linha 
			} 
			$sql = "INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto)
							VALUES (now(), {$_SESSION['cliente']['id_cliente']}, {$_POST['id_produto']}, 1, '$chave_produto')";
			mysql_query($sql) or die(mysql_error());
			echo $sql;



		}
}

 

Nem aparece o entrou

Compartilhar este post


Link para o post
Compartilhar em outros sites

hehe to te dando uma dor de cabeça né ehhe...bom vamos por parte, consegui fazer o ENTROU aparecer entao sinal q o botao esta enviando o carrinho_adicionar_varios

 

Bom o meu checkbox é este:

 

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

 

Entao no nome é id_produto[] e estou enviando em value o id_produto para saber quem produto deve ser inserido

 

Agora o q ta pegando é a parte que você me passou hehe, q ainda nao consegui entender hehe

 

Me explica de novo q como se viu meu codigo ta errado hehe

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

o nome você tem que colocar deve ser um array , o valor não importa ..

 

 

A ta beleza por isso falou q eu poderia tirar o if ($_POST['id_produto']) {

 

Bom mas entao tirei la e ficou:

 

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

 

Apareceu um erro de sql:

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

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' 1, 'e81c37112a1ceb4d200902741caefd80')' at line 2

 

Acredito q seja pq nao tem o id do produto....hehe como eu mando ele

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara você ta fazendo errado , olha o primeiro exemplo que eu te dei ..

 

$values[] = "deve ser os campos"

 

posta o script completo ai ..

 

Mals cara, o problema é q nao entendi seu primeiro codigo....vou postar td de novo q eu fiz, para ver se você consegue me ajudar a entender melhor

 

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

 

Aqui eu crio o botao checkbox, para o usuario selecionar os produtos que deseja enviar:

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

 

Aqui eu coloco o botao de comprar, para enviar os dados:

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

 

Bom ai finalmente eu tento inserir na tabela carrinho as informacoes como id_produto e o id_cliente que ta fazendo a compra, e depois quero redireciona-lo para a pagina do carrinho onde vai aparecer todos os itens que ele comprou

 

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

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


 

Realmente cara to peridinho hehe

 

Valeu, toda a ajuda q esta me dando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenta assim

 

<?php
 $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;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloquei como meu passou e agora o erro é no foreach()

 

Warning: Invalid argument supplied for foreach() in /blabla.php on line 232
INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto) VALUES 

Compartilhar este post


Link para o post
Compartilhar em outros sites

e porque os campso não são um array ..

 

 

Entao cara mas eu usei seu codigo, eu nao sei mas acho q nem ta entrando no foreach, pq nao tem o $_POST

 

Veja q no erro ele nao consegue pegar os VALUES que sao setados apos confirmar o $_POST

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha novamente o nome do meu campo

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

 

E sim eu marco o campo e clico em comprar

ai dá aquele erro

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.