marcosfj1 0 Denunciar post Postado Março 3, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 3, 2011 e porque ao inves de $_POST['id_produto'] , deve ser $item ^_^ la nos $values[] eu coloquei de exemplo .. achei que você ia entender \: Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 3, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 3, 2011 De Nada . o forum e pra isto mesmo . :joia: Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 3, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 3, 2011 Quantidade = Preço ? ou Quantidade de itens que o cara selecionou? Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 3, 2011 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
William Bruno 1501 Denunciar post Postado Março 3, 2011 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
marcosfj1 0 Denunciar post Postado Março 3, 2011 É 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
Periscuelo 20 Denunciar post Postado Março 4, 2011 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
marcosfj1 0 Denunciar post Postado Março 4, 2011 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
marcosfj1 0 Denunciar post Postado Março 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 9, 2011 Não é $j , e sim $i .. não ha porque criar outro FOR , você faz a quantidade no mesmo loop e array de produtos Compartilhar este post Link para o post Compartilhar em outros sites
marcosfj1 0 Denunciar post Postado Março 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 9, 2011 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
marcosfj1 0 Denunciar post Postado Março 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 9, 2011 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
marcosfj1 0 Denunciar post Postado Março 9, 2011 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
Andrey Knupp Vital 136 Denunciar post Postado Março 9, 2011 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
marcosfj1 0 Denunciar post Postado Março 9, 2011 É 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