fala ae gnt!
to precisando de uma ajudinha sobre esse assunto..
to fazendo um sistema intranet. e esbarrei nesse probleminha.
na forma de pagamento.. o kra pode escolher o numero de parcelas do pgto e a data de inicio.
ae na tela de confirmaçao e no meu banco de dados tem que ficar registrado a data de inicio e final do pagamento, de acordo com o numero de parcelas.
eu to usando essa funçaozinha: $data_fin = date ("d-m-Y", strtotime("+$parcela month")); //$parcela eh a quantidade de parcelas.
mas ela pega a data atual e nao a data de inicio, pra ele fazer a conta. somando errado neh.
algm pode me ajudar em fazer somar certinho o numero de parcelas na data inicio e na final

Numero De Parcelas Define Data_inicio/data_fim [duvida]
Started By DAn., 14/07/2008, 12:01
7 replies to this topic
#1
Posted 14/07/2008, 12:01
#2
Posted 14/07/2008, 13:04
Olá DAn.
Cara o seu php pega a data atual porque você está usando a função date que retorna a data do servidor em que seus scripts estão, portanto, fazendo date(d-m-Y) vc receberá como resposta "14-07-2007" naturalmente.
Se o cliente escolhe a data de início do pagamento, vc deve usar ela para fazer o seu cálculo. Vc não explicitou como o cliente escolhe a data de início, por isso não sei lhe dizer como proceder.
Geralmente nós vemos por aí 3 comboboxes onde o cliente escolhe o dia o mês e o ano. Às vezes o box do ano nem é mostrado, mas se vc fez dessa maneira vc deve pegar o valor do box mes e somar com o número de parcelas. Caso o número estoure (maior que 12) vc tem de fazer uma verificação para aumentar 1 no ano e tratar o valor para que o mês seja correto.
Bom, eu tentei ajudar dando este exemplo, mas caso ainda esteja confuso, afinal não sou nada bom em explicar hehehehe, mande como resposta a maneira que os seus clientes escolhem a data de início do pagamento, assim poderei dar uma resposta mais direcionada.
Issae, um grande abraço.
Cara o seu php pega a data atual porque você está usando a função date que retorna a data do servidor em que seus scripts estão, portanto, fazendo date(d-m-Y) vc receberá como resposta "14-07-2007" naturalmente.
Se o cliente escolhe a data de início do pagamento, vc deve usar ela para fazer o seu cálculo. Vc não explicitou como o cliente escolhe a data de início, por isso não sei lhe dizer como proceder.
Geralmente nós vemos por aí 3 comboboxes onde o cliente escolhe o dia o mês e o ano. Às vezes o box do ano nem é mostrado, mas se vc fez dessa maneira vc deve pegar o valor do box mes e somar com o número de parcelas. Caso o número estoure (maior que 12) vc tem de fazer uma verificação para aumentar 1 no ano e tratar o valor para que o mês seja correto.
Bom, eu tentei ajudar dando este exemplo, mas caso ainda esteja confuso, afinal não sou nada bom em explicar hehehehe, mande como resposta a maneira que os seus clientes escolhem a data de início do pagamento, assim poderei dar uma resposta mais direcionada.
Issae, um grande abraço.
#3
Posted 14/07/2008, 15:18
bem..eh o seguinte.
o usuario ira fazer tipo um cadastro.
terá um form pro nome, serviço, vai escolher o numero de parcelas, o valor, e a data de inicio que vai se efetuar o pagamento.
isso ta td funcionando direitinho. no script e na logica.
meu problema ta em somar as parcelas no mes da data de inicio, dando a data final do pagamento, entendeu?
eu tentei modificar akela funçao. tentei por assim:
$data_final = date ("$data_inicio", strtotime("+$parcela month"));
ele dah erro. falando de "; inesperado". eu pus com "d-m-Y" no lugar do $data_inicio e funciona normalmente, mas somando da data atual.
entendeu? qualquer coisa eu posto o codigo todo. mas acho que nao eh preciso
o usuario ira fazer tipo um cadastro.
terá um form pro nome, serviço, vai escolher o numero de parcelas, o valor, e a data de inicio que vai se efetuar o pagamento.
isso ta td funcionando direitinho. no script e na logica.
meu problema ta em somar as parcelas no mes da data de inicio, dando a data final do pagamento, entendeu?
eu tentei modificar akela funçao. tentei por assim:
$data_final = date ("$data_inicio", strtotime("+$parcela month"));
ele dah erro. falando de "; inesperado". eu pus com "d-m-Y" no lugar do $data_inicio e funciona normalmente, mas somando da data atual.
entendeu? qualquer coisa eu posto o codigo todo. mas acho que nao eh preciso
Edição feita por: DAn., 14/07/2008, 15:19.
#4
Posted 14/07/2008, 21:29
Vamos lá DAn.
Cara a parte do cadastro e tal eu entendi perfeitamente, mas, como eu te falei anteriormente, você está usando a função date() do php para gerar uma data que lhe interessa. O caso é que a função date() somente serve para retornar a data que está definida no servidor.
Olhando na documentação do PHP encontrei isso "Retorna uma string de acordo com a string format dada usando o inteiro timestamp dado ou a hora atual local se nenhum timestamp é dado.", você pode checar isso em http://br.php.net/date. Logo usar a função date() com uma variável que você setou não vai rolar.
Para fazer o que você quer você vai ter de tratar a informação armazenada na variável $data_inicio.
Por exemplo, se a sua variável $data_inicio armazena algo do tipo "dd-mm-aaaa", você pode declarar um array e usa explode() na variável $data_inicio e assim obter em cada item do array o dia, o mês e o ano e daí trabalhar com eles e gerar a data final de pagamento.
Bom, eu espero que você tenha entendido a idéia, peço que você poste novamente alguns dados do seu php para podermos desenvolver a solução para o seu script.
Aguardo seu retorno, um abraço.
Cara a parte do cadastro e tal eu entendi perfeitamente, mas, como eu te falei anteriormente, você está usando a função date() do php para gerar uma data que lhe interessa. O caso é que a função date() somente serve para retornar a data que está definida no servidor.
Olhando na documentação do PHP encontrei isso "Retorna uma string de acordo com a string format dada usando o inteiro timestamp dado ou a hora atual local se nenhum timestamp é dado.", você pode checar isso em http://br.php.net/date. Logo usar a função date() com uma variável que você setou não vai rolar.
Para fazer o que você quer você vai ter de tratar a informação armazenada na variável $data_inicio.
Por exemplo, se a sua variável $data_inicio armazena algo do tipo "dd-mm-aaaa", você pode declarar um array e usa explode() na variável $data_inicio e assim obter em cada item do array o dia, o mês e o ano e daí trabalhar com eles e gerar a data final de pagamento.
Bom, eu espero que você tenha entendido a idéia, peço que você poste novamente alguns dados do seu php para podermos desenvolver a solução para o seu script.
Aguardo seu retorno, um abraço.
#5
Posted 15/07/2008, 09:56
uhum eu pensei nisso tbm..
e somar as parcelas no mes. mas o problema vai ser se passar de 12 (dezembro). ae vai ter que mudar o ano e voltar o mes.
vc tem alguma ideia? to pensando aki como fazer.
$separa = explode("-",$data); echo "data: $data_ini dia: $separa[0] mes: $separa[1] ano: $separa[2]";
e somar as parcelas no mes. mas o problema vai ser se passar de 12 (dezembro). ae vai ter que mudar o ano e voltar o mes.
vc tem alguma ideia? to pensando aki como fazer.
#6
Posted 15/07/2008, 10:02
Pois é DAn. Você vai ter que fazer uma rotina que cheque se o mês passou de 12 ou não. Já fiz isso algumas vezes e foi sempre na base dos ifs. Uma idéia que vem direto na cabeça é:
Dessa maneira o mês e o ano são corrigidos.
Bom, espero ter ajudado. Qualquer coisa posta de novo ^^
$mes = $mes + $nroparcelas; if($mes > 12) { $ano++; $mes = $mes - 12; }
Dessa maneira o mês e o ano são corrigidos.
Bom, espero ter ajudado. Qualquer coisa posta de novo ^^
#7
Posted 15/07/2008, 10:27
mt bom!
coube como uma luva aki.
eu tava viajando fazendo por while ¬¬"
esse if ta lindo.
brigadao msm kra! vc me adiantou mt.
agradecido.
abraços!!
coube como uma luva aki.
eu tava viajando fazendo por while ¬¬"
esse if ta lindo.
brigadao msm kra! vc me adiantou mt.
agradecido.
abraços!!
#8
Posted 15/07/2008, 13:33
Hehehe, sem problemas. Fico feliz por ter ajudado.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)