marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 antes do foreach , bota um print_r($_POST['id_produto']) . com alguns checks marcados poste o retorno Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 2, 2011 Coloquei e continua aparecendo o mesmo erro :( Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 eu to falando o retorno do print_r !!!!! retornou Array( ) ? Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 2, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 2, 2011 cara , se o print_r não ta retornando nada e porque com certeza tem algo errado com seu formulario .. você mudou as tags ? Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 3, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 3, 2011 cara , você ate agora não mudou as tags como eu falei .. Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 3, 2011 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 234INSERT 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
Andrey Knupp Vital 136 Denunciar post Postado Março 3, 2011 cara , e muito estranho .. uma questão $_POST['id_produto'] não seria um resultado vindo do banco ? ou você bota o ID ali ? Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 3, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 3, 2011 então , deve ta dando erro porque esse $_POST['id_produto'] não deve ter sido enviado corretamente ou nen foi enviado .. ta muito enrolado isso ... posta o script inteiro ai .. Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 3, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 3, 2011 cara esse não e o script completo .. aonde você faz conexção com banco e talz ?? Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 3, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 3, 2011 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
marcosfj1 0 Denunciar post Postado Março 3, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 3, 2011 e porque você não faz o form acima do while ? assim você so usa checkbox e não presisa do hidden la .. Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 3, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 3, 2011 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