marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 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
marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 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
marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 ^_^ , mais faz oque eu te falei .. aos poucos você chega la .. \: Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 tira esse if dai .. if ($_POST['id_produto']) { e o checkbox , o nome dele e id_produto , so ? se sim . você tem que trocar pra id_produto[] todos .. pra fazer um array :lol: Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 o nome você tem que colocar deve ser um array , o valor não importa .. Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 2, 2011 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 236You 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 cara você ta fazendo errado , olha o primeiro exemplo que eu te dei .. $values[] = "deve ser os campos" posta o script completo ai .. Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 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
marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 e porque os campso não são um array .. Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 o nome dos campos estão com [] , você tem algum check marcado ? Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 troque <? , pra <?php e poste o script COMPLETO \: Compartilhar este post Link para o post Compartilhar em outros sites