DMW 0 Denunciar post Postado Janeiro 19, 2010 Olá pessoal, tudo bem ??? Bom so novo no forum e vim postar uma duvida que estou ja faz algum tempo que nao consigo revolver. Vou ter um <SELECT></SELECT> com a quantidade de parcelas que a pessoa pode ter e quando escolher a quantidade de parcela aparece os campos mas isso eu ja fiz e ta certo. O problema é que quando eu mando cadastrar as parcelas, cadastra o mesmo numero da ultima parcela para todos as parcelas. EX: Se eu escolho 2 parcelas, PARCELA 1= 100 reais e PARCELA 2= 200 reais la no banco de dados aparece 200 e 200. Eu nao consigo revolver isso e ja tentei de mts formas. Se alguem nao entendeu o que eu quiz dizer posta que eu tento explicar melhor. Abraço... --------------------------CODIGO--------------------------------- <?php include "sql.php"; if(isset($_POST["btncad"])) { $qt = $_POST['quant']; $data = '11/11/2009'; //$valor = $_POST["valor"]; for($j = 0; $j <$qt; $j++) { $valor = $_POST["valor"]; //$monta_nome = "valor".$j; //$valor = $_POST[$monta_nome]; $sql = @mysql_query("INSERT INTO tab_parcela_teste (id, valor, data, qt) VALUES ('','$valor','$data','$qt')"); } } ?> <script> function mostra(quantidade) { var texto = ""; var valor = ""; for(i=1;i<=quantidade;i++) { valor = valor+i; texto += "Parcela " + i + " = <input type='text' name='valor' id='valor' ><br /><br />"; } document.getElementById('texto').innerHTML = texto; } </script> <body> <form name="form1" id="form1" method="post"> Quantidade: <select name="quant" onchange="mostra(this.value)"> <option></option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <br /><br /> <div id="texto"></div> <br /> <input type="submit" name="btncad" id="btncad" value="Cadastro"> </form> </body> Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 19, 2010 Não precisa deste FOR: for($j = 0; $j <$qt; $j++) { $valor = $_POST["valor"]; //$monta_nome = "valor".$j; //$valor = $_POST[$monta_nome]; $sql = @mysql_query("INSERT INTO tab_parcela_teste (id, valor, data, qt) VALUES ('','$valor','$data','$qt')"); } Tira ele. Compartilhar este post Link para o post Compartilhar em outros sites
DMW 0 Denunciar post Postado Janeiro 19, 2010 Mas cara eu quero que a quantidade de parcelas que escolhe é salvo no BD por isso que tem esse for. EX: se eu escolher 2 parcelas precisa cadastrar 2 vezes o que pedi cadastrar. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 19, 2010 Pq ? Na tabela tem a quantidade parcelas e valor !!! Parcelas = 2 Valor = 100 Logo 100 x 2 = 200 Nao precisa cadastrar duas vezes. Dae você faz a conta no PHP Bem mais fácil! :D Compartilhar este post Link para o post Compartilhar em outros sites
DMW 0 Denunciar post Postado Janeiro 19, 2010 Entendi cara o que você quiz dizer mas o f*** é que eu preciso fazer para a pessoa cadastrar as parcelas um por um. Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 19, 2010 Entao aqui: $sql = @mysql_query("INSERT INTO tab_parcela_teste (id, valor, data, qt) VALUES ('','$valor','$data','$qt')"); No lugar do $qt, você coloca $j neh!! Que tá no seu FOR. Compartilhar este post Link para o post Compartilhar em outros sites
Mário Miranda 0 Denunciar post Postado Janeiro 19, 2010 Atribua aos seus inputs text "[]" no nome. <input type="text" name="valor[]" /> Na hora de colher os valores desses campos você pode usar um foreach. $valor=$_POST['valor']; foreach($valor as $a){ echo $a."<br />"; } Mais ou menos assim. Tente adaptar isso no seu código. Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Cruz 1 Denunciar post Postado Janeiro 19, 2010 Dica: $valor não necessita ficar dentro do for. Update: com o post do Márcio, vai depender da lógica que você adotar :) Compartilhar este post Link para o post Compartilhar em outros sites
DMW 0 Denunciar post Postado Janeiro 19, 2010 Eu fiz assim eu nao deu certo: $sql = @mysql_query("INSERT INTO tab_parcela_teste (id, valor, data, qt) VALUES ('','$valor','$data','$j')"); Eu coloquei na: Parcela 1 = 100 Parcela 2 = 200 e no banco aparece assim: id valor data 232 200 11/11/2009 233 200 11/11/2009 Para mim o importante é cadastrar os valores certo. O certo seria ficar assim: id valor data 232 100 11/11/2009 233 200 11/11/2009 Compartilhar este post Link para o post Compartilhar em outros sites
Mário Miranda 0 Denunciar post Postado Janeiro 19, 2010 Márcio?? http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif :lol: Então, eu tinha pensado em ele colocar o insert dentro desse foreach. Compartilhar este post Link para o post Compartilhar em outros sites
Mário Miranda 0 Denunciar post Postado Janeiro 19, 2010 Bem tosco...mas olha esse exemplo: <html> <form action="num.php" method="post"> <input type="text" name="valor[]" value="100" /><br /> <input type="text" name="valor[]" value="200" /><br /> <input type="text" name="valor[]" value="300" /><br /> <input type="text" name="valor[]" value="400" /><br /> <input type="submit" value="testar" /> </form> </html> <?php $valor=$_POST['valor']; if($valor){ foreach($valor as $a){ echo "insert into valor values($a).<br />"; } } ?> Testa isso ai do jeito que tá pra você ter uma ideia. Compartilhar este post Link para o post Compartilhar em outros sites
DMW 0 Denunciar post Postado Janeiro 19, 2010 Vlw a todos que responderam..... O jeito do Mário deu certo aqui... Obrigado Mário. Compartilhar este post Link para o post Compartilhar em outros sites
Mário Miranda 0 Denunciar post Postado Janeiro 19, 2010 Falow! http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Janeiro 19, 2010 no seu código era só usar o <cont($valor) Compartilhar este post Link para o post Compartilhar em outros sites
Mário Miranda 0 Denunciar post Postado Janeiro 19, 2010 Também poderia ser. Compartilhar este post Link para o post Compartilhar em outros sites
DMW 0 Denunciar post Postado Janeiro 19, 2010 Eu to com outra duvida é que eu preciso colocar alem do valor a data das parcelas. Eu tentei fazer assim mas ta errado: <?php include "sql.php"; if(isset($_POST["btncad"])) { $data = $_POST["data"]; $valor = $_POST["valor"]; foreach($valor $data as $a $d) { $sql = @mysql_query("INSERT INTO tab_parcela_teste (id, valor, data) VALUES ('','$a','$d')"); } } ?> <script> function mostra(quantidade) { var texto = ""; var texto1 = ""; var valor = ""; for(i=1;i<=quantidade;i++) { valor = valor+i; texto += "Parcela " + i + " = <input type='text' name='valor[]' id='valor' > "; texto += "Data " + i + " = <input type='text' name='data[]' id='data' ><br><br>"; } document.getElementById('texto').innerHTML = texto; document.getElementById('texto').innerHTML = texto; } </script> <body> <form name="form1" id="form1" method="post"> Quantidade: <select name="quant" onchange="mostra(this.value)"> <option></option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <br /><br /> <div id="texto"></div> <br /> <input type="submit" name="btncad" id="btncad" value="Cadastro"> </form> </body> Abraço.... Compartilhar este post Link para o post Compartilhar em outros sites
Mário Miranda 0 Denunciar post Postado Janeiro 20, 2010 Note que o foreach está trabalhando com os valores da variavel $valor. Para você trabalhar com os valores da variavel $data, teria que usar o foreach pra ela ou fazer assim do jeito que está abaixo. <?php include "sql.php"; if(isset($_POST["btncad"])) { $data = $_POST["data"]; $valor = $_POST["valor"]; $i=0; foreach($valor $data as $a){ $sql = @mysql_query("INSERT INTO tab_parcela_teste (id, valor, data) VALUES ('','$a','".$data[$i]."')"); $i++; } }?> <script> function mostra(quantidade){ var texto = ""; var texto1 = ""; var valor = ""; for(i=1;i<=quantidade;i++){ valor = valor+i; texto += "Parcela " + i + " = <input type='text' name='valor[]' id='valor' > "; texto += "Data " + i + " = <input type='text' name='data[]' id='data' ><br><br>"; } document.getElementById('texto').innerHTML = texto; document.getElementById('texto').innerHTML = texto;} </script> <body> <form name="form1" id="form1" method="post"> Quantidade: <select name="quant" onchange="mostra(this.value)"> <option></option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <br /><br /> <div id="texto"></div><br /> <input type="submit" name="btncad" id="btncad" value="Cadastro"></form></body> Espero que ajude. Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 20, 2010 Caro DMW, seja bem vindo ao fórum. Seu outro tópico foi excluído por ser exatamente sobre a mesma dúvida que este. Sugiro que leia o tópico de orientações para uma boa participação. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
DMW 0 Denunciar post Postado Janeiro 20, 2010 Eu fiz tambem desse jeito mas nao deu certo !!!! <?php include "sql.php"; if(isset($_POST["btncad"])) { //$qt = $_POST['quant']; $data = $_POST["data"]; $valor = $_POST["valor"]; foreach($data as $d) { foreach($valor as $a) { $sql = @mysql_query("INSERT INTO tab_parcela_teste (id, valor, data) VALUES ('','$a','$d')"); } } } ?> Ex: eu escolho 2 parcela e digito na PARCELA 1 = o valor 100 com a data 11/11/1111 e na PARCELA 2 = 200 com a data 22/22/2222 e mando cadastrar. No banco fica assim: id valor data 246 100 11/11/111 247 200 11/11/111 248 100 22/22/222 249 200 22/22/222 O certo que eu queria que ficase seria assim: id valor data 246 100 11/11/111 247 200 22/22/222 Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 20, 2010 No seu caso creio que será melhor utilizar o for. Algo assim. if(isset($_POST["btncad"])) { //$qt = $_POST['quant']; $data = $_POST["data"]; $valor = $_POST["valor"]; for($x = 0, $x < count($data), $x++) { $sql = @mysql_query("INSERT INTO tab_parcela_teste (id, valor, data) VALUES ('','$valor[$x]','$data[$x]')"); } } Outras observações. - Estude um pouco sobre SQL Injection, pois seu código é vulnerável - Fazer $valor = $_POST["valor"]; é totalmente desnecessário. - Utilize aspas simples nos índices dos array. Ex.: $_POST['valor']; - Procure sobre a classe MySQLi - Leia o tópico de orientações para uma boa participação. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites