Jump to content


GreenOverflow

Member Since 05/07/2011
Offline Last Active 14/02/2021, 18:56
-----

#1021416 AJUDA COM LOOP DE DATAS EM PHP

Posted by GreenOverflow on 01/02/2015, 14:57

E AI GALERA BELEZA TO COM UMA DOR DE CABEÇA EM UM CÓDIGO QUE NÃO CONSIGO RESOLVER DE MANEIRA NENHUMA, GOSTARIA DA AJUDA DE VOCÊS, É O SEGUINTE, ESTOU DESENVOLVENDO UM SISTEMA DE PAGAMENTOS COMO SE FOSSE UM GERADOR DE BOLETOS, FUNCIONARIA QUASE DA MESMA FORMA, EU COLOCO A DATA DE PAGAMENTO, O VALOR DO PRODUTO E O SISTEMA GERA A LISTA DE DATAS À PARTIR DA DATA DE PAGAMENTO SOMANDO AS PARCELAS, TENHO O SEGUINTE CÓDIGO:
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<?php
 
$datadepagamento = "31/01/2015";
$parcelas = "10";
for($i=0;$i<=$parcelas-1;$i++){
echo date("d/m/Y", strtotime(str_replace("/", "-", $datadepagamento)."+$i month"));
echo"<br>";
}
 
?>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
O RESULTADO SAI O SEGUINTE:
 
31/01/2015
03/03/2015
31/03/2015
01/05/2015
31/05/2015
01/07/2015
31/07/2015
31/08/2015
01/10/2015
31/10/2015
 
PORÉM JÁ NO MÊS DE MARÇO COMO POR **EXEMPLO** EU GOSTARIA QUE ELE RESPEITASSE A DATA ORIGINAL, MAS MANTIVESSE A ULTIMA DATA DO MÊS, E CONTINUARIA O LAÇO NORMALMENTE, JÁ TENTEI USAR O "date("t/m/Y")", MAIS SEM SUCESSO, GOSTARIA DO SEGUINTE RESULTADO:
 
31/01/2015
28/02/2015
31/03/2015
30/04/2015
31/05/2015
30/06/2015
31/07/2015
31/08/2015
30/09/2015
31/10/2015
 
AGRADEÇO DESDE JÁ A AJUDA DE VOCÊS, ABRAÇOS.

Fala galera beleza, depois de tantas tentativas um amigo meu me ajudou ele e programador e modificou o código pra mim e ficou funcionando perfeitamente da forma que eu precisava, ficou semelhante a um sistema bancário do bradesco e eu quero compartilhar com vocês caso um dia precisem, vejam como ficou:
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<?php
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
CRÉDITOS: ANDREIKI CARANA (www.andreiki.com)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
$datadepagamento = "31/01/2015";
$parcelas = "15";
 
//Monta e inicia o laço, inicia pelo "0" pra manter a primeira data e remove a ultima pra manter a quantidade de parcelas definida pelo usuário
for($i=0;$i<=$parcelas-1;$i++){
 
//Divide a data original para manipulação
$d = substr($datadepagamento, 0, 2); //Dia do pagamento (31)
$m = substr($datadepagamento, 3, 2); //Mês do pagamento (01)
$a = substr($datadepagamento, 6, 4); //Ano do pagamento (2015)
 
//Divide a data faturada, obtém o ultimo dia do mês e remove 3 dias no caso for dias 29,30,31
$dd = substr(date("t/m/Y", strtotime("$d-$m-$a -3 days +$i month")), 0, 2); //Dia do pagamento (31 -3 = 28 "+1 mês")
$mm = substr(date("t/m/Y", strtotime("$d-$m-$a -3 days +$i month")), 3, 2); //Mês do pagamento (01 "+1 mês")
$aa = substr(date("t/m/Y", strtotime("$d-$m-$a -3 days +$i month")), 6, 4); //Ano do pagamento (2015 "+1 mês")
 
//Verifica se a data existe pelo laço, se ela existir ela percorre normalmente, mantendo o dia original definida pelo usuário, se não existe (else) ela obtém o ultimo dia do mês e da a continuidade na "função".
if(checkdate($mm,$d,$aa)){$datafinal = "$d/$mm/$aa";}else{$datafinal = "$dd/$mm/$aa";}
 
//Printa o resultado final
echo"$datafinal<br/>";
 
//Finaliza o laço
}
 
?>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
RESULTADO FINAL:
 
31/01/2015
28/02/2015
31/03/2015
30/04/2015
31/05/2015
30/06/2015
31/07/2015
31/08/2015
30/09/2015
31/10/2015
30/11/2015
31/12/2015
31/01/2016
29/02/2016
31/03/2016
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=



#1017835 Order By Mysql Ajuda

Posted by GreenOverflow on 06/04/2012, 15:48

É O SEGUINTE TENHO UMA ESTRUTURA EM UMA VARCHAR 255 QUE CONTÉM OS VALORES DE UM SITE DE CATÁLOGO DE PRODUTOS NÃO ESTOU CONSEGUINDO MANTER EM ORDEM CRESCENTE PELAS FORMATAÇÕES DOS VALORES:

1.190,00
1.970,00
1.380,00
2.450,00
830,00
650,00
590,00
430,00
630,00
650,00
1.490,00
1.190,00
90,00
1.500,00
215,00
60,00
2,00
54,00
79,00
98,00
215,00
1,00
1.870,00
2.690,00
1.390,00
1.980,00
1.980,00
1.980,00
1.890,00
3.960,00
2.950,00
1.970,00
830,00
490,00
1.700,00
2.180,00
1.970,00
1.570,00


JÁ TENTEI USANDO ISSO MAIS NÃO TIVE SUCESSO

ORDER BY replace(replace('valor', ',', ''), '.', '') ASC
ORDER BY replace(replace('valor', ',', ''), '.', '') DESC
ORDER BY CAST(valor AS DECIMAL(10,2)) ASC
ORDER BY CAST(valor AS DECIMAL(10,2)) DESC
ORDER BY format(valor, 2) ASC


QUERO Q OS PREÇOS FIQUEM EM ORDEM CRESCENTE, TIPO COMEÇANDO PELO 1,00 OBS NA ESTRUTURA NÃO CONTÉM O R$ SOMENTE COMO MOSTREI ACIMA, AGRADEÇO A TODOS, ABRAÇOS.

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



gente não precisa mais já consegui, fui fazendo umas gabiarras e finalmente consegui, ta ai o código pra quem tava sofrendo igual eu:

VALORES EM ORDEM CRESCENTE - XX.XXX,00 -> X,00
ORDER BY cast(replace(replace(valor, ',', ''), '.', '') as decimal(10,2)) ASC


VALORES EM ORDEM DECRESCENTE - X,00 -> XX.XXX,00
ORDER BY cast(replace(replace(valor, ',', ''), '.', '') as decimal(10,2)) DESC

FICOU PERFEITO:

EM ORDEM CRESCENTE
0,80
1,00
2,50
3,50
5,00
6,50
10,00
565,00
10.300,00


EM ORDEM DESCRESCENTE
10.300,00
565,00
10,00
6,50
5,00
3,50
2,50
1,00
0,80


AGRADEÇO A TODOS, ABRAÇOS.


IPB Skin By Virteq