Ir para conteúdo

POWERED BY:

Arquivado

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

valdir calixto

[Resolvido] Cadastro Financeiro

Recommended Posts

Boa tarde amigos, bem é o seguinte estou fazendo um cadastro financeiro para um site, no qual vou recuperar o nome do cliente, e a quantidade de parcelas que ele vai pagar, porém consigo recuperar o nome do cliente sem problemas, e também consigo gerar a quantidade parcelas (Através de java Script) que ele quer, só que quando mando cadastrar, na minha tabela cadastra uma parcela só para o cliente (ou seja ele criar uma linha só) e preciso que ele crie a quantidade de linhas que determinei na quantidade de parcelas, porém acho que não acrescenta a quantidade dele linhas suficientes pois identifica uma única linha para o cliente atual, exemplo: Se colocar 3 parcelas, tem que gerar 3 linhas para vencimento do mesmo cliente, se colocar 6 tem que gerar seis linhas no banco de dados, porém isso não acontece, através do java scritp gero quantas caixas de texto preciso, porém na hora de cadastrar envia somente uma, vou colocar o código aqui.

 

 

<?php 
session_start();
	if ($_SESSION['autentica']<>'foifoifoifoi'){
		header('location:../aviso.php?id=1');
	} else {
require('../../banco.php');
$sql= "select * from aluno GROUP BY nome ASC";
$cunhu_proprio=mysql_query($sql);
}


?>
<html>


<script type="text/javascript">

function adicionarCampos() {
var objSelect = document.getElementById("tipo");
var objText = document.getElementById("txtValor");
var objText2 = document.getElementById("txtVencimento");
var objText3 = document.getElementById("txtData");
var objSelect2 = document.getElementById("txtHistorico");

var i;
var linha = "";
var linhavenc = "";
var linhadatapg = "";
var linhahistorico = "";


	if (objSelect.value != "") {
		for (i=0; i < objSelect.value; i++) {
			linhatabela += "<br> <input type='text' name='tabela' id='tabela'>"
			linha += "<br> <input type='text' name='valor' id='valor'>"
			linhavenc += "<br> <input type='text' name='mes' id='mes'>"
			linhadatapg += "<br> <input type='text' name='data' id='data'>"
			linhahistorico += "<br> <input type='select' name='historico' id='historico'>"
			
		} 
		objText.innerHTML = linha;
		objText2.innerHTML = linhavenc;
		objText3.innerHTML = linhadatapg;
		objSelect2.innerHTML = linhahistorico;
		


	}else{
		objText.innerHTML = "";
	}
} 
</script>


<head>
<title>ESCOLA DE INFORMÁTICA CIDADÃ</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
@import url(../../Fisk/classes.css);
-->
</style>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
	document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
<style type="text/css">
<!--
@import url("../classes.css");
@import url("../../classes.css");
-->
</style>
</head>

<body>
<table width="740" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr>
	<td><div align="center"><img src="../../imagem/topo_site1.jpg" width="786" height="102"></div></td>
  </tr>
  <tr>
	<td bgcolor="#CCFF00"><div align="center"><a href="../index.php"><strong><font color="#0000FF">Inicio</font></strong></a><font color="#0000FF"><strong> </strong></font><strong>|</strong><font color="#0000FF"><strong> <a href="../cadastros.php"><font color="#0000FF">Cadastros</font></a> </strong></font><strong>|</strong><font color="#0000FF"><strong> <a href="../buscar.php"><font color="#0000FF">buscar</font></a> </strong></font><strong>|</strong><font color="#0000FF"><strong> <a href="../impressao.php"><font color="#0000FF">impressão</font></a> </strong></font><strong>|</strong><font color="#0000FF"><strong> <a href="../administracao.php"><font color="#0000FF">administração</font></a> </strong></font><strong>|</strong><font color="#0000FF"><strong> <a href="../../aviso.php?id=2"><font color="#0000FF">Sair</font></a></strong></font></div></td>
  </tr>
  <tr>
	<td bgcolor="#CCCCCC"><div align="center"><strong>olá <?php echo $_SESSION['usuario']; ?>,
		  Hoje é <?php echo $_SESSION['data']; ?> </strong></div></td>
  </tr>
  <tr>
	<td><div align="center">
	  <p align="left"><strong>		<a href="../cadastros.php">Cadastros</a>>Cadastrar Movimentação financeira:</strong></p>
		<form name="form1" method="post" action="financeiro2.php">
		  <table width="41%" border="0">
			<tr> 
			  <td width="41%">ALUNO:</td>
			  <td width="59%"><select  name="tabela" class="campos" id="tabela" onClick="d">
				  <option selected>Selecione o Nome do Aluno.</option>
				  <?php 
	while ($dados=mysql_fetch_array($cunhu_proprio, MYSQL_ASSOC)){
	echo '<option>'.$dados['nome'].'-'.$dados['cpf'].'</option>';
	}	
	?>
				</select></td>
			</tr>
			<tr bgcolor="#CCCCCC"> 
			  <td>CPF:</td>
			  <td></td>
			</tr>
			<tr> </tr>
			<tr> 
			  <td colspan="2">Número de parcelas: 
				<select id="numParcelas" name="Tipo" onChange="adicionarCampos()">
				  <option value="">---</option>
				  <option value="1">1</option>
				  <option value="2">2</option>
				  <option value="3">3</option>
				  <option value="4">4</option>
				  <option value="5">5</option>
				  <option value="6">6</option>
				  <option value="7">7</option>
				  <option value="8">8</option>
				  <option value="9">9</option>
				  <option value="10">10</option>
				  <option value="11">11</option>
				  <option value="12">12</option>
				</select> <br> <br> <table width="75%" border="0" cellspacing="0" cellpadding="0">
				  <tr> 
					<td width="17%">Valor</td>
					<td width="24%">Vencimento</td>
					<td width="28%">Data de Pagamento</td>
					<td width="6%">Forma</td>
					<td width="7%">Nome</td>
					<td width="3%">dfd</td>
					<td width="4%">fdfd</td>
					<td width="11%">dfdf</td>
				  </tr>
				  <tr> 
					<td><span id="txtValor"></span></td>
					<td><span id="txtVencimento"></span></td>
					<td><span id="TxtData"></span></td>
					<td><span id="txtHistorico"></span></td>
					<td></td>
					<td> </td>
					<td> </td>
				  </tr>
				</table> </td>
			</tr>
			<tr> 
			  <td colspan="2"></td>
			</tr>
			<tr> 
			  <td colspan="2"><div align="center"> 
				  <input type="submit" name="Submit" value="Cadastrar">
				  <input type="reset" name="Submit2" value="Limpar">
				</div></td>
			</tr>
			<tr>
			  <td colspan="2">  </td>
			</tr>
		  </table>
	  </form>
	  <p align="left"> </p>
	</div></td>
  </tr>
  <tr>
   </tr>
  
</table>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom... coloque isto no início do código financeiro2.php

echo '<pre>';
print_r($_POST);
echo '</pre>';

Vai mostrar como estão vindo os dados. Além disto, você tem que deixar o campo como array (name="nome[]") para que ele não sobrescreva os valores.

 

Tenta fazer assim e qualquer coisa posta de novo.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu financeiro2.php, esta desta forma.

 

 

<?php
require_once('../../banco.php');


$tabela=$_POST['tabela'];
$tipo=$_POST['tipo'];
$mes=$_POST['mes'];
$valor=$_POST['valor'];
$nota=$_POST['nota'];
$destino=$_POST['destino'];
$data=$_POST['data'];
$historico=$_POST['historico'];


$sql = "INSERT INTO financeiro (cod, tabela, tipo, mes, valor, nota, destino, data, historico) VALUES ('', '$tabela', '$tipo', '$mes',
 '$valor', '$nota', '$destino', '$data', '$historico')";

mysql_query($sql);

		// INICIA O LOG---------------------------------------	
		require_once("../../datahora.php");
		
		$op="cadastrou uma operacao financeira";
		
		$sql5 = "INSERT INTO log (cod, usuario, nome, data, hora, op, ip) VALUES ('', '$_SESSION[usuario_logado]', '$_SESSION[usuario]', '$_SESSION[data]', '$msghora', '$op', '$_SERVER[REMOTE_ADDR]')";

		mysql_query($sql5);
		
		// FIM DO LOG-----------------------------------------

header('location:../../aviso.php?id=8');

?>

No caso, ele está enviando uma linha só para cada cliente.

 

O código não está gerando a quantidade de linhas que preciso inserir no banco de Dados exemplo:

 

Cliente: João Macedo

Quantidade Parcelas: 3

 

Vencimento: 10/05/2009

Valor: 120,00

 

Vencimento: 10/06/2009

Valor: 120,00

 

Vencimento: 10/07/2009

Valor: 120,00

 

No exemplo o cliente João Macedo, vai pagar em 3 parcelas, meu código java script, gera os campos de texto para colocar o vencimento e o valor, porém quando mando cadastrar, ele incluir no banco de dados apenas uma linha, sendo descartada as outras duas, então preciso implementar um código, que identifique que é para gerar a quantidade de registros referente ao cliente, neste caso teria que ser gerado 3 linhas diferentes para o joão macedo, pois ele tem 3 parcelas a serem pagas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem coisa errada... Veja... você fez...

Bom... coloque isto no início do código financeiro2.php

echo '<pre>';
print_r($_POST);
echo '</pre>';

O que retornou???

 

E isto???

Além disto, você tem que deixar o campo como array (name="nome[]") para que ele não sobrescreva os valores.

Como ficou????

 

Tem que funcionar...

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho melhor irmos por partes: Primeira parte a tela de cadastro financeiro: Tenho um campo que recuperar os meus clientes cadastrados, nome e cpf:

 

<?php 
require('../../banco.php');
$sql= "select * from aluno GROUP BY nome ASC";
$cunhu_proprio=mysql_query($sql);
}

?>


<select  name="tabela" class="campos" id="tabela">
				  <option selected>Selecione o Nome do Aluno.</option>
				  <?php 
	[b]while ($dados=mysql_fetch_array($cunhu_proprio, MYSQL_ASSOC)){
	echo '<option>'.$dados['nome'].'-'.$dados['cpf'].'</option>';[/b]	}
?>

Nesta mesma tela vou incluir os pagamentos, porém a quantidade de vezes varia de cliente para cliente, então criei uma função java Script para gerar a quantidade de caixas de texto que for usar, o código está abaixo.

 

function adicionarCampos() {
var objSelect = document.getElementById("tipo");
var objText = document.getElementById("txtValor");
var objText2 = document.getElementById("txtVencimento");
var objText3 = document.getElementById("txtData");
var objSelect2 = document.getElementById("txtHistorico");

var i;
var linha = "";
var linhavenc = "";
var linhadatapg = "";
var linhahistorico = "";

	if (objSelect.value != "") {
		for (i=0; i < objSelect.value; i++) {
			linha += "<br> <input type='text' name='valor' id='valor'>"
			linhavenc += "<br> <input type='text' name='mes' id='mes'>"
			linhadatapg += "<br> <input type='text' name='data' id='data'>"
			linhahistorico += "<br> <input type='select' name='historico' id='historico'>"
		} 
		objText.innerHTML = linha;
		objText2.innerHTML = linhavenc;
		objText3.innerHTML = linhadatapg;
		objSelect2.innerHTML = linhahistorico;


	}else{
		objText.innerHTML = "";
	}
} 
</script>

Nesta parte de cima já tenho um problema, só faz uma inclusão no BD, pois os campos de texto sempre tem o mesmo nome ai sobreescreve, primerio tenho que solucionar isto, preciso gerar os campos de textos para colocar, valor, data, vencimento, porém se que acha sobreescrita no momento da inclusão, pois teria que cadastrar cada vencimento individualmente.

 

Abaixo o código da página financeiro2.php

 

?php

echo '<pre>';
print_r($_POST);
echo '</pre>';

require_once('../../banco.php');
$tabela=$_POST['tabela'];
$tipo=$_POST['tipo'];
$mes=$_POST['mes'];
$valor=$_POST['valor'];
$nota=$_POST['nota'];
$destino=$_POST['destino'];
$data=$_POST['data'];
$historico=$_POST['historico'];


$sql = "INSERT INTO financeiro (cod, tabela, tipo, mes, valor, nota, destino, data, historico) VALUES ('', '$tabela', '$tipo', '$mes',
 '$valor', '$nota', '$destino', '$data', '$historico')";

?>

Faz a inclusão mas como te falei, realiza a sobreescrita dos dados, vencimento, valor, mês, nota, fazendo o cadastro de um campo só, pergunta o array tem que ser criado no fianceiro2.php, porém não entendi como implementar isto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu falei... Você não fez o que eu disse...

 

linha += "<br> <input type='text' name='valor[]' id='valor[]'>"

Tem que ficar assim... Depois de fazer isto, veja o resultado.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem fez o cadastro, porém quando entrei no banco de dados, apareceu nos campos digitado ARRAY realizando um registro só.

 

if (objSelect.value != "") {
		for (i=0; i < objSelect.value; i++) {
			linha += "<br> <input type='text' name='valor[]' id='valor[]'>"
			linhavenc += "<br> <input type='text' name='mes[]' id='mes[]'>"
			linhadatapg += "<br> <input type='text' name='data[]' id='data[]'>"
			 linhahistorico += "<br> <input type='select' name='historico[]' id='historico[]'>"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem é o seguinte coloquei o que você me falou na página financeiro2.php

 

echo '<pre>';
print_r($_POST);
echo '</pre>';

Porém na página de resposta de inclusão ficou da forma abaixo e não incluiu nada no banco de dados:

 

Array
(
	[tabela] => maria do carmo da silva-345213458
	[tipo] => 3
	[valor] => Array
		(
			[0] => 200
			[1] => 300
			[2] => 400
		)

	[mes] => Array
		(
			[0] => 10/09/2009
			[1] => 10/10/2009
			[2] => 10/11/2009
		)

	[data] => 
	[historico] => 
	[Submit] => Cadastrar
Na página financeiro2.php, coloquei o laço de repetição que ficou da seguinte forma:

 

for($i=1;$i<$tipo;$i++){
$sql = "INSERT INTO financeiro (cod, tabela, tipo, mes, valor, nota, destino, data, historico) VALUES ('', '$tabela', '$tipo', '$mes',
 '$valor', '$nota', '$destino', '$data', '$historico')";
}

Porém não fez diferença nenhuma, estou chegando a conclusão que vou ter que criar um campo para cada vencimento, pagamento, valor na minha tabela mysql, só que desta forma vai dificultar algumas operações matemáticas que tenho que fazer, pois fiz uma vez assim em asp, e me ferrei.

Aguardo ajuda.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é mais sério do que eu imaginei...

 

O teu problema está na modelagem do banco de dados...

 

você precisa ter

- Uma tabela para o cliente

- Uma tabela para a venda (que tem o identificador do cliente)

- Uma tabela para as parcelas (que tem o identificador da venda)

 

Vou dar um exemplo.

- Tabela Cliente

- id_cliente

- Nome

- Telefone

- Endereço

------------------------

- Tabela Venda

- id_venda

- valor_venda

- id_cliente (campo que vai relacionar com o cliente)

-------------------------

- Tabela Parcela

- id_parcela

- id_venda (campo que vai relacionar com a venda)

- valor_parcela

- vencimento_parcela

 

Daí você vai incluir em 2 etapas... A primeira você inclui na tabela venda. Depois você inclui as parcelas para a venda (este segundo em um loop).

 

Os campos das tabelas são só exemplo... Falta informação em todos eles... É só pra você ter uma idéia.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu já tenho isso feito, uma tabela para cadastro do cliente e uma para cadastro das parcelas. É desta forma que estou trabalhando.

 

Na tabela de parcelas, ela vai ser dependente da de clientes.

 

Mas do jeito que tá vou ter que incluir um vencimento por vez, se tiver 12 parcelas, vou ter que incluir uma a uma. E quero otimizar tudo isso---> recupera o cliente, incluir a quantidade pagamento necessário, só não consigo fazer a parte de inserir vários pagamentos, através de um formulário só, apesar do meu banco de dados já está separado as tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você editou o post anterior... Agora você está no caminho... Veja...

 

Array
(
	[tabela] => maria do carmo da silva-345213458
	[tipo] => 3
	[valor] => Array
		(
			[0] => 200
			[1] => 300
			[2] => 400
		)

	[mes] => Array
		(
			[0] => 10/09/2009
			[1] => 10/10/2009
			[2] => 10/11/2009
		)

	[data] => 
	[historico] => 
	[Submit] => Cadastrar

Este é o retorno do seu formulário. Está correto. Você precisa acessar os dados das parcelas dentro do array... Vou dar um exemplo...

for ($i = 0; $i < count($_POST['mes']); $i++)
{
   echo 'Tabela - '.$_POST['tabela'];
   echo '<br/>Tipo - '.$_POST['tipo'];
   echo '<br/>Valor da parcela '.$i.' - '.$_POST['valor'][$i];
   echo '<br/>Mês da parcela '.$i.' - '.$_POST['mes'][$i];
   echo '<br/>Data - '.$_POST['data'];
   echo '<br/>Histórico - '.$_POST['historico'];
}

Tente entender o que eu fiz... Você vai conseguir fazer o laço para inserir as parcelas.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi muito bem essa parte

 

for ($i = 0; $i < count($_POST['tipo']); $i++)
{
   echo 'Tabela - '.$_POST['tabela'];
   echo '<br/>Tipo - '.$_POST['tipo'];
   echo '<br/>Valor da parcela '.$i.' - '.$_POST['valor'][$i];
   echo '<br/>Mês da parcela '.$i.' - '.$_POST['mes'][$i];
   echo '<br/>Data - '.$_POST['data'];
   echo '<br/>Histórico - '.$_POST['historico'];
}

o que está fazendo count?

 

Outro detalhe o número de parcelas é recebido através da variável tipo então não teria que comparar se o I é menor ou igual a tipo?, realmente não entendi.... essa parte de recuperar os dados do array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você mudou um pedaço crítico no loop... O count($_POST['tipo']) vai retornar 1, e vai executar o for somente 1 vez...

 

O count "Conta o número de elementos de uma variável, ou propriedades de um objeto" - Fonte: br.php.net/count

 

Então por ali estava contando quantos elementos havia no array $_POST['mes'] (no caso 3).

 

O restante era só exibição... Veja que $_POST['valor'][0] (que seria a primeira exibição) mostraria 200, que é o valor que consta no array $_POST['valor'] com índice 0.

 

Ali era só um exemplo, para você entender como você vai ter que colocar os dados no seu loop... No caso você vai ter que colocar o seu insert dentro do for...

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

for ($i = 0; $i < count($_POST['valor']); $i++){
$sql = "INSERT INTO financeiro (cod, tabela, tipo, mes, valor, nota, destino, data, historico) VALUES ('', '$tabela', '$tipo', '$mes',
 '$valor', '$nota', '$destino', '$data', '$historico')";
}

Então não esta fazendo o looping, o que pode estar acontecendo?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

você ainda não entendeu...

//só para confirmar, coloque esta linha
echo 'A quantidade de elementos no array valor é '.count($_POST['valor']);
for ($i = 0; $i < count($_POST['valor']); $i++){
$valor = $_POST['valor'][$i];
$sql = "INSERT INTO financeiro (cod, tabela, tipo, mes, valor, nota, destino, data, historico) VALUES ('', '$tabela', '$tipo', '$mes',
'$valor', '$nota', '$destino', '$data', '$historico')";
}

Somente um exemplo

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, porém não tá fazendo o lopping no insert.

 

Se eu colocar o echo, para imprimir na página me traz os dados do array, porém quando coloco pra fazer o for e depois o insert, não faz

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaziada, eu estava fazendo uma tremenda de uma ca....hehehe, o código funcionou vou deixar abaixo, caso alguém tenha a mesma dúvida.

 

 

for ($i = 0; $i < count($_POST['valor']); $i++)
{
$valor = $_POST['valor'][$i];
$mes = $_POST['mes'][$i];
$sql = "INSERT INTO financeiro (cod, tabela, tipo, mes, valor, nota, destino, data, historico) VALUES ('', '$tabela', '$tipo', '$mes',
 '$valor', '$nota', '$destino', '$data', '$historico')";
mysql_query($sql);
}

Até mais e obrigado novamente.

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.