Jump to content

Calendario anual com sinalizacao de ocorrencias.


Mestre1966

Recommended Posts

Boas,

Gostava de poder contar com a vossa ajuda a solucionar uma situacao que me está a dar dores de cabeça.

Estou a tentar criar um sistema em que possa visualizar num calendario anual os dias em que um empregado faltou e o motivo, dados que se encontram em db mysql.

O calendario que pretendo usar foi encontrado na net e tem o seguinte design:

scr_phpcalj.png

No calendario em questão já surge a sinalização do dia actual (neste caso 5 de Abril de 2011)

Atraves de um query já consegui sinalizar por exemplo o dia de aniversario.

Mas quando tento sinalizar uma lista de ocorrencias do resultado de um query dá-me sempre mau resultado.

Ou seja, ou não me aparece sinalizado ou os dias aparecem repetidos ou ainda acrescenta dias ao mês.

Penso que tudo se resume a onde colocar o query e onde colocar o codigo de apresentação do query.

Espero que me tenha feito entender e que me possam ajudar.

O query que tenho feito e que funciona para obter a lista de ocorrencias é o seguinte:

$sql=mysql_query("SELECT * FROM events");
while($row=mysql_fetch_assoc($sql)){
$e=$row['Date'];
$time=strtotime($e);
$eday=date("d", $time);
$emonth=date("F", $time);
$eyear=date("Y", $time);
}

E o codigo que uso para apresentação dos dados e que tentei colocar junto da apresentação do dia actual, é:

if (($eday==$i)&&($emonth==$months[$this_month-1])&& $eyear==$year) {
echo '<td style="font-size:8pt; font-family:Verdana; background:#ff7f00;" align=center>';
echo '<a href="">'.$i.'</span>';`
}

O codigo do calendario entretanto traduzido por mim é este:

<?php
$month=date('n');
$year=date('Y');
$day=date('d');
$months=array('January','February','March','April','May','June','July','August','September','October','November','December');
echo '<table border=0 width=700>';
echo '<th colspan=4 align=center style="font-family:Verdana; font-size:18pt; color:#ff9900;">'.$year.'</th>';
for ($reihe=1; $reihe<=3; $reihe++) {
echo '<tr>';
for ($spalte=1; $spalte<=4; $spalte++) {
$this_month=($reihe-1)*4+$spalte;
$erster=date('w',mktime(0,0,0,$this_month,1,$year));
$insgesamt=date('t',mktime(0,0,0,$this_month,1,$year));
if ($erster==0) $erster=7;
echo '<td width="25%" valign=top>';
echo '<table border=0 align=center style="font-size:8pt; font-family:Verdana">';
echo '<th colspan=7 align=center style="font-size:12pt; font-family:Arial; color:#666699;">'.$months[$this_month-1].'</th>';
echo '<tr><td style="color:#666666"><b>Mo</b></td><td style="color:#666666"><b>Tu</b></td>';
echo '<td style="color:#666666"><b>We</b></td><td style="color:#666666"><b>TH</b></td>';
echo '<td style="color:#666666"><b>Fr</b></td><td style="color:#0000cc"><b>Sa</b></td>';
echo '<td style="color:#cc0000"><b>Su</b></td></tr>';
echo '<tr><br>';
$i=1;
while ($i<$erster) {
echo '<td> </td>';
$i++;
}
$i=1;
while ($i<=$insgesamt) {
$rest=($i+$erster-1)%7;
if (($i==$day) && ($this_month==$month)) {
echo '<td style="font-size:8pt; font-family:Verdana; background:#ff0000;" align=center>';
} else {
echo '<td style="font-size:8pt; font-family:Verdana" align=center>';
}
 //---> Today
if (($i==$day) && ($this_month==$month)) {
echo '<span style="color:#ffffff;">'.$i.'</span>';
}
else if ($rest==6) {
echo '<span style="color:#0000cc">'.$i.'</span>';
} else if ($rest==0) {
echo '<span style="color:#cc0000">'.$i.'</span>';
} else {
echo $i;
}
echo "</td>\n";
if ($rest==0) echo "</tr>\n<tr>\n";
$i++;
}
echo '</tr>';
echo '</table>';
echo '</td>';
}
echo '</tr>';
}
echo '</table>';
?>

Obrigado desde já pela vossa ajuda.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.