Senin, 31 Agustus 2009

Membuat Kalender

Download Contoh Kode

Berikut ini adalah kode yang pernah saya buat. Walaupun tidak pernah saya berikan dalam kuliah, kode ini menggunakan prinsip - prinsip perulangan,pengecekan,class dan function.

Contoh penggunaannya adalah seperti ini :



<?php
include("kalender.class.php");
$kalender = new kalender();
echo $kalender->setActionPage("http://test/?mod=sched");
echo "<center>";
echo $kalender->printMyMonth(4,2010);
echo "</center>";
echo $kalender->printYear(2010);
?>

Hasilnya akan seperti ini :




Dan berikut ini adalah class Kalendernya. Simpan dengan nama kalender.class.php




class kalender
{
/*

Kalender dengan Fungsi Hari Besar
satiri.a@gmail.com
2006


Membutuhkan Kelas untuk koneksi ke MySQL
db.class.php
table.class.php



*/


var $tabel,$action;


function setTable($table)
{
$this->tabel=$table;
}

function setActionPage($action){
$this->action=$action;
}

function daySize($bulan,$tahun)
{
// tentuin jumlah hari dalam 1 bulan
// check yang paling besar dulu
$ok = checkdate($bulan,31,$tahun);
if($ok)
{
return 31;
}
else
{
$ok = checkdate($bulan,30,$tahun);
if($ok)
{
return 30;
}
else
{
$ok = checkdate($bulan,29,$tahun);
if($ok)
{
return 29;
}
else
{
return 28;
}
}
}

}

function printTimeOfDay($mulai,$sampai)
{
echo "<table width='100%' style='border:solid 1px;' border='1'>";
for($i=$mulai;$i<=$sampai;$i++)
{
if(($i%2)>1)
{
echo "<tr><td width='20%'>$i</td><td width='80%'> </td></tr>";
}
else
{
echo "<tr><td width='20%' bgcolor='#04a022'>$i</td><td width='80%'> </td></tr>";
}
}
echo "</table>";
}

function printShortMonth($bulan,$tahun,$shortest="no")
{
$namahari = array("Min","Sen","Sel","Rab","Kam","Jum","Sab");
$namabulan = array("Jan","Feb","Mar","Apr","Mei","Jun","Jul",
"Agt","Sep","Okt","Nop","Des");

$namahari2 = array("M","S","S","R","K","J","S");

if($shortest=="no")
{
$hasil = $this->printMyMonth($bulan,$tahun,$namabulan,$namahari);
}else
{
$hasil = $this->printMyMonth($bulan,$tahun,$namabulan,$namahari2);
}
return $hasil;
}

function printYear($tahun)
{
$c=1;
echo "<table border='0' align='center'>";
for($i=1;$i<=12;$i++)
{

//echo $c."<br>";
if($c==1)
{
echo "<tr>";
//echo "<td>$c</td>";
echo "<td valign='top'>".$this->printShortMonth($i,$tahun,"yes")."</td>";
}
else
{
if($c==3)
{
//echo "<td>$c</td>";
echo "<td valign='top'>".$this->printShortMonth($i,$tahun,"yes")."</td>";
echo "</tr>";
$c=0;
}
else
{
//echo "<td>$c</td>";
echo "<td valign='top'>".$this->printShortMonth($i,$tahun,"yes")."</td>";
}
}
$c++;
}
echo "</table>";
}

function printMyMonth($bulan,$tahun,$namabulan="",$namahari="")
{
$jhari = $this->daySize($bulan,$tahun);

if($namahari=="")
{
$namahari = array("Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu");
}

if($namabulan=="")
{
$namabulan = array("Januari","Februari","Maret","April","Mei",
"Juni","Juli","Agustus","September","Oktober",
"Nopember","Desember");
}


$c=1;
$chari=0;
for($i=1;$i<=$jhari;$i++)
{
$mydate = getdate(mktime(0,0,0,$bulan,$i,$tahun));
$cdate = getdate();


if($mydate["wday"]==6)
{
$minggu[$chari][$mydate["wday"]]=$i;
$chari++;
}
else
{
$minggu[$chari][$mydate["wday"]]=$i;
}




}


$hasil="";
$hasil.="<table style='border:solid 0px' cellspacing='1' width='80%'>";
$hasil.="<tr><td Colspan='7' class='headerkalender' align='center'><h3>".$namabulan[$bulan-1]." ".$tahun."</h3></td></tr>";
$hasil.="<tr>";

for($i=0;$i<=6;$i++)
{
$hasil.="<td style='border:solid 1px #DEDEDE' align='center'>".$namahari[$i]."</td>";
}
$hasil.="</tr>";

$jharikerja=0;
$jharilewat=0;
foreach($minggu as $seminggu)
{
$hasil.="<tr>";
for($i=0;$i<=6;$i++)
{

$tgl = $tahun."-".$bulan."-".$seminggu[$i];
$hasibesar = "";
//$haribesar = $this->getHaribesar($tgl);

//print_r($haribesar);
if($i==0 | $i==6)
{
$warna="#FF0000";
}
else
{
if($haribesar!="")
{
$warna="#FF0000";
$deskripsi = $haribesar[0];
//echo $deskripsi[0];
}
else
{
$deskripsi="";
$warna = "#0000FF";

if($seminggu[$i]!=null)
{
$jharikerja++;
if($seminggu[$i]<=$cdate["mday"])
{
$jharilewat++;
}
}
}
}


if($seminggu[$i]==$cdate["mday"])
{

$hasil.="<td align='center' bgcolor='#DEDEDE' style='border:solid 1px'>".
"<a href='".$this->action."&bulan=$bulan&tanggal=$seminggu[$i]&tahun=$tahun' title='".addslashes($deskripsi[0])."'>".
$seminggu[$i]."</a></td>";
}else
{
$hasil.="<td align='center' style='border:solid 1px #DEDEDE'>".
"<a href='".$this->action."&bulan=$bulan&tanggal=$seminggu[$i]&tahun=$tahun' title='".addslashes($deskripsi[0])."'>".
"<font color='$warna'>".$seminggu[$i]."</font></a></td>";

}
}
$hasil.="</tr>";
$haribesar="";
$deskripsi="";

}

$hasil.="<tr><td colspan='7'>Jumlah Hari Kerja : $jharikerja</td></tr>";
$hasil.="<tr><td colspan='7'>Sisa hari kerja : ".($jharikerja-$jharilewat)."</td></tr>";
$hasil.="</table>";

return $hasil;
}


function getHariBesar($tanggal)
{
// hasil berupa array
$sql = "select type,deskripsi,tanggal from haribesar where tanggal='".$tanggal."'";
$this->tabel->runQuery($sql);

$event="";
$tglevent="";
$c=0;
while($row=mysql_fetch_row($this->tabel->rs))
{
$event[$c]=$row[1];
$tglevent[$c]=$row[2];
$c++;
}

if($c>=1)
{
return array($event,$tglevent);
}else
{
return "";
}
}


function getAdminList($batas=20,$mulai=0,$return="no",$app)
{
$qry = "select id,type,deskripsi,tanggal ".
"from haribesar ".
"order by tanggal limit $mulai,$batas";
$this->tabel->connect();
$this->tabel->runQuery($qry);

$hasil = $hasil. "<!-- ide list --><table width=100% style='border:solid 1px #DEDEDE' border=1>";
while($row=mysql_fetch_array($this->tabel->rs))
{
$hasil = $hasil.
"<tr><td valign=top style='font-size:9pt' width='5%'>".$row[0]."</td>".
"<td valign=top style='font-size:9pt' width='10%'>".$row[3]."</td>".
"<td valign=top style='font-size:9pt' width='60%'>".$row[2]."</td>".
"<td style='font-size:9pt' size='25%' align='center'>".
"<a href='?app=".$app."&mode=setuju&id=".$row[0]."'>Setuju</a> | <a href='?app=".$app."&mode=tolak&id=".$row[0]."'>Tolak</a> |".
" <a href='?app=".$app."&mode=hapus&id=".$row[0]."'>Hapus</a> | <a href='?app=".$app."&mode=edit&id=".$row[0]."'>Edit</a> </td></tr>";
}
$hasil = $hasil. "</table><!-- ide list -->";

if($return=="no")
{
echo $hasil;
}
else
{
return $hasil;
}
}

}


4 komentar:

  1. kalo untuk membuat event calendar ada ga ? trima kasih seblm'a

    BalasHapus
  2. tinggal dibuat tablenya. dan diset tanggalnya kan ? lalu diasosiakan ke tanggal.

    BalasHapus
  3. ijin kopas gan....

    BalasHapus
  4. ok. silahkan dicopas dengan tetap menampilkan email penulis ya.

    BalasHapus

Isi Komentar / Pertanyaan