Ir para conteúdo
Fórum Script Brasil
  • 0

Calendario php


LuizHolambra

Pergunta

Olá, amigos

Estou desenvolvendo um sistema de agendamento para um cliente, estou usando um calendário que está func perfeitamente, só tenho um problema, como faço para não aparecer o link do sábado, domingo e feriados, cliente quer evitar o agendamento destes dias.

Aguardo um ajuda

Segue o cod. abaixo:

<?php

class Calendario

{

function cal($mes="",$ano="") {

////////////////////////////

$unidade=$_GET['unidade'] ;

////////////////////////////

$nomeMes = array(1 => "Janeiro", 2 => "Fevereio", 3 => "Março", 4 => "Abril", 5 => "Maio", 6 => "Junho", 7 => "Julho", 8 => "Agosto", 9 => "Setembro", 10 => "Outubro", 11 => "Novembro", 12 => "Dezembro");

($_REQUEST["mes"] ? $mes = $_REQUEST["mes"] : false);

($_REQUEST["ano"] ? $ano = $_REQUEST["ano"] : false);

(!$mes ? $mes = (int)date("m") : false);

(!$ano? $ano = (int)date("Y") : false);

($mes == "12" ? $prox = "?mes=1&ano=.date("Y",mktime(0,0,0,1,1,$ano+1))."" : $prox = "?mes=".date("n",mktime(0,0,0,$mes+1,1,$ano))."&ano=$ano&unidade=$unidade");

($mes == "1" ? $ant = "?mes=12&ano=".date("Y",mktime(0,0,0,$mes,1,$ano-1))."" : $ant = "?mes=".date("n",mktime(0,0,0,$mes-1,1,$ano))."&ano=$ano&unidade=$unidade");

$totalDias = date("t", mktime(0,0,0,$mes,1,$ano));

for($i=1; $i<=$totalDias; $i++) $dias[] = $i;

$weekStart = date("w",mktime(0,0,0,$mes,1,$ano));

$tmp .= '<table width="510" height="300" border="0" cellpadding="0" cellspacing="2" align=center>';

$ano1=date($ano);

$tmp .= "<tr>

<td align=center height=45><a href=$ant><img src=images/prev.png width=50 height=45 border=0 /></a></td>

<td colspan=5 align=center class=tit_mes>$nomeMes[$mes] / $ano1</td>

<td align=center><a href=$prox><img src=images/next.png width=50 height=45 border=0 /></a></td>

</tr>";

unset($ano1);

$hoje = date("d");

$tmp .= "<tr align=center>

<td width=15%><font color=#ff0000>Dom</font></td>

<td width=14%>Seg</td>

<td width=14%>Ter</td>

<td width=14%>Qua</td>

<td width=14%>Qui</td>

<td width=14%>Sex</td>

<td width=15%>Sab</td>

</tr>

<tr>";

//$mes2=date('m');

$unidade=$_GET['unidade] ;

$tratamento = $_POST["tratamento"];

for($i=0; $i<$weekStart; $i++){

$tmp .= "<td>&nbsp;</td>";

++$ct;

}

foreach($dias as $d){

//$tmp .= "<td align='center'><a href=# onclick='alert(\"hoje: $d/$mes/$ano\")'>$d</a></td>";

if($d == $hoje)

//$tmp .= "<td align='center'><a href=agenda.php?data=".$d.$mes.$ano."><font color=#ff0000>".$d."</font></a></td>";

$tmp .= "<td align='center'><a href=agenda.php?data=".str_pad($d, 2, "0", STR_PAD_LEFT).str_pad($mes, 2, "0", STR_PAD_LEFT).$ano."&unidade=".$unidade."><font color=#ff0000 size=3>".$d."</font></a></td>";

//$tmp .= "<td align='center'><a href=# onclick='alert(\"hoje: $d/$mes/$ano\")'><font color=#ff0000>$d</font></a></td>";

else

$tmp .= "<td align='center'><a href=agenda.php?data=".str_pad($d, 2, "0", STR_PAD_LEFT).str_pad($mes, 2, "0", STR_PAD_LEFT).$ano."&unidade=".$unidade."><font size=3>".$d."</font></a></td>";

//$tmp .= "<td align='center'><a href=# onclick='alert(\"hoje: $d/$mes/$ano\")'>$d</a></td>";

////////////////////

if($ct == "6"){

$tmp .= "<tr>";

$ct = -1;

}

++$ct;

}

$tmp .= "</table>";

return $tmp;

}

}

$c = new Calendario;

print $c->cal(); //inicia o calendario no mes e ano atual

//print $c->cal("9","2005"); //inicia o calendario no mes 9 do ano 2005

echo "<center><br />";

echo "<a href=\"logout.php\">Sair do Sistema</a>";

echo "<br />";

echo "<a href=\"java script:history.go(-1)\"><img src=\"images/voltar.png\" width=\"88\" height=\"39\" border=0></a>";

echo "</center>";

?>

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá,

Existe um algoritimo para o calculo dos feriados moveis se chama algoritimo de gauss...

uma implementação dele ficaria mais ou menos assim...

public function vferiado($dia1,$mes1,$ano){

$dia=0;$mes=0;

//Aqui informo os feriados fixos...

$feriados = array(0=>array('dia'=>1,'mes'=>1),1=>array('dia'=>21,'mes'=>4),2=>array('dia'=>1,'mes'=>5),3=>array('dia'=>7,'mes'=>9),

4=>array('dia'=>12,'mes'=>10),5=>array('dia'=>2,'mes'=>11),6=>array('dia'=>15,'mes'=>11), 7=>array('dia'=>25,'mes'=>12));

// E aqui se inicia o algoritimo de gauss para gerar as datas dos feriados com datas não fixas...

if(($ano>1582)&&($ano<1699)){

$x=22;

$y=2;

}else{

if(($ano>1700)&&($ano<1799)){

$x=23;

$y=3;

}else{

if(($ano>1800)&&($ano<1899)){

$x=24;

$y=4;

}else{

$x=24;

$y=5;

}

}

}

$a = $ano % 19;

$b= $ano % 4;

$c= $ano % 7;

$d = ((19 * $a)+ $x)%30;

$e = ((2* $b)+(4 * $c)+(6 * $d)+$y) % 7;

$dia= $d+$e-9;

switch($dia){ // aqui são tratadas as exceções...

case 26 : $dia = 19; break;

case 25 : $dia = 18; break;

default : break;

}

if(($d+$e)<10){

$pascoa = array('dia'=>$dia,'mes'=>3);

$mes = 3;

}else{

$pascoa = array('dia'=>$dia,'mes'=>4);

$mes = 4;

}

$feriados[]=$pascoa;

$sexta_feira_santa =array('dia'=>(int)date('d',mktime(0,0,0,$mes,$dia-2,$ano)),'mes'=>(int)date('m',mktime(0,0,0,$mes,$dia,$ano)));

$feriados[]= $sexta_feira_santa;

$terca_feira_carnaval =array('dia'=>(int)date('d',mktime(0,0,0,$mes,$dia-47,$ano)),'mes'=>(int)date('m',mktime(0,0,0,$mes,$dia-47,$ano)));

$feriados[]= $terca_feira_carnaval;

$quarta_de_cinzas = array('dia'=>(int)date('d',mktime(0,0,0,$mes,$dia-46,$ano)),'mes'=>(int)date('m',mktime(0,0,0,$mes,$dia-46,$ano)));

$feriados[]= $quarta_de_cinzas;

$corpus_christi = array('dia'=>(int)date('d',mktime(0,0,0,$mes,$dia+60,$ano)),'mes'=>(int)date('m',mktime(0,0,0,$mes,$dia+60,$ano)));

$feriados[] = $corpus_christi;

$achou = false;

for($i =1;$i<=count($feriados)-1;$i++){

if(($dia1 == $feriados[$i]['dia'])and($mes1 == $feriados[$i]['mes'])){

$achou = true;

}

}

return $achou;

}

Nessa função que criei, você passa como parametro dia, mes e ano e ala ira lhe retornar verdadeiro caso seja e false se não...

Espero que tenha lhe ajudado...

Abraços.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...