Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DMW

[Resolvido] Parcelas

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.