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

Entao cara realmente deu certo inserir no banco, o que ta pegando agora é que insere no banco realmente apareceu la na minha tabela as slecoes q eu fiz....mas o id_produto nao é inserido, o session do cliente é inserido a chave tudo menos o id_produto

 

fiz assim:

 


foreach($_POST['id_produto'] AS $item ) { 
			$chave_produto = md5(uniqid(rand(), true)); 
				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) or die(mysql_error());
			 //echo $sql;

 

Detalhe a chave coloquei dentro do foreach pra gerar uma a cara item

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

e porque ao inves de

$_POST['id_produto']

, deve ser $item ^_^

eu coloquei de exemplo .. achei que você ia entender \:

 

 

HAHA

 

Puts cara besteira minha mesmo hehe...você pega o POST no foreach vira $item hehe

 

Deu certo cara, coloquei 3 itens de uma vez na tabela carrinho

 

Poxa cara você me ajudou demais mesmo, jamais teria feito sem você.......mto obrigado mesmo, foi quase 2 dias de luta e acho q finalmente deu certo

 

Valeu mesmo parceiro

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara tem um outro problema hehe

 

Eu agora vou mandar juntos com os itens a quantidade de compra de cada um deles....e nao esta dando certo hehe....como você esta já bem por dentro do topico e do que eu to querendo fazer talvez possa me ajudar

 

Seguinte to mandando a quantidade por um outro array, só que é um campo text agora

<input name="qt_produto[]" id="qt_produto[]" size ="1" maxlength="2" type="text" value="<?=$_POST['qt_produto'] ?>" style="width:16px;font-size: 13px"/> Qtde

E la onde trato os dados coloquei assim:

if (isset($_POST['carrinho_adicionar_varios'])) {


			$values = Array(); 


			foreach($_POST['id_produto'] AS $item ) {
			$count++; 
			$chave_produto = md5(uniqid(rand(), true)); 
				if( !empty( $item ) ) 
				   $values[] = "(now(), '".$_SESSION['cliente']['id_cliente']."', '".$item."', '".$_POST['qt_produto']."', '".$chave_produto."')"; 
				} 
			 $sql = "INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto) VALUES ".implode( ', ', $values ); 
			   mysql_query($sql) or die(mysql_error());
			 //echo $sql; 
				$alert= 'Você adicionou '.$_POST['qt_produto'].' produto(s) ao seu carrinho \n O que deseja fazer?\n';

		}

 

Mas ele ta inserindo 0 la no banco será q nao esta vindo nada de novo no meu POST

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou explicar melhor

 

Quantidade igual ao numero do mesmo produto q ele quer comprar

 

Tipo tenho la:

Produto1

Ele seleciona o checkbox e na frente coloca a quantidade daquele produto que ele quer tipo 3

 

Ai vai enviar para o carrinho o produto q ele escolheu com a quantidade q ele digitou, no caso 3

 

 

Consegui explicar melhor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rode este código isoladamente:

 

<?php
if( $_SERVER['REQUEST_METHOD']=='POST' )
{
	$values = $qnts = Array();


	foreach( $_POST['qnt'] AS $qnt )
	{
		if( !empty( $qnt ) ) $qnts[] =  $qnt;
	}

	for( $i=0, $count=count( $_POST['id_produto'] ); $i<$count; $i++ )
	{
		if( !empty( $_POST['id_produto'][$i] ) )
		{
			$id_produto = (int)$_POST['id_produto'][$i];

			$qnt = isset( $qnts[$i] ) ? (int)$qnts[$i] : 0;
			$values[] = "(NULL, {$id_produto}, {$qnt})";
		}
	}

	$sql = "INSERT INTO pedido (id, id_produto, qnt) VALUES ".implode( ', ', $values );

	echo $sql;
}
?>
<form action="" method="post">
	<fieldset>
		<label><input type="checkbox" name="id_produto[]" value="1" /> Produto 1</label>
		<label>Quantidade: <input type="text" name="qnt[]" /></label>
	</fieldset>
	<fieldset>
		<label><input type="checkbox" name="id_produto[]" value="2" /> Produto 2</label>
		<label>Quantidade: <input type="text" name="qnt[]" /></label>
	</fieldset>
	<fieldset>
		<label><input type="checkbox" name="id_produto[]" value="9" /> Produto 9</label>
		<label>Quantidade: <input type="text" name="qnt[]" /></label>
	</fieldset>
	<fieldset>
		<label><input type="checkbox" name="id_produto[]" value="4" /> Produto 4</label>
		<label>Quantidade: <input type="text" name="qnt[]" /></label>
	</fieldset>
	<fieldset>
		<label><input type="checkbox" name="id_produto[]" value="7" /> Produto 7</label>
		<label>Quantidade: <input type="text" name="qnt[]" /></label>
	</fieldset>

	<label><input type="submit" name="ok" value="Ok" /></label>
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

É cara a questao é nao esta indo nada no $_POST['qt_produto']

 

Qdo dou um echo no SQL nao aparece nada la, ou melhor aparece escrito Array

 

olha:

INSERT INTO carrinho (dt_hr, id_cliente, id_produto, qt_produto, chave_produto) VALUES (now(), '5', '6576', 'Array', '949fed7519a09afe2f5927cb151b5d95') 

 

hehe só que dessa vez eu garanto que esta dentro do form hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo marcosfj1, se aparece escrito Array deve ser porque o valor é um array :rolleyes:

 

Que tal aprender a debugar os códigos para poder resolver os problemas?

 

Utilize var_dump() para averiguar o que está ocorrendo.

 

Caso ainda não saiba como manipular arrays abaixo vão dois links que vão lhe sanar estas dúvidas:

 

http://www.php.net/manual/

Manipulação de Arrays com PHP

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa cara beleza....entao eu já usei esta maneira de ver o erro usando var_dump(); inclusive neste topico mesmo eu já usei...hehe já me ensinaram.

 

O motivo de eu ter postado aqui como sai o INSERT sem utilizar o var_jump(); foi pra mostrar para o Andrey Knupp que tava me ajudando desde o comeco q era o mesmo erro de um problema q agente tava tendo qdo comecamos a discutir

 

A eu ainda nao resolvi este problema nao, mas teve tanta coisa q surgiu aqui no trampo para fazer q acabei deixando esta meio de lado....mas pos-carnaval onde todos iremos relaxar haha ai vou tentar de novo resolver o q ficou faltando

 

E valeu pelo links vou dar depois um olhada...hehe mas pós carnaval hehe

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá galera!

 

Bom após carnaval aqui estou eu de novo tentando finalizar este topico, bom primeiramente eu mudei algumas coisas no codigo para ficar mais facil pra mim....Simplesmente pq prefiro trabalhar com FOR do que FOREACH.

 

Vou postar meu codigo abaixo, para vcs verem como estou tentando enviar varios itens com quantidades diferentes, ai depois eu explico o que nao esta dando certo....o codigo esta bem comentado:

 

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 NAO TENHA ENCOTRADO O PRODUTO, OU SEJA ELE NAO 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 nao esta mandando a quantidade....eu vou coloco 4 no campo input de quantidade e clico em enviar e ele apenas adiciona 1....nao estou conseguindo pegar o valor que é mandado por $_POST['qt_produto'][$j].

 

Alguem sabe me ajudar?

 

Valeu

 

Niguem tem uma ideia?

 

Eu acredito que eu esteja perto da resposta mas to travado mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é $j , e sim $i .. não ha porque criar outro FOR , você faz a quantidade no mesmo loop e array de produtos

 

Poxa amigo era realmente isso, mudei os $j por $i e realmente a quantidade foi mandada

 

Porem tem um detalhe hehe....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 nao sei pq?

 

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 NAO TENHA ENCOTRADO O PRODUTO, OU SEJA ELE NAO 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 nao ai sai do If e insere apenas 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha so , não quero ser Rude não Ironico ..

Mais você responde umas coisas que são meio estranhas

 

Veja Bem

if($cp['id_produto'] == $_POST['id_produto'][$i]){

 

Você Fala Que o Problema Possivelmente pode estar nesse if

se você acha isso porque não faz um backup do codigo original

e faz suas modificaçoes antes de afirmar ou mencionar qualquer possivel erro que você acha no codigo

agente aqui no forum não temos obrigação de e ajudar a solucionar tal caso ou problema , mesmo sendo simples

como perguntar como se soma numeros com php .

 

mais eu acho que você deveria acreditar no CTRL + Z , e começar fazer alteraçoes no seu codigo pra dai sim

afirmar que você não sabe onde está o problema ..

 

você fala " acho que o problema pode estar nesse if " , porque você não tenta tirar ele dai e remover

tenta procurar os erros que você cometeu escrevendo o codigo , se não encontrar ou não tiver ideia , poste no forum

e fala oque você tentou fazer pra identificar o erro .. ai sim tentaremos solucionar seu problema com :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha so , não quero ser Rude não Ironico ..

Mais você responde umas coisas que são meio estranhas

 

 

 

Nao cara de boa....acontece que eu noto o erro, ai venho aqui no forum e falo o q aconteceu e o q me parece ser de acordo com o erro....no periodo de alguem responder eu já vou fazendo os teste....no caso eu já mudei e remudei o codigo hehe, e acoabou nao dando certo hehe

 

Por isso que eu já falo o q eu acho q esta errado, pq assim quem ta acompanhando o topico q quer ajudar nao precisa ler tudo e sim já ir mais ou menos desconfiado do q pode ser o erro qdo for olhar o codigo

 

Entao nao é q ou preguiçoso ou q espero a resposta pronta de alguem...hehe é q sou ancioso hehe...eu noto o erro já posto aqui, e vou lutando sozinho pra conseguir resolver, as vezes eu consigo, mas as vezes eu fico apanhando como agora estou e ai conto com a ajuda de quem é mais experiente....mas em nenhum momento eu deixo de tentar resolver os possiveis erros q eu encontro, ou julgo q encontro hehe :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo , Mais fica uma dica ai .. faça todas as alteraçoes cabiveis a seu conhecimento

Depois posta oque você tentou fazer pra gente poder te ajudar Ok ? ;)

 

Não entendi o porque desse else .. não deveria ser + 0 ?

 

else{
$qt_produto = $cp['qt_produto'] + 1;
}

Na hora de Ler o Pedido , você deveria fazer um IF , pra verificar se a quantidade e 0

Então se quantidade for 0 , quantidade = 1

 

Ja tentou ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo , Mais fica uma dica ai .. faça todas as alteraçoes cabiveis a seu conhecimento

Depois posta oque você tentou fazer pra gente poder te ajudar Ok ? ;)

 

 

Certo :)

Ainda tenho algumas ideias aqui, vou tentar ver o q vira, ai depois eu posto aqui o q aconteceu

 

hehe o problema é a anciedade de resolver logo hehe

 

Valeu

 

else{
$qt_produto = $cp['qt_produto'] + 1;
}

Na hora de Ler o Pedido , você deveria fazer um IF , pra verificar se a quantidade e 0

Então se quantidade for 0 , quantidade = 1

 

Ja tentou ?

 

 

Entao no caso ai funciona assim:

Se eu tenho o produto no carrinho, e nao coloquei nada escrito na qauntidade e cliquei em comprar, é sinal q eu quero apenas comprar 1 ou seja aquilo q esta no carrinho + 1

$qt_produto = $cp['qt_produto'] + 1;

 

Agora se tem quantidade digitada ai eu somo o q esta no carrinho + o $_POST['qt_produto'] que é aquilo q o cara digitou

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

mais eu acho que isso e questão de você definir a quantidade como 1 , ou seja

 

deixa o value como 1 . então quando o cara clica comprar esse valor ja e fixo ..

 

Não tem Porque o cara comprar 0 Produtos né ?

 

Não presisa da soma ai .. ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

É realmente hehe...já mudei aqui

 

Bom é isso ai estou oficialmente sem ter a menor ideia do q pode ser feito hehe

 

Como o problema eu acreditava q era naquele IF e o problema parecia que era pq ele olhava o primeiro produto ele nao tinha quantidade a ser aumentada e logo já sai, eu coloquei um while para que ele percorrese todos os produtos do carrinho e comparasse, mas nao adiantou

 

Ai tentei tirar aquele IF porem é claro ai os produtos passaram a se duplicar no carrinho e nao aumentar a quantidade....entao nao sei mais o q tentar

 

O problema que esta acontecendo é o seguinte, ele só realiza o aumento dos produtos q já estao no carrinho desde q aquele produto que eu quis somar a quantidade digitada com a q esta la seja o primeiro produto, q foi inserido, ou todos os q tiverem la

 

E tem um outro detalhe tenho 4 produtos no carrinho q add de uma vez com diversas quantidades, ao tentar inserir um 5 produto com uma quantidade ele nao aceita e manda apenas 1 para o carrinho

 

Entao nao sei mesmo q fazer....alguem consegue me ajudar?

 

Se nao ficou claro o q falei aqui eu tento explicar melhor

 

Valeu

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.