Ir para conteúdo
Daniel A

Cadastrar data Mysql

Recommended Posts

Boa noite a todos, estou fazendo um sistema de fluxo financeiro e preciso gravar no banco os dados de contratos e gerar o fluxo .... só que não estou conseguindo imaginar como montar o calculo das parcelas... exemplo:

 

Aluguel vencimento todo dia 15 (contrato 36 meses) ..... preciso gerar 36 parcelas todo o dia 15 ..... pensei em dar um explode na data atual e ficar somando com o while ... mas não deu muito certo...

 

Alguém ja fez algo parecido ?? 

 

Obrigado!!

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, Daniel A disse:

Boa noite a todos, estou fazendo um sistema de fluxo financeiro e preciso gravar no banco os dados de contratos e gerar o fluxo .... só que não estou conseguindo imaginar como montar o calculo das parcelas... exemplo:

 

Aluguel vencimento todo dia 15 (contrato 36 meses) ..... preciso gerar 36 parcelas todo o dia 15 ..... pensei em dar um explode na data atual e ficar somando com o while ... mas não deu muito certo...

 

Alguém ja fez algo parecido ?? 

 

Obrigado!!

Boa noite veja se alguns destes vai te ajudar

 

Somando dias utéis a uma data específica usando o PHP

 

O que ela faz é pegar a data informada, somar uma quantidade de dias úteis a ela e retornar uma nova data com a soma realizada.

Se você informar à função uma data no formato brasileiro – dd/mm/aaaa – ela irá convertê-la para o padrão americano – aaaa-mm-dd.

Esse padrão americano é utilizado pelo MySQL quando você define um campo com o formato DATE.

Caso sua data esteja armazenada no formato DATETIME a função irá pegar somente a data e excluir o horário.

// #################################################
//             ##########Wa7 Solucion##########
// ########################################################

function somar_dias_uteis($str_data,$int_qtd_dias_somar = 7) {

    // Caso seja informado uma data do MySQL do tipo DATETIME - aaaa-mm-dd 00:00:00
    // Transforma para DATE - aaaa-mm-dd
    $str_data = substr($str_data,0,10);
    // Se a data estiver no formato brasileiro: dd/mm/aaaa
    // Converte-a para o padrão americano: aaaa-mm-dd
    if ( preg_match("@/@",$str_data) == 1 )
    {
        $str_data = implode("-", array_reverse(explode("/",$str_data)));
    }
    $array_data = explode('-', $str_data);
    $count_days = 0;
    $int_qtd_dias_uteis = 0;
    while ( $int_qtd_dias_uteis < $int_qtd_dias_somar )
    {
        $count_days++;
        if ( ( $dias_da_semana = gmdate('w', strtotime('+'.$count_days.' day', mktime(0, 0, 0, $array_data[1], $array_data[2], $array_data[0]))) ) != '0' && $dias_da_semana != '6' )
        {
           $int_qtd_dias_uteis++;
        }
    }
    return gmdate('d/m/Y',strtotime('+'.$count_days.' day',strtotime($str_data)));
}

 

Somar Dias Úteis Segue o link Official

//somar_dias_uteis( '14/11/2013', '3', '' );

// data_limite.php

<?php
require_once 'feriado.php';
/*
  formas diferentes de usar a funcao
  1- qdt de dias uteis a contar apartir de uma data especifica ou fixa você pode passar a data direto nos paremetros da funcao
  function somar_dias_uteis($str_data,$int_qtd_dias_somar = 7,$feriados)
  chamando a funcao
  somar_dias_uteis('09/04/2009','','');
  ou
  $data = date('Y-m-d');
  somar_dias_uteis('$data','','');
  2- nao precisa passar os dias como parametro da funcao tipo function somar_dias_uteis($str_data,$int_qtd_dias_somar,$feriados)
  para chamar a funcao fica
  somar_dias_uteis('09/04/2009','4','');
  ou
  $data = date('Y-m-d');
  somar_dias_uteis('$data','4','');
 */
function somar_dias_uteis( $str_data, $int_qtd_dias_somar, $feriados )
{
    // Caso seja informado uma data do MySQL do tipo DATETIME - aaaa-mm-dd 00:00:00
    // Transforma para DATE - aaaa-mm-dd
    $str_data = substr( $str_data, 0, 10 );
    // Se a data estiver no formato brasileiro: dd/mm/aaaa
    // Converte-a para o padrão americano: aaaa-mm-dd
    if ( preg_match( "@/@", $str_data ) == 1 ) {
        $str_data = implode( "-", array_reverse( explode( "/", $str_data ) ) );
    }
    // chama a funcao que calcula a pascoa
    $pascoa_dt = dataPascoa( date( 'Y' ) );
    $aux_p = explode( "/", $pascoa_dt );
    $aux_dia_pas = $aux_p[0];
    $aux_mes_pas = $aux_p[1];
    $pascoa = "$aux_mes_pas" . "-" . "$aux_dia_pas"; // crio uma data somente como mes e dia
    // chama a funcao que calcula o carnaval
    $carnaval_dt = dataCarnaval( date( 'Y' ) );
    $aux_carna = explode( "/", $carnaval_dt );
    $aux_dia_carna = $aux_carna[0];
    $aux_mes_carna = $aux_carna[1];
    $carnaval = "$aux_mes_carna" . "-" . "$aux_dia_carna";
    // chama a funcao que calcula corpus christi
    $CorpusChristi_dt = dataCorpusChristi( date( 'Y' ) );
    $aux_cc = explode( "/", $CorpusChristi_dt );
    $aux_cc_dia = $aux_cc[0];
    $aux_cc_mes = $aux_cc[1];
    $Corpus_Christi = "$aux_cc_mes" . "-" . "$aux_cc_dia";
    // chama a funcao que calcula a sexta feira santa
    $sexta_santa_dt = dataSextaSanta( date( 'Y' ) );
    $aux = explode( "/", $sexta_santa_dt );
    $aux_dia = $aux[0];
    $aux_mes = $aux[1];
    $sexta_santa = "$aux_mes" . "-" . "$aux_dia";
    $feriados = array( "01-01", $carnaval, $sexta_santa, $pascoa, $Corpus_Christi, "04-21", "05-01", "06-12", "07-09", "07-16", "09-07", "10-12", "11-02", "11-15", "12-25" );
    $array_data = explode( '-', $str_data );
    $count_days = 0;
    $int_qtd_dias_uteis = 0;
    while ( $int_qtd_dias_uteis < $int_qtd_dias_somar ) {
        $count_days++;
        $day = date( 'm-d', strtotime( '+' . $count_days . 'day', strtotime( $str_data ) ) );
        if ( ($dias_da_semana = gmdate( 'w', strtotime( '+' . $count_days . ' day', gmmktime( 0, 0, 0, $array_data[1], $array_data[2], $array_data[0] ) ) ) ) != '0' && $dias_da_semana != '6' && !in_array( $day, $feriados ) ) {
            $int_qtd_dias_uteis++;
        }
    }
    return gmdate( 'd/m/Y', strtotime( '+' . $count_days . ' day', strtotime( $str_data ) ) );
}
//feriado.php
<?php
// dataPascoa(ano, formato);
// Autor: Yuri Vecchi
//
// Funcao para o calculo da Pascoa
// Retorna o dia da pascoa no formato desejado ou false.
//
// ######################ATENCAO###########################
// Esta funcao sofre das limitacoes de data de mktime()!!!
// ########################################################
//
// Possui dois parametros, ambos opcionais
// ano = ano com quatro digitos
//	 Padrao: ano atual
// formato = formatacao da funcao date() http://br.php.net/date
//	 Padrao: d/m/Y
function dataPascoa( $ano = false, $form = "d/m/Y" ) {
    $ano = $ano ? $ano : date( "Y" );
    if ( $ano < 1583 ) {
        $A = ($ano % 4);
        $B = ($ano % 7);
        $C = ($ano % 19);
        $D = ((19 * $C + 15) % 30);
        $E = ((2 * $A + 4 * $B - $D + 34) % 7);
        $F = ( int ) (($D + $E + 114) / 31);
        $G = (($D + $E + 114) % 31) + 1;
        return date( $form, mktime( 0, 0, 0, $F, $G, $ano ) );
    } else {
        $A = ($ano % 19);
        $B = ( int ) ($ano / 100);
        $C = ($ano % 100);
        $D = ( int ) ($B / 4);
        $E = ($B % 4);
        $F = ( int ) (($B + 8) / 25);
        $G = ( int ) (($B - $F + 1) / 3);
        $H = ((19 * $A + $B - $D - $G + 15) % 30);
        $I = ( int ) ($C / 4);
        $K = ($C % 4);
        $L = ((32 + 2 * $E + 2 * $I - $H - $K) % 7);
        $M = ( int ) (($A + 11 * $H + 22 * $L) / 451);
        $P = ( int ) (($H + $L - 7 * $M + 114) / 31);
        $Q = (($H + $L - 7 * $M + 114) % 31) + 1;
        return date( $form, mktime( 0, 0, 0, $P, $Q, $ano ) );
    }
}
// dataCarnaval(ano, formato);
// Autor: Yuri Vecchi
//
// Funcao para o calculo do Carnaval
// Retorna o dia do Carnaval no formato desejado ou false.
//
// ######################ATENCAO###########################
// Esta funcao sofre das limitacoes de data de mktime()!!!
// ########################################################
//
// Possui dois parametros, ambos opcionais
// ano = ano com quatro digitos
//	 Padrao: ano atual
// formato = formatacao da funcao date() http://br.php.net/date
//	 Padrao: d/m/Y
function dataCarnaval( $ano = false, $form = "d/m/Y" ) {
    $ano = $ano ? $ano : date( "Y" );
    $a = explode( "/", dataPascoa( $ano ) );
    return date( $form, mktime( 0, 0, 0, $a[1], $a[0] - 47, $a[2] ) );
}
// dataCorpusChristi(ano, formato);
// Autor: Yuri Vecchi
//
// Funcao para o calculo do Corpus Christi
// Retorna o dia do Corpus Christi no formato desejado ou false.
//
// ######################ATENCAO###########################
// Esta funcao sofre das limitacoes de data de mktime()!!!
// ########################################################
//
// Possui dois parametros, ambos opcionais
// ano = ano com quatro digitos
//	 Padrao: ano atual
// formato = formatacao da funcao date() http://br.php.net/date
//	 Padrao: d/m/Y
function dataCorpusChristi( $ano = false, $form = "d/m/Y" ) {
    $ano = $ano ? $ano : date( "Y" );
    $a = explode( "/", dataPascoa( $ano ) );
    return date( $form, mktime( 0, 0, 0, $a[1], $a[0] + 60, $a[2] ) );
}
// dataSextaSanta(ano, formato);
// Autor: Yuri Vecchi
//
// Funcao para o calculo da Sexta-feira santa ou da Paixao.
// Retorna o dia da Sexta-feira santa ou da Paixao no formato desejado ou false.
//
// ######################ATENCAO###########################
// Esta funcao sofre das limitacoes de data de mktime()!!!
// ########################################################
//
// Possui dois parametros, ambos opcionais
// ano = ano com quatro digitos
// Padrao: ano atual
// formato = formatacao da funcao date() http://br.php.net/date
// Padrao: d/m/Y
function dataSextaSanta( $ano = false, $form = "d/m/Y" ) {
    $ano = $ano ? $ano : date( "Y" );
    $a = explode( "/", dataPascoa( $ano ) );
    return date( $form, mktime( 0, 0, 0, $a[1], $a[0] - 2, $a[2] ) );
}
?>

 

 

 veja aqui no FÓRUM

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso deve calcular corretamente as 36 parcelas.

<?php

//dia 15 do mês corrente
$start = DateTime::createFromFormat('d' , '15');

//intervalo de 1 mês
$interval = new DateInterval('P1M');

//Valida se o dia 15 do mês corrente já não passou
if ($start < (new DateTime()))
{
    //adiciona 1 mês caso seja pro dia 15 do mês que vem
    $start->add($interval);
}

//Calcula os períodos, data inicial + 35 ocorrências
foreach(new DatePeriod($start , $interval , 35) as $key => $date)
{
    $i = $key +1;
    echo "{$i} -> {$date->format('d/m/Y')}\n";
}

Pra entender um pouco mais:

https://forum.imasters.com.br/topic/550659-resolvido-erro-em-dateperiod-php-encontra-2-meses-ao-invés-de-3/

https://forum.imasters.com.br/topic/535853-como-pegar-a-diferença-entre-datas/?do=findComment&amp;comment=2139989

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
×

Informação importante

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