Jump to content


pedrokl

Member Since 23/01/2010
Offline Last Active 04/03/2010, 18:22
-----

Topics I've Started

Calendario

17/02/2010, 16:49

Ola, sou iniciante em php e estou fazendo um sistema tipo agenda, a pessoa pode ver os dias do mes/ano, adicionar, editar e remover eventos para o dia escolhido e pode mudar para a pagina desejada atraves de um popUp com um calendario, tipo folhinha. Segue abaixo a foto do calendario.

Posted Image

peguei um script de calendario por ai, alterei algumas coisas, mas estou com um problema, alias dois problemas:

- Eu queria que mostrasse, assim como mostra o dia de hoje, os dias que tem alguma coisa agendada no banco;

Já tentei de todas as formas, fazendo while (mysql_fetch_array), for mas nao consegui bons resultados. Segue o codigo abaixo.

calendario.php
<?php

$ames = $_GET['mes'];
$aano = $_GET['ano'];

// Seta de mais mes

$omes = $ames + 1;
$nmes = mktime(0,0,0, $omes, 1, $aano);
$pmes = strftime("%m", $nmes);

if($pmes == 1):
	$oano = $aano+1;
	$nano = mktime(0,0,0, $ames, 1, $oano);
	$pano = strftime("%Y", $nano);
else:
	$pano = $aano;
endif;

// Seta de menos mes

$elmes = $ames - 1;
$newmes = mktime(0,0,0, $elmes, 1, $aano);
$mmes = strftime("%m", $newmes);

if($mmes == 12):
	$elano = $aano - 1;
	$newano = mktime(0,0,0, $ames, 1, $elano);
	$mano = strftime("%Y", $newano);
else:
	$mano = $aano;
endif;

$ano = $aano; //Pega o ano
$cont = 0;
$dia = date("d");//Pega o dia
$dias = array();//Array que irá guardar os dias do mês
$mes = $ames;//Pega o mês
$totalDias = date("t", mktime(0, 0, 0, $ames, $adia, $aano));//Pega a qtd de dias do mês
$primeiroDia = date("D", mktime(0, 0, 0, $ames, 1, $aano));//Vê em que dia da semana caiu o 1º dia do mês

switch($ames):
	case 1:	$ames2 = "janeiro"; break;
	case 2:	$ames2 = "fevereiro"; break;
	case 3:	$ames2 = "março"; break;
	case 4:	$ames2 = "abril"; break;
	case 5:	$ames2 = "maio"; break;
	case 6:	$ames2 = "junho"; break;
	case 7:	$ames2 = "julho"; break;
	case 8:	$ames2 = "agosto"; break;
	case 9:	$ames2 = "setembro"; break;
	case 10: $ames2 = "outubro"; break;
	case 11: $ames2 = "novembro"; break;
	case 12: $ames2 = "dezembro"; break;
endswitch;

switch($mes):
	case 1:	$mes2 = "janeiro"; break;
	case 2:	$mes2 = "fevereiro"; break;
	case 3:	$mes2 = "março"; break;
	case 4:	$mes2 = "abril"; break;
	case 5:	$mes2 = "maio"; break;
	case 6:	$mes2 = "junho"; break;
	case 7:	$mes2 = "julho"; break;
	case 8:	$mes2 = "agosto"; break;
	case 9:	$mes2 = "setembro"; break;
	case 10: $mes2 = "outubro"; break;
	case 11: $mes2 = "novembro"; break;
	case 12: $mes2 = "dezembro"; break;
endswitch;

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Account System - Calendario</title>
<script type="text/javascript" src="js/javascript.js"></script>
<link rel="stylesheet" type="text/css" href="css/calendario.css" media="screen"/>
<link rel="icon" href="img/favicon.ico" type="image/x-icon">
</head>

<body>
<div id="seta">
	<?php echo "<a href='calendario.php?mes=".$mmes."&ano=".$mano."'><img src='img/calsetesq.jpg' /></a>" ?>
</div>
<div id="seta" class="dir">
	<?php echo "<a href='calendario.php?mes=".$pmes."&ano=".$pano."'><img src='img/calsetdir.jpg' /></a>" ?>
</div>
<table class="calendario" cellspacing="0">
	<tr>
		<td colspan=7 class="topo"><?php echo $ames2." / ".$aano ?></td>
	</tr>
	<tr>
		<td class="dia" style="color: #FF0000;">D</td>
		<td class="dia">S</td>
		<td class="dia">T</td>
		<td class="dia">Q</td>
		<td class="dia">Q</td>
		<td class="dia">S</td>
		<td class="dia">S</td>
	</tr>
<?php
include ("session.php"); // Guarda os dados da sessao
include ("../conexao.php"); // Faz a conexao com o banco

$sql = "SELECT * FROM eventos WHERE usuario = '$login' ORDER BY dia AND mes AND ano" or die (mysql_error()); // Selecionando no banco
$qr = mysql_query($sql) or die (mysql_error()); // Query

$ames = $_GET['mes'];
$aano = $_GET['ano'];
$ano = $aano; //Pega o ano
$anoatual = date("Y");
$cont = 0;
$dia = date("d");//Pega o dia
$dias = array();//Array que irá guardar os dias do mês
$mes = $ames;//Pega o mês
$mesatual = date("m"); //Pega o mês atual
$totalDias = date("t", mktime(0, 0, 0, $ames, 1, $aano));//Pega a qtd de dias do mês
$primeiroDia = date("D", mktime(0, 0, 0, $ames, 1, $aano));//Vê em que dia da semana caiu o 1º dia do mês

//Aqui irá adicionar os dias do mês no array
for($d = 0; $d < $totalDias; $d++)$dias[$d] = array_push($dias, $d+1);

switch($primeiroDia):
	case 'Mon':	$primeiroDia = "segunda-feira";	$pos = 1; break;
	case 'Tue':	$primeiroDia = "terça-feira"; $pos = 2; break;
	case 'Wed':	$primeiroDia = "quarta-feira"; $pos = 3; break;
	case 'Thu':	$primeiroDia = "quinta-feira"; $pos = 4; break;
	case 'Fri':	$primeiroDia = "sexta-feira"; $pos = 5; break;
	case 'Sat':	$primeiroDia = "sábado"; $pos = 6; break;
	case 'Sun':	$primeiroDia = "domingo"; $pos = 0; break;
endswitch;

for($linha = 0; $linha < 6; $linha++):
	echo "<tr>";
	for($coluna = 0; $coluna < 7; $coluna++):
		$pos2 = $cont - $pos;
		
		// Parametro para o javascript:paginaCal(dia, mes, ano)
		$url = $dias[$pos2].",".$mes.",".$ano;

		if(empty($dias[$pos2])):
		echo "<td class='blank'> </td>";
		else:
			if(($mes == $mesatual) && ($ano == $anoatual)): //Para ver se o mes e o ano da folhinha é o atual
				if($dias[$pos2] == $dia):
					echo "<td class='diahoje'><a href='javascript:paginaCal(".$url.");'>".$dias[$pos2]."</td></a>";
				else:
					echo "<td class='normal'><a href='javascript:paginaCal(".$url.");'>".$dias[$pos2]."</td></a>";
				endif;
			else:
				echo "<td class='normal'><a href='javascript:paginaCal(".$url.");'>".$dias[$pos2]."</td></a>";
			endif;
		endif;
		$cont++;
	endfor;
	echo "</tr>";
endfor;

?>
</table>
</body>
</html>

- A outra coisa, eu queria deixar os domingos em vermelho, nem é muito problema, é mais estetico mesmo.

Desculpe se o código estiver meio bagunçado, mas como disse sou iniciante! :P
Se alguém puder me dar uma luz eu agradeço!!

Obrigado!

IPB Skin By Virteq