Membuat dokumentasi dari program aplikasi yang sudah pernah kita buat ternyata tidak semudah yang saya bayangkan dan merupakan sebuah tantangan yang lain, disamping penulisan program itu sendiri.  Saat rencana pertunjukan drama musikal Broken Wings diutarakan beberapa bulan yang lalu, hal ini yang pertama muncul dalam benak saya, bahwa sebuah sistem tiketing berbasis komputer tentunya akan sangat membantu dalam monitoring jumlah tempat duduk dan data-data tamu yang ada.

Untuk desain templatenya, saya mengadaptasi dari template yang sudah ada, karena saya tidak begitu memusingkan desainnya. Dalam pikiran saya, yang dibutuhkan dari sistem tiket ini adalah kecepatannya dan bukan tampilan interfacenya. Jadi faktor desain saya kesampingkan terlebih dahulu.

Untuk tempat duduk, dibagi menjadi tiga kelas, masing-masing Platinum, Gold dan Silver dengan kapasitas tempat duduk masing-masing, dan pertunjukannya sendiri dibagi menjadi dua sesi sore dan malam. Ini artinya saya harus membuat tabel untuk menyimpan kuota dari masing-masing kelas dan sesi. Sempat muncul dalam pikiran saya untuk membuat sistem booking berdasarkan nomor tempat duduk, yang ternyata ide ini tidak disetujui oleh panitia. Padahal kedengarannya cukup keren, bahwa user diijinkan memilih tempat duduk sendiri dan itu dilakukan secara online!!

Jadi karena tidak disetujui panitia dan keterbatasan waktu, akhirnya saya buat sistem sesederhana mungkin. Melalui website Broken Wings, user akan bisa langsung melakukan booking. Dan karena kebanyakan yang mengakses website adalah anak2 SMP dan SMA, saya yakin interface form untuk pengisian data bukan menjadi hal yang sulit buat mereka. Toh mereka rata2 punya akun facebook dan hal itu semakin memperkuat dugaan saya bahwa mereka tentunya bisa melakukan booking sendiri dari rumah.

Sesuai dengan tampilan form, yang harus diisikan adalah no KTP/Kartu Pelajar, Nama Lengkap, Alamat, Kota, Telepon, serta memilih Sesi dan Kelas Pertunjukan serta  jumlah tempat duduk yang akan dibooking. Saya membatasi jumlah tempat duduk maksimal 10 seats untuk setiap booking.

Untuk kontrol sisa dari tempat duduk, saya menggunakan fungsi AJAX yang dapat menampilkan sisa tempat duduk berdasarkan kelas dan sesi yang dipilih. Disamping itu, saya juga menambahkan fungsi perhitungan uang tiket otomatis sesuai dengan jumlah tempat duduk dan sesi. Hal ini membuktikan bahwa fungsi AJAX yang berbeda-beda ternyata dapat dipanggil dalam satu kali event JavaScript.

<select id=”kelas” name=”kelas” onChange=”DisplayKelas(); GetTotal();”>
<option value=”Platinum”>Platinum</option>
<option value=”Gold”>Gold</option>
<option value=”Silver”>Silver</option>
</select>

Saat list menu berubah, maka fungsi AJAX DisplayKelas dan GetTotal akan dipanggil, dimana masing-masing fungsi tersebut akan menjalankan file PHP yang berbeda.

Gambar di atas adalah tampilan yang muncul apabila user sudah melakukan booking dan menekan tombol submit. Referensi yang diterima adalah kode unik yang dapat digunakan untuk login ke dalam sistem untuk mencetak e-tiket nantinya apabila pembayaran sudah dilakukan.

Berikut ini adalah fungsi PHP yang digunakan untuk mengembalikan nilai acak dari karakter yang diminta.

function generateCode ($length = 8)
{
// start with a blank code
$ref = “”;
// define possible characters
$possible = “0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”;
// set up a counter
$i = 0;
// add random characters to $password until $length is reached
while ($i < $length) {
// pick a random character from the possible ones
$char = substr($possible, mt_rand(0, strlen($possible)-1), 1);
// we don’t want this character if it’s already in the string
if (!strstr($ref, $char)) {
$ref .= $char;
$i++;
}
}
// done!
return $ref;
}

Jika sudah menerima kode referensi, maka user yang sudah melakukan booking dapat memasukkan kode referensi tersebut untuk login, dan apabila dia sudah membayar, akan muncul tombol print e-ticket, sehingga dia bisa mencetak tiketnya sendiri. Catatan: e-ticket didesain oleh Jessica Karli, salah satu siswa IB kelas ITGS th 2009-2011

Semoga bermanfaat.