Ir para conteúdo
Eduardo M

Dificuldades de colocar no calendário os anos passando

Recommended Posts

Olá galera, tudo bem? 
Estou precisando de uma ajuda de vocês acontece, que eu estou criando um calendário, porem esse calendário não passa o ano quando eu aperto as setas pro lado!
Vou disponibilizar os códigos para  alguém me ajudar pois estou precisando muito deste calendário!

 

calendario.php

<?php
    function num($num){
        return ($num < 10) ? '0'.$num : $num;
    }

    function montaEventos($info){
        global $pdo;
        //tabela, data, titulo
        $tabela = $info['tabela'];
        $data = $info['data'];
        $titulo = $info['titulo'];
        $link = $info['link'];
		$vagas = $info['vagas'];

        $eventos = $pdo->prepare("SELECT * FROM `".$tabela."` WHERE `".$data."` ");
        $eventos->execute();

        $retorno = array();
        while($row = $eventos->fetchObject()){
            $dataArr = date('Y-m-d', strtotime($row->{$data}));
            $retorno[$dataArr] = array(
                'titulo' => $row->{$titulo}, 
				'link' => $row->{$link},
				'vagas' => $row->{$vagas}
            );
        }
        return $retorno;
    }


    function diasMeses(){
        $retorno = array();

        for($i = 1; $i<=12;$i++){
            $retorno[$i] = cal_days_in_month(CAL_GREGORIAN, $i, date('Y'));
        }

        return $retorno;
    }

    function montaCalendario($eventos = array()){
        $daysWeek = array(
            'Sun',
            'Mon',
            'Tue',
            'Wed',
            'Thu',
            'Fri',
            'Sat'
        );
        $diasSemana = array(
            'Dom',
            'Seg',
            'Ter',
            'Qua',
            'Qui',
            '---',
            'Sab'
        );

        $arrayMes = array(
            1 => 'Janeiro',
            2 => 'Fevereiro',
            3 => 'Março',
            4 => 'Abril',
            5 => 'Maio',
            6 => 'Junho',
            7 => 'Julho',
            8 => 'Agosto',
            9 => 'Setembro',
            10 => 'Outubro',
            11 => 'Novembro',
            12 => 'Dezembro'
        );
		
	If($_GET['mes'] and $_GET['ano'])
	{
	   $mes = $_GET['mes'];
	  
	   $ano = $_GET['ano'];
	}
	Else
	{
	   $mes = date("m");
	   $ano = date("Y");
	}
	$t_mes = date("t", mktime(0, 0, 0, $mes, 1, $ano)); 
	$mes_ant = date("m", mktime(0, 0, 0, $mes, 0, $ano));
	$ano_ant = date("Y", mktime(0, 0, 0, $mes, 0, $ano));

	$mes_post = date("m", mktime(0, 0, 0, $mes, $t_mes+1, $ano));  
	$ano_post = date("Y", mktime(0, 0, 0, $mes, $t_mes+1, $ano));  

        $diasMeses = diasMeses();
        $arrayRetorno = array();

        for($i =1; $i <= 12; $i++){
            $arrayRetorno[$i] = array();
            for($n=1; $n<= $diasMeses[$i]; $n++){
                $dayMonth = gregoriantojd($i, $n, date('Y'));
                $weekMonth = substr(jddayofweek($dayMonth, 1),0,3);
                if($weekMonth == 'Mun') $weekMonth = 'Mon';
                $arrayRetorno[$i][$n] = $weekMonth;
            }
        }

        echo '<a href="#" id="volta">&laquo;</a><a href="#" id="vai">&raquo;</a>';
        echo '<table border="0" width="100%">';
        foreach($arrayMes as $num => $mes){
            echo '<tbody id="mes_'.$num.'" class="mes">';
            echo '<tr class="mes_title"><td colspan="7">'.$mes.' - '.date('Y').'</td></tr>';
            echo '<tr class="dias_title">';
            foreach($diasSemana as $i => $day){
                echo '<td>'.$day.'</td>';
            }
            echo '</tr><tr>';
            $y = 0;
            foreach($arrayRetorno[$num] as $numero => $dia){
                $y++;
                if($numero == 1){
                    $qtd = array_search($dia, $daysWeek);
                    for($i=1; $i<=$qtd; $i++){
                        echo '<td></td>';
                        $y+=1;
                    }
                }
                if(count($eventos) > 0){
                    $month = num($num);
                    $dayNow = num($numero);
                    $date = date('Y').'-'.$month.'-'.$dayNow;
                    if(in_array($date, array_keys($eventos))){
                        $evento = $eventos[$date];
						
						if($evento['vagas'] <> 0){							
                        	echo '<td class="evento2"><a class="dcontexto" href="'.$evento['link'].'" target="_parent">'.$numero.'<span>Vagas '.$evento['vagas'].'</span></a></td>';
						}else{ 
							echo '<td class="evento1"><a class="dcontexto" target="_parent">'.$numero.'<span> Não há mais Vagas</span></a></td>';}
                    }else{
                        echo '<td class="dia_'.$numero.'" ><a href="../../agenda.php?data='.$numero.'-'.$mes.'" class="numeros"  target="_parent">'.$numero.'</a></td>';
                    }
                }else{
                    echo '<td class="dia_'.$numero.'">'.$numero.'</td>';
                }
                if($y == 7){
                    $y=0;
                    echo '</tr><tr>';
                }
            }
            echo '</tr></tbody>';
        }
        echo '</table>';
    }
?>

e na minha duvida e no JS

 

js/functions.js

$(function(){
    var data = new Date();
    var mesAtual = data.getMonth()+1;
    var diaAtual = data.getDate();
	var anoAtual = data.getFullYear();
	var dataAtual = diaAtual+'/'+mesAtual+'/'+anoAtual;
	var contCalendario = 0;
	
    $('#mes_'+mesAtual).show().find('.dia_'+diaAtual).addClass('atual');

    function hideShow(){
        if(mesAtual > 12){
            mesAtual = 1;
			anoAtual = +1;
			
        }else if(mesAtual < 1){
            mesAtual = 12;
			anoAtual = -1;
        }

        $('.mes').hide();
        $('#mes_'+mesAtual).show();
    }

    $('#vai').on('click', function(e){
        e.preventDefault();
        mesAtual++;
        hideShow();

        return false;
    });

     $('#volta').on('click', function(e){
        e.preventDefault();
        mesAtual--;
		if(mesAtual < 1){
			anoAual - -1;}
        hideShow();

        return false;
    });
});

eu acho que estou errando no JAVASCRIPT

 

para quem for me ajudar vou deixar o link do calendário.

http://www.nebbclean.com.br/calendario.rar

 

Agradeço!


Att,

Eduardo Moura

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 fdesign
      Boa tarde,
      Estou com uma grande duvida e dilema. Como poderei fazer para sincronizar o calendário google, com o meu email profissional? Na vez de usar o email @gmail.com usar @minhaempresa.com
       
      Há alguma forma gratuita? E no android / ios a conta a ser utilizada é a profissional e não a do gmail.
       
      Obrigado amigos
    • Por tony_lu
      Ola pessoal, preciso de uma ajuda...estou usando um campo date onde o usuário seleciona a data no calendário e submete o formulário!
       
      <form method="post" id="form" name="form"> <input type="date" name="data" id="data" value=""> </form> Eu preciso que o usuario ao abrir o calendario e escolher o dia desejado, ao clicar ja submeta o formulario sem que precise clicar em um botão para enviar! Podem me ajudar?!
       
      Obrigado!
    • Por ggbelgamo
      Pessoal estou tentando exibir os eventos no meu calendário, porém não estou tendo sucesso. Sou iniciante em Jquery e após pesquisar em vários sites e consultar vários exemplos não consegui exibir os eventos. O calendário é exibido, os eventos não!
       
      Minha controller (ASP MVC):
      var listCalender = new List<object>(); var dal = new DAL.PosVendasParticipantesDAL(); var calender = dal.Todos(); if (calender.Rows.Count > 0) { foreach (DataRow dr in calender.Rows) { var entity = new Modelos.PosVendasParticipantesModelo(); entity.ID = Convert.ToInt32(dr["ID"]); entity.ProximaLigacao = Convert.ToDateTime(dr["PROXIMA_LIGACAO"]); listCalender.Add(new { title = entity.ID, start = entity.ProximaLigacao, }); } } return Json(listCalender, JsonRequestBehavior.AllowGet);  
      Após o retorno Json, obtenho os seguintes dados:
      [{"title":1,"start":"\/Date(1469725020000)\/"},{"title":2,"start":"\/Date(1469725020000)\/"},{"title":3,"start":"\/Date(1470674040000)\/"} É exatamente os parâmetros que o fullCalendar exige pra exibir eventos, acho que estou sabendo interpretar o Json retornado!
       
      Jquery:
      <script> $(document).ready(function() { $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,basicWeek,basicDay' }, defaultDate: '2018-03-12', navLinks: true, // can click day/week names to navigate views editable: true, eventLimit: true, // allow "more" link when too many events events: $(function (start, end, timezone, callback) { $.ajax({ dataType: "json", type: "POST", contentType: "application/json; charset=utf-8", url: "/Home/GetEvents", success: function (dados) { alert('foi'); $(dados).each(function (i) { //document.writeln("<p>ID: " + dados[i].id + " | Data: " + dados[i].Start + "</p>") events.push({ title: $(this).attr('title'), start: $(this).attr('start') }); }); } }); }) }); }); </script>  
    • Por ggbelgamo
      Sou iniciante em ASP MVC e não estou conseguindo fazer com que o meu controller retorne os dados do banco no calendário, ele só retorna uma página em branco com o Json. Tentei seguir alguns exemplos pesquisando na internet mas não obtive sucesso!
       
      Controller
      public JsonResult Calendario() { var verCookie = Request.Cookies.Get(GerarHashMd5("idUser")); if (verCookie == null) { RedirectToAction("Login"); } var listCalender = new List<Modelos.PosVendasParticipantesModelo>(); var dal = new DAL.PosVendasParticipantesDAL(); var calender = dal.Todos(); if (calender.Rows.Count > 0) { foreach (DataRow dr in calender.Rows) { var entity = new Modelos.PosVendasParticipantesModelo(); entity.ID = Convert.ToInt32(dr["ID"]); entity.ProximaLigacao = Convert.ToDateTime(dr["PROXIMA_LIGACAO"]); listCalender.Add(entity); } } return Json(listCalender.ToArray(), JsonRequestBehavior.AllowGet);  
      Jquery
      $(document).ready(function () { $('#calendar').fullCalendar({ header: { left: 'prev,next today', center: 'title', right: 'month,agendaWeek,agendaDay,listWeek' }, defaultDate: '2018-03-12', navLinks: true, // can click day/week names to navigate views editable: true, eventLimit: true, // allow "more" link when too many events events: "/Home/Calendario", }); });  
    • Por ern1955
      Boa noite a todos, eu estudo c++ através de video aula, e num exercício que é fazer um calendário anual, eu digito o ano, e apenas o primeiro mês esta correto, os outros meses os dias que correspondem a semana esta certo mais nos dias trocados, gostaria de saber se alguém poderia me ajudar, onde eu estou errando!
       
      #include<iostream>
      #include <iomanip>
       
      /*
      Dados dia, mês e ano de uma data gregoriana, escreva uma função que converta essa data para data juliana correspondente. Use a seguinte fórmula:
      Data juliana = (1461*(ano + 4800 +(mes - 14)/12) )/4 + (367 * (mes - 2 - 12 * (( mes - 14)/12)))/ 12 - (3*((ano+4900+(mes-14)/12)/100))/4+dia-32075.
       
      Escreva uma função que receba dia, mês e ano e calcule o dia da semana em que caiu essa data. Para isso, basta transformar a data gregoriana em
      juliana e calcular o resto da divisão da data juliana por 7. A função deverá retornar um número entre 0 e 6 indicando os seguintes resultados:
      0 - Segunda-feira
      1 - Terça-feira
      2 - Quarta-feira
      3 - Quinta-feira
      4 - Sexta-feira
      5 - Sábado
      6 - Domingo
       
      Faça um calendario anual
       
      */
      using namespace std;
       
      int juliana(int dia, int mes, int ano);
      int diadasemana(int numero);
      string meses(int m);
      int dia_mes(int a);
      bool bissexto(int n);
      void calendario(int num, int d);
       
      static int ano;
       
      int main(){
       
      setlocale(LC_ALL, "Portuguese");
       
      int conv=0;
      int diames=0;
       
      cout<<"Ano: ";
      cin>>ano;
      cout<<endl;
       
      for(int mes=1; mes<=12; mes++){
      diames = dia_mes(mes);
      cout<<meses(mes);
      cout<<"\nSeg Ter Qua Qui --- Sab Dom\n";
      for(int dia=1; dia<=diames; dia++){
       
      conv = diadasemana(juliana(dia, mes, ano));
       
      calendario(conv, dia);
       
      if(dia % 7 == 0){
       
      cout<<endl;
       
      }
       
      }
       
      cout<<endl;
       
      }
       
      return 0;
      }
       
      //-------------------------------------------------------//
       
      void calendario(int num, int d){
       
      switch(num){
       
      case 0:
      printf("%3d ", d);
      break;
       
      case 1:
      printf("%3d ", d);
       
      break;
      case 2:
      printf("%3d ", d);
      break;
       
      case 3:
      printf("%3d ", d);
      break;
       
      case 4:
      printf("%3d ", d);
      break;
       
      case 5:
      printf("%3d ", d);
      break;
       
      case 6:
      printf("%3d ", d);
      break;
       
      }
       
       
      }
       
      //-------------------------------------------------------//
       
      int juliana(int dia, int mes, int ano){
       
      return (1461*(ano + 4800 +(mes - 14)/12) )/4 + (367 * (mes - 2 - 12 * (( mes - 14)/12)))/ 12 - (3*((ano+4900+(mes-14)/12)/100))/4+dia-32075;
       
      }
       
      //-------------------------------------------------------//
       
      int diadasemana(int numero){
       
      return numero % 7;
      }
       
      //-------------------------------------------------------//
       
      string meses(int m){
       
      switch(m){
       
      case 1: return "Janeiro";
       
      case 2: return "\nFevereiro";
       
      case 3: return "\nMarço";
       
      case 4: return "\nAbril";
       
      case 5: return "\nMaio";
       
      case 6: return "\nJunho";
       
      case 7: return "\nJulho";
       
      case 8: return "\nAgosto";
       
      case 9: return "\nSetembro";
       
      case 10: return "\nOutubro";
       
      case 11: return "\nNovembro";
       
      default: return "\nDezembro";
       
      }
      }
       
      //-------------------------------------------------------//
       
       
      int dia_mes(int a){
       
      if(a == 1 || a == 3 || a == 5 || a == 7 || a == 8 || a == 10 || a == 12){
       
      return 31;
       
      }else if(a == 2){
       
      if(bissexto(ano) == true){
       
      return 29;
       
      }else{
       
      return 28;
       
      }
       
       
      }else{
       
      return 30;
      }
      }
       
      //-------------------------------------------------------//
       
      bool bissexto(int n){
       
      if((n % 4 == 0) &&
      (n % 100 != 0)){
       
      return true;
       
      }else if(n % 400 == 0){
       
      return true;
       
      }else{
       
      return false;
      }
       
      }
×

Informação importante

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