Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 14700

Calendario anual com sinalizacao de ocorrencias.

$
0
0
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:
Imagem Colocada

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:
Código :
$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, é:
Código :
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:
Código :
<?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.

Viewing all articles
Browse latest Browse all 14700