Jump to content


Photo

Calendario


  • Faça o login para participar
3 replies to this topic

#1 pedrokl

pedrokl

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Masculino
  • Localidade:Santos, SP

Posted 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!

#2 hostdesigner

hostdesigner

    Super Veterano

  • Usuários
  • 2910 posts
  • Sexo:Masculino
  • Localidade:Quirinópolis-GO
  • Interesses:Programação, Mulheres, Diversão, Mulheres, Música, Mulheres, Meu Carro, Mais mulheres, Internet, Outras Mulheres, Quase por último PAZ e por ultimo Outras Váááárias Mulheres...

Posted 17/02/2010, 17:14

@ PEDROKL
Você simplesmente precisa colocar uma classe para estilizar a célula que exibir Domingo, algo como
class='normal vermelho'
claro, você precisa criar a definição CSS para que fique estilizado na cor desejada.

Pelo pouco que li no teu código você consegue saber quando é domíngo verificando se
$dias[$pos]
é igual a 0

Falopa!

#3 pedrokl

pedrokl

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Masculino
  • Localidade:Santos, SP

Posted 17/02/2010, 17:19

Opa!

Então, a classe ta feita no css direitinho, mas o problema do $dias[$pos] só serve pra ver a posição do dia inicial, ai o array $dias[] ele serve pra armazenar os dias em si, tipo $dias[$pos2] se for dia 1 seria $dias[1] e assim por diante.

Eu tinha tentado desse jeito tambem, mas não deu certo! :(

#4 Augusto Saggese

Augusto Saggese

    12 Horas

  • Usuários
  • 218 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro
  • Interesses:(X)HTML, CSS, PHP, MySQL, ASP, JAVASCRIPT entre outros!

Posted 19/02/2010, 23:47

Não precisa disso!

Clique aqui

ainda esta em desenvolvimento

repare que ao selecionar uma data, abre um jquery, com o calendário, ele automaticamente, joga a data no input e eu a salvo no banco de dados,
caso voce queira que apenas salve sem exibir, passa esse valor para um campo hidden, e salve-o no banco de dados.

t+
www.augustosaggese.com - "Na batalha da vida, só existem homens fortes, e um homem forte, sempre determina o seu destino".




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq