edye 0 Denunciar post Postado Fevereiro 5, 2008 pessoal é o seguinte! Eu tenho uma tabela no mysql montada da seguinte maneira tabela produtos id (gerado automaticamente) nome quantidade preco tenho uma pagina onde faz uma consulta e outra que traz o resultado dentro de um form <? $alterado = $quantidade - 1 ?> altera a quantidade para menos 1 e monta o form assim exemplo: o resultado trouxe 4 registros <form action="altera.php"> <input type="checkbox" id="$id" value="$alterado" checked> <input type="checkbox" id="$id" value="$alterado" checked> <input type="checkbox" id="$id" value="$alterado" checked> <input type="checkbox" id="$id" value="$alterado" checked> <input type="submit"> </form> agora eu preciso fazer a página altera.php receber os dados dos checkbox e atualizar no mysql o campo quantidade de acordo com o id do registro. alguem poderia me ajudar a montar o form e a pagina que altera os registros? Compartilhar este post Link para o post Compartilhar em outros sites
Dórian Conde Langbeck 0 Denunciar post Postado Fevereiro 5, 2008 seja bem vindo edye... depois de uma lida nas Regras do Fórum iMasters posta a extruta da(s) tabela(s) q ira(m) sofrer alteração[ões] com o processamento do <form>, explique melhor oq você esta querendo, acho q sei oq é + naum tenho certesa. Abraços xD Compartilhar este post Link para o post Compartilhar em outros sites
edye 0 Denunciar post Postado Fevereiro 5, 2008 Olá "Dórian", De acordo com a minha tabela eu quero alterar apenas o campo quantidade do registro usando checkbox. exemplo: a minha tabela tem 5 registros. ----------------------------------------------------------- --tabela produtos-- id = 1 | nome = bola | quantidade=10 | id = 2 | nome = quadrado | quantidade=10 | id = 3 | nome = retangulo | quantidade=10 | id = 4 | nome = triangulo | quantidade=8 | id = 5 | nome = losango | quantidade=10 | ----------------------------------------------------------- o meu sistema de busca lista 2 registros: id = 2 | nome = quadrado | quantidade=10 | id = 4 | nome = triangulo | quantidade=8 | eu envio esses 2 registros para outra pagina que pega o valor do campo quantidade desses 2 registros e subtrai 1 fica assim: id = 2 | nome = quadrado | quantidade=9 | id = 4 | nome = triangulo | quantidade=7 | agora eu preciso salvar a alteração feita. O que eu pensei foi o seguinte: pego os dados alterados e monto um checkbox assim: <form action="pagina_que_salva_os_dados.php" method="post"> <input type="checkbox" id="2" name="quadrado" value"9" checked> <input type="checkbox" id="4" name="triangulo" value"7" checked> <input type="submit" value="salvar"> </form> até aí eu consegui fazer, mas a pagina que vai salvar esses dados eu não sei como fazer. Pois eu preciso pegar os dados de todos o checkbox e fazer um update. Após estas ações a tabela deverá ficar assim: ----------------------------------------------------------- --tabela produtos-- id = 1 | nome = bola | quantidade=10 | id = 2 | nome = quadrado | quantidade=9 | id = 3 | nome = retangulo | quantidade=10 | id = 4 | nome = triangulo | quantidade=7 | id = 5 | nome = losango | quantidade=10 | ----------------------------------------------------------- Não sei se deu para entender assim, mas se precisar eu tento explicar de outra forma. Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
edye 0 Denunciar post Postado Fevereiro 5, 2008 Eu tenho esse script que salva os dados vindos de um form, mas ele salva apenas um de cada vez. Então quando mando salvar, ele salva apenas os dados do primeiro checkbox. Estou colocando aqui caso alguem saiba modificar ele para salvar o valor de todos os checkbox. <?php if($_SERVER["REQUEST_METHOD"] == "POST") { $id = $_POST["id"]; $quantidade = $_POST["quantidade"]; if(@mysql_query("UPDATE produtos SET quantidade = '$quantidade' WHERE id = $id")) { if(mysql_affected_rows() == 1){ echo "Salvo"; } } else { if(mysql_errno() == 1062) { echo $erros[mysql_errno()]; exit; } else { echo "Erro"; exit; } @mysql_close(); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
JackDenio 0 Denunciar post Postado Fevereiro 5, 2008 você pode fazer com foreach ... no seu checkbox deixa assim: <input type="checkbox" id="<?php echo $row['id']; ?>" name="altera[]" value"<?php echo $valor; ?>" checked>Ai na página que faz o update você coloca : <?php if($_SERVER["REQUEST_METHOD"] == "POST") { foreach($_POST["altera"] as $alt) { $id = $_POST['id']; $quantidade = $alt; if(mysql_query("UPDATE produtos SET quantidade = '$quantidade' WHERE id = $id")) { if(mysql_affected_rows() == 1){ echo "Salvo"; } } else { if(mysql_errno() == 1062) { echo $erros[mysql_errno()]; exit; } else { echo "Erro"; exit; } @mysql_close(); } } } ?> Não testei ..se não funcionar posta ai .. Compartilhar este post Link para o post Compartilhar em outros sites
Dórian Conde Langbeck 0 Denunciar post Postado Fevereiro 5, 2008 aqui o meu codigo ^^ <?php foreach ($_POST as $id) { @mysql_query("UPDATE produtos SET quantidade = (quantidade-1) WHERE id = '$id'") or die ("Erro ao processar a ID: $id"); } ?> Ahh... mude o checkbox para: <input type="checkbox" id="cb_<?php echo $c++; ?>" name="cb_<?php echo $c++; ?>" value"<?php echo $row['id']; ?>"> Compartilhar este post Link para o post Compartilhar em outros sites
edye 0 Denunciar post Postado Fevereiro 5, 2008 O "input checkbox" esta dentro do echo, como deverá ficar input nesse caso? echo " <input type='checkbox' id='???' name='???' value='???' checked> "; Compartilhar este post Link para o post Compartilhar em outros sites
Dórian Conde Langbeck 0 Denunciar post Postado Fevereiro 6, 2008 echo " ... <input type=\"checkbox\" id=\"cb_".$c++."\" name=\"cb_".$c."\" value\"".$row['id']."\"> ... "; Compartilhar este post Link para o post Compartilhar em outros sites
edye 0 Denunciar post Postado Fevereiro 7, 2008 ------Editei esta resposta porque era uma resposta duplicada------ Compartilhar este post Link para o post Compartilhar em outros sites
edye 0 Denunciar post Postado Fevereiro 7, 2008 Olá galera, eu ainda não consegi resolver o problema do checkbox, pois meu conhecimento em php ainda é bastante limitado, por isso não consegui botar pra funcionar nem com o código de vocês. Bem, colocando este problema a parte. Eu estou com outro que talvez seja fácil de resolver (ou não) e vou aproveitar esse tópico que eu já criei pra tirar a minha dúvida. eu tenho um campo no meu banco de dados onde eu gravo o valor de um produto, o formato como fica armazenado é assim: 1.23 a minha página calcula o troco de acordo com o valor que o usuario digita no form. $total = 2.00 - 1.25; a variavel total nesse caso é igual a 0.75. até aí to ok. mas se o usuário entra com qualquer valor menor que 2.00 (1.90 , 1.80 , 1.75) a variável fica igual a -0.25 independente do valor que for menor que os 2.00. o certo seria assim: $total = 1.75 - 1.25; "0.50 = 1.75 - 1.25" mas fica assim: $total = 1.75 - 1.25; "-0.25 = 1.75 - 1.25" se o usuario coloca 2.00: $total = 1.75 - 1.25; "0.75 = 2.00 - 1.25" o mesmo problema acontece sempre quando o valor a ser calculado é somente os "centavos". Alguem sabe a forma como estou calculado não está correta ou se tem alguma outra forma de calular valores nesse formato (0.00) sem problemas??? Compartilhar este post Link para o post Compartilhar em outros sites
JackDenio 0 Denunciar post Postado Fevereiro 7, 2008 Em relação ao seu 1º problema ..como você recebe esses dados na página que tem o formulário ? E quanto ao seu 2º problema seria melhor se você tivesse postado outro tópico ... Compartilhar este post Link para o post Compartilhar em outros sites
edye 0 Denunciar post Postado Fevereiro 7, 2008 Oi pessoal, consegui resolver o problema da subtração. O problema não estava no cálculo em si, mas sim em umas das variáveis. Compartilhar este post Link para o post Compartilhar em outros sites
edye 0 Denunciar post Postado Fevereiro 7, 2008 esse código recebe os dados do resultado da busca e monta o form. por enquanto ele está configurado para imprimir vários forms de acrodo com o resultado. <?php echo " <table border='0'> <tr> "; $carrinho = isset ($_SESSION['carrinho']) ? $_SESSION['carrinho'] : array(); if (count ($carrinho) == 0) { echo " "; } else { for ($a = 0; $a < count($carrinho); $a++) { $id = $carrinho[$a]['id']; $nome = htmlentities ($carrinho[$a]['nome']); $preco = number_format ($carrinho[$a]['preco'], 2, ",", ""); $desc = htmlentities ($carrinho[$a]['descricao']); $qtde = $carrinho[$a]['qtde']; $subtotal = number_format(($carrinho[$a]['preco'] * $qtde), 2, ',', ''); $tot = $desc - $qtde; echo " <td> <form method='post' action='salva.php'> <input type='hidden' name='tot' id='tot' value='$tot'> <input type='hidden' name='id' id='id' value='$id'> <input type='submit' value='$id'> </form> <td> "; }// fecha for echo " </tr> </table> "; }// fecha else ?> o resultado seria +- isso: ex. 3 registros encontrados ficaria: <form method='post' action='salva.php'> <input type='hidden' name='tot' id='tot' value='$tot'> <input type='hidden' name='id' id='id' value='$id'> <input type='submit' value='$id'> </form> <form method='post' action='salva.php'> <input type='hidden' name='tot' id='tot' value='$tot'> <input type='hidden' name='id' id='id' value='$id'> <input type='submit' value='$id'> </form> <form method='post' action='salva.php'> <input type='hidden' name='tot' id='tot' value='$tot'> <input type='hidden' name='id' id='id' value='$id'> <input type='submit' value='$id'> </form> o problema é que o usuário terá que clicar em nos 3 submits e isso não é nada agradável se o resultado trouxer 20 registros por exemplo. como eu tinha dito acima eu coloquei para que no lugar dos forms imprimisse checkbox resultado = 3 registros: <input type='checkbox' name='$id' value='$tot' checked> <input type='checkbox' name='$id' value='$tot' checked> <input type='checkbox' name='$id' value='$tot' checked> assim eu mato 3 coelho com um submit só. se o resultado traz 50 registros eu mato 50 coelhos com apenas "1" submit. acho que vocês já entenderam né? a minha intenção é salvar a variável $tot de acordo com o id($id) correspondente. a página que salva os dados está assim <?php mysql_connect("localhost","root","xxxx"); mysql_select_db("vendas"); if($_SERVER["REQUEST_METHOD"] == "POST") { $tot = $_POST["tot"]; $id = $_POST["id"]; if(@mysql_query("UPDATE produtos SET descricao = $tot WHERE id = $id")) { if(mysql_affected_rows() == 1){ echo "atualizado"; } } else { if(mysql_errno() == 1062) { echo $erros[mysql_errno()]; exit; } else { echo "erro"; exit; } @mysql_close(); } } ?> o código acima recebe os dados do input text, mas eu gostaria de adapta-lo para receber do input checkbox e salvar tudo de uma só vez. Agradeço a ajuda de vocês. Compartilhar este post Link para o post Compartilhar em outros sites