4 Komentar

Belajar PHP versi sampe pusing. Reservasi tiket bis (tanpa database)

Waktu bongkar-bongkar folder buat cari materi tutorial PHP di blog ini saya menemukan script waktu kuliah dulu, ceritanya untuk sistem reservasi atau pemesanan tiket bis.

Script ini merupakan tugas dari mata kuliah algoritma yang saya ambil dua kali alias mengulang, jangan salah sangka dulu! saya mengulang karena dosen yang pertama kali mengajar sering kali terlambat  bahkan tidak datang sama sekali dan perilaku tersebut sangatlah membuat saya jengkel, oleh karena itu ketika sang dosen meminta perubahan jadwal giliran saya yang malas datang, akhirnya dapat D he.he.

Perilaku dendam terhadap dosen bukan untuk ditiru ya.

Ketika mengambil mata kuliah yang sama (untuk memperbaiki nilai) pada akhir semester diharuskan membuat program dengan  bahasa pemrograman bebas yang penting fungsinya untuk mendukung proses pemesanan tiket bis. Akhirnya saya putuskan membuat dengan menggunakan PHP, supaya simple dari sisi mobilitas saya hanya membuat satu file index.php untuk keseluruhan program. Tidak mungkin salah copy jika file-nya hanya satu😉

PHP pemesanan tiket bis

Tampilan reservasi tiket bis

Untuk meng-copy klik saja icon copy to clipboard lalu paste ke editor favorit anda, penjelasan per blok-nya menyusul (semoga tidak lupa), jadi silahkan berpusing-pusing sedikit dulu ya😀

Ini dia source code-nya siap-siap :

<?php
/**************************************************************************************************************************************
Judul        : Program Reservasi sederhana menggunakan PHP 4
Tgl            : 13 Januari 2006
Nama        : Muslim Pribadi M.
Nim            : ------
Jurusan        : TI/S1
Email        : muslim_DOT_pribadi_AT_gmail_DOT_com
Website        : https://muslimpribadi.wordpress.com
Matakuliah    : Algoritma dan Dasar Pemrograman (2005/2006)
Dosen        : --
Objektif    : 1. menghitung harga tiket (Harga tiket = Tarif dasar + tarif tambahan)
2. Menentukan Jam keberangkatan dengan kode
3. Paling lambat dikumpulkan tgl 16 januari 2006
****************************************************************************************************************************************/
/*Jurusan*/
$_JUR = array(
1    => 'JKT|Jakarta',
2    => 'CRB|Cirebon',
3    => 'SKBM|Sukabumi',
);

/*Kelas*/
$_KELAS = array(
1    => 'E|Ekonomi',
2    => 'B|Bisnis',
3    => 'EK|Eksekutif',
);

/*
Inisialisasi tarif dasar bus
Ket. variabel:
--------------
JKT        : Jakarta                ---B    : Bisnis
CRB        : Cirebon                ---E    : Ekonomi
SKBM    : Sukabumi                ---EK    : Eksekutif
*/
$_TARIF = array(
'JKTB'        => 35000,
'JKTE'        => 25000,
'JKTEK'        => 45000,
'CRBB'        => 20000,
'CRBE'        => 15000,
'CRBEK'        => 35000,
'SKBMB'        => 15000,
'SKBME'        => 10000,
'SKBMEK'    => 20000,
);

/*
Inisialisasi tarif tambahan
Ket. variabel:
-------------
Ttb        : Tarif tambahan bisnis
Tte        : -------------- ekonomi
Ttek    : -------------- eksekutif
*/
$_TARIFT = array(
'Ttb'    => 0.25,
'Tte'    => 0,
'Ttek'     => 0.5,
);

/*
inisialisasi waktu
*/
$_JAM_BERANGKAT = array(
1    => '08.00',
2    => '10.00',
3    => '14.00',
4    => '19.00',
);

function tarif($kode)
{
global $_TARIF,$_TARIFT;

/*filter variabel $kode*/
switch($kode)
{
default:
{
die('<div style="font-weight:bold; color:#FF0000; font-size:x-small;">Data tidak lengkap..</div>');
break;
}//end default

//Jakarta Bisnis
case 'JKTB':
{
$harga = $_TARIF[$kode] + ($_TARIF[$kode] * $_TARIFT['Ttb']);
break;
}//end case

//Jakarta Ekonomi
case 'JKTE':
{
$harga = $_TARIF[$kode] + ($_TARIF[$kode] * $_TARIFT['Tte']);
break;
}//end case

//Jakarta Eksekutif
case 'JKTEK':
{
$harga = $_TARIF[$kode] + ($_TARIF[$kode] * $_TARIFT['Ttek']);
break;
}//end case

//Cirebon Bisnis
case 'CRBB':
{
$harga = $_TARIF[$kode] + ($_TARIF[$kode] * $_TARIFT['Ttb']);
break;
}//end case

//Cirebon Ekonomi
case 'CRBE':
{
$harga = $_TARIF[$kode] + ($_TARIF[$kode] * $_TARIFT['Tte']);
break;
}//end case

//Cirebon Eksekutif
case 'CRBEK':
{
$harga = $_TARIF[$kode] + ($_TARIF[$kode] * $_TARIFT['Ttek']);
break;
}//end case

//Sukabumi Bisnis
case 'SKBMB':
{
$harga = $_TARIF[$kode] + ($_TARIF[$kode] * $_TARIFT['Ttb']);
break;
}//end case

//Sukabumi Ekonomi
case 'SKBME':
{
$harga = $_TARIF['SKBME'] + ($_TARIF['SKBME'] * $_TARIFT['Tte']);
break;
}//end case

//Sukabumi Eksekutif
case 'SKBMEK':
{
$harga = $_TARIF['SKBMEK'] + ($_TARIF['SKBMEK'] * $_TARIFT['Ttek']);
break;
}//end case
}//end switch

return($harga);
}//end function tarif

function jam_berangkat($id)
{
global $_JAM_BERANGKAT;

/*filter id*/
switch($id)
{
default:
{
die('<div style="font-weight:bold; color:#FF0000; font-size:large;">Hacking Attemp..</div>');
break;
}//end default

case '1':
{
$jam = $_JAM_BERANGKAT[$id];
break;
}//end case

case '2':
{
$jam = $_JAM_BERANGKAT[$id];
break;
}//end case
case '3':
{
$jam = $_JAM_BERANGKAT[$id];
break;
}//end case

case '4':
{
$jam = $_JAM_BERANGKAT[$id];
break;
}//end case
}//end switch

return($jam);
}//end function jam_berangkat

function waktu()
{
$date= getdate();
$weekday = $date['wday'];
$day = $date['mday'];
$month = $date['mon'];
$year = $date['year'];

switch($weekday)
{
case 0:    $weekday="Minggu"; break;
case 1: $weekday="Senin"; break;
case 2: $weekday="Selasa"; break;
case 3: $weekday="Rabu"; break;
case 4: $weekday="Kamis"; break;
case 5: $weekday="Jumat"; break;
case 6: $weekday="Sabtu"; break;
}
switch($month)
{
case 1: $month='Januari'; break;
case 2: $month='Februari'; break;
case 3: $month='Maret';    break;
case 4: $month='April';    break;
case 5: $month='Mei'; break;
case 6: $month='Juni'; break;
case 7: $month='Juli'; break;
case 8: $month='Agustus'; break;
case 9: $month='September'; break;
case 10: $month='October'; break;
case 11: $month='November'; break;
case 12: $month='Desember'; break;
}

//ampm
if ($hours > 12)
{
$hours = $hours - 12;
$ampm='PM';
}
else { $ampm='AM'; }
//fix 1digit
if ($hours < 10) { $hours="0$hours"; }
if ($minutes < 10) { $minutes="0$minutes"; }
//rearange return
$time = $weekday.', '.$day.' '.$month.' '.$year;

echo '<span style="font-size:xx-small; color:#666666; position:absolute;">'.$time.'</span>';
}//end function waktu
?>

<html>
<head>
<title>.::RESERVASI::.</title>
<style type="text/css">
body{ font-family:verdana; font-size:x-small;}
td{ vertical-align:top; }
h3{ color:#666666; }
.header{ background-color:#9F9F9F; color:#333333; font-size:small; font-weight:bold; }
.title{ background-color:#FF9900; color:#FFFFFF; font-size:small; font-weight:bolder; }
.strip1{ background-color:#F0F0F0; font-size:x-small; }
.strip2{ background-color:#E2E2E2; font-size:x-small; }
.warn{ background-color:#E2E2E2; color:#666666; font-size:xx-small; }
.headerform{ background-color:#E2E2E2; color:#666666; font-size:0.8em; font-weight:bolder; }
a{ font-size:0.8em; color:#666666; text-decoration:none;}
a:link{ font-size:0.8em; color:#666666; }
a:active{ font-size:0.8em; color:#666666; }
a:hover{  font-size:0.8em; color:#FFFFFF; background-color:#000000}
</style>
<script>
function validName(Name) {
invalidChars = "1234567890_-+=;:'.,)(*&^%$#@!~`"
if (Name == "") {
return (false);
}
for (i=0; i < invalidChars.length; i++) {
badChar = invalidChars.charAt(i)
if (Name.indexOf(badChar,0) != -1) {
return (false);
}
}
return (true);
}
function validqtt(qtty) {
invalidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-+=;:'.,)(*&^%$#@!~`"
if (qtty == "") {
return (false);
}
for (i=0; i < invalidChars.length; i++) {
badChar = invalidChars.charAt(i)
if (qtty.indexOf(badChar,0) != -1) {
return (false);
}
}
return (true);
}
function CheckData(form) {
if (form.nama.value == "") {
alert ('Tolong isi Nama.');
form.nama.focus();
return (false);
}
if(!validName(form.nama.value)) {
alert ('Format nama salah.');
form.nama.focus();
return (false);
}
if (form.qtt.value == "") {
alert ('Tolong isi kolom banyaknya tiket.');
form.qtt.focus();
return (false);
}
if(!validqtt(form.qtt.value)) {
alert ('Format harus bilangan bulat.');
form.qtt.focus();
return (false);
}

return (true);
}
</script>
</head>

<body>
<table cellspacing="2" cellpadding="1" border="0" width="100%">
<tr>
<td width="50%">
<h3>.:: Reservasi tiket bus ::.</h3>
<?php echo waktu()?>
</td>
<td width="50%">
<a href="">Home</a><br>
<span style="font-size:xx-small; color:#FF9900; cursor:default; line-height:0.9em;">
&copy;Copyright 2006 Muslim pribadi -- email:muslim[D0T]pribadi[A+]gmail[D0T]com<br>
Powered by<img src="<?php echo $PHP_SELF.'?='.php_logo_guid();?>" border="0" alt="PHP" width="50" height="23">
</span>
</td>
</tr>
</table>

<fieldset>
<table border="0" cellpadding="0" cellspacing="0" width="970">
<tr>
<td>
<!--Start info-->
<table border="0" cellpadding="3" cellspacing="1" width="400" align="left">
<tr><td colspan="5">:: Daftar harga tiket bus dari Bandung</td></tr>
<tr>
<td rowspan="5">&nbsp;</td>
<td rowspan="2">Jurusan</td>
<td align="center" colspan="3">Kelas</td>
</tr>
<tr>
<td>Bisnis</td>
<td>Ekonomi</td>
<td>Eksekutif</td>
</tr>
<tr>
<td>Jakarta</td>
<td>Rp. <?php echo tarif('JKTB')?></td>
<td>Rp. <?php  echo tarif('JKTE')?></td>
<td>Rp. <?php  echo tarif('JKTEK')?></td>
</tr>
<tr>
<td>Cirebon</td>
<td>Rp. <?php  echo tarif('CRBB')?></td>
<td>Rp. <?php  echo tarif('CRBE')?></td>
<td>Rp. <?php  echo tarif('CRBEK')?></td>
</tr>
<tr>
<td>Sukabumi</td>
<td>Rp. <?php  echo tarif('SKBMB')?></td>
<td>Rp. <?php  echo tarif('SKBME')?></td>
<td>Rp. <?php  echo tarif('SKBMEK')?></td>
</tr>
<tr><td colspan="5">&nbsp;</td></tr>
<tr><td colspan="5">:: Jam Keberangkatan</td></tr>
<tr>
<td rowspan="5">&nbsp;</td>
<td colspan="2" align="center">kode</td>
<td colspan="2"align="center">Jam keberangkatan</td>
</tr>
<tr>
<td colspan="2" align="center">01</td>
<td colspan="2"align="center"><?php  echo jam_berangkat('1')?></td>
</tr>
<tr>
<td colspan="2" align="center">02</td>
<td colspan="2"align="center"><?php  echo jam_berangkat('2')?></td>
</tr>
<tr>
<td colspan="2" align="center">03</td>
<td colspan="2"align="center"><?php  echo jam_berangkat('3')?></td>
</tr>
<tr>
<td colspan="2" align="center">04</td>
<td colspan="2"align="center"><?php  echo jam_berangkat('4')?></td>
</tr>
</table>
<!--End info-->
</td>
<td>
<!--Start ctrl-->
<table border="0" cellpadding="1" cellspacing="1" width="500">
<?php
if(!empty($_REQUEST['stat']) && $stat == 'part2' && !empty($_REQUEST['rec']) && is_numeric($_REQUEST['rec']) && isset($_REQUEST['nama']))
{
$jur = $_REQUEST['jur'];
$kelas = $_REQUEST['kelas'];
$jam = $_REQUEST['jam'];

$cjur = count($jur);
$ckelas = count($kelas);
$cjam = count($jam);
$maxtic = $_REQUEST['rec'] - 1;
$row = $_REQUEST['rec'] + 4;

echo '<tr><td colspan="5">Form. pemesanan 3/3</td></tr>
<tr>
<td rowspan="'.$row.'">&nbsp;</td>
<td colspan="2">
- Langkah ke-3<br>
- Rincian biaya dan total harga yang harus dibayar akan tampil<br>
- Terima kasih<br>
</td>
</tr>
<tr>
<td width="40%"><strong>Nama Pemesan</strong></td>
<td width="*">'.$_REQUEST['nama'].'</td>
</tr>
<tr>
<td><strong>Jumlah tiket</strong></td>
<td>'.$_REQUEST['rec'].'</td>
</tr>';
$harga = 0;
for($i=0;$i<=$maxtic;$i++)
{
$jur_ = explode('|',$jur[$i]);
$kelas_ = explode('|',$kelas[$i]);
$kode = $jur_[0];
$kode .= $kelas_[0];
echo '<tr>
<td>'.$jur_[1].' - '.$kelas_[1].' ('.$jam[$i].')</td>
<td>Rp. '.tarif($kode).'</td>
</tr>';
$harga = $harga + tarif($kode);
}
echo '<tr>
<td><strong>Total pembayaran</strong></td>
<td><strong>Rp. '.$harga.'</strong></td>
</tr>';
}//end if
else
{
echo '<form action="'. $_SERVER['PHP_SELF'].'" method="post" name="Form" onSubmit="return CheckData(Form);">';

if(!empty($_REQUEST['qtt']) && !empty($_REQUEST['nama']) && is_numeric($_REQUEST['qtt']))
{
$qtt = $_REQUEST['qtt'];
$nama = $_REQUEST['nama'];
$row = $qtt + 4;

echo '<input type="hidden" name="stat" value="part2">
<input type="hidden" name="rec" value="'.$qtt.'">
<input type="hidden" name="nama" value="'.$nama.'">';
echo '<tr><td colspan="5">Form. pemesanan 2/3</td></tr>
<tr>
<td rowspan="'.$row.'">&nbsp;</td>
<td colspan="4">
- Langkah ke-2<br>
- Pilih jurusan, Kelas, dan jam berangkat<br>
- Jangan sampai ada kolom yang kosong<br>
- Klik ok
</td>
</tr>
<tr>
<td colspan="2">'.$qtt.' tiket atas nama</td>
<td colspan="2">'.$nama.'</td>
</tr>
<tr>
<td></td>
<td>Jurusan</td>
<td>Kelas</td>
<td>Jam berangkat</td>';

$cjur = count($_JUR);
$ckelas = count($_KELAS);
$cjam = count($_JAM_BERANGKAT);

for($i=1;$i <= $qtt;$i++)
{
echo '<tr>
<td style="color:#999999;">'.$i.'</td>
<td><select name="jur[]">
<option value="" style="color:#CCCCCC">--------- Jurusan ---------</option>';
for($a=1;$a<=$cjur;$a++)
{
$jur = explode('|',$_JUR[$a]);
echo '<option value="'.$_JUR[$a].'">Bandung - '.$jur[1].'</option>';
}
echo '</select></td>
<td><select name="kelas[]">
<option value="" style="color:#CCCCCC">--------- Kelas ---------</option>';
for($a=1;$a<=$ckelas;$a++)
{
$kelas = explode('|',$_KELAS[$a]);
echo '<option value="'.$_KELAS[$a].'">'.$kelas[1].'</option>';
}
echo '</select></td>
<td><select name="jam[]">
<option value="" style="color:#CCCCCC">- Jam Berangkat -</option>';
for($a=1;$a<=$cjam;$a++)
{
echo '<option value="'.$_JAM_BERANGKAT[$a].'">'.$_JAM_BERANGKAT[$a].'</option>';
}
echo '</select></td>
</tr>';
}//end for
echo '<tr>
<td colspan="4" align="right"><input type="submit" value="Ok" style="border:1px solid #CCCCCC; font-weight:bold; width:60px;"></td>
</tr>';

}//end if
else
{
echo '<tr><td colspan="3">Form. pemesanan 1/3 </td></tr>
<tr>
<td rowspan="4">&nbsp;</td>
<td colspan="3">
- Langkah ke-1<br>
- Masukkan nama pemesan dengan format nama yang valid<br>
- Masukkan jumlah tiket yang akan dipesan<br>
- Klik ok
</td>
</tr>
<tr>
<td>Atas nama</td>
<td><input type="text" name="nama" size="20" maxlength="255"></td>
</tr>
<tr>
<td>Banyak tiket yang akan dipesan</td>
<td><input type="text" name="qtt" size="3" maxlength="3"></td>
</tr>
<tr>
<td></td><td><input type="submit" value="ok" style="border:1px solid #CCCCCC; font-weight:bold; width:60px;"></td>
</tr>';
}//end else

echo '</form>';
}//end else top
?>
</table>
<!--End ctrl-->
</td>
</tr>
</table>
</fieldset>

</body>
</html>

Masih sehat? ga pingsan kan? Syukur kalau begitu, setelah dibaca dengan seksama, ternyata tidak terlalu rumit kan😉

Download sourcecode Reservasi tiket bis

4 comments on “Belajar PHP versi sampe pusing. Reservasi tiket bis (tanpa database)

  1. Nostalgia coding jama kuliahan yah mas? Ternyata ini umum terjadi di pemula web yah? Terjadi juga di saya dulu. 1 file untuk semua prorgram. Sangat portable, tapi bikin mual waktu harus debug. Apalagi kalau debug pakai notepad atau sejenisnya yang ngga’ ada fitur2 pembantu programming. Beuh!

    Nice share! Keep posting!

  2. memungkinkah gak yah kita bikin fitur pencarian di web yang gak ada databasenya?

Menurut anda bacaan ini bermanfaat? Ada tambahan? Atau mungkin mencari jawaban lain? Tulis disini Ok (:

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: