Archive for the ‘programming’ Category

Multiple Dropdownlist dalam Yii

Posted: 24 January, 2014 in php, programming

Salam semua kepada pembaca blog ini. Alhamdulillah dah masuk tahun baru dah kita, semoga semangat baru dapat menyemarakkan prestasi dan sumbangan kita pada agama, bangsa dan negara. Cewah. Awal tahun ni aku disibukkan dengan tugas tugas yang memang sangat-sangat memeningkan kepala, nak buat macam mana, nak tak nak kena hadap jugak kan. Hehehe.

Untuk awal tahun ni, aku ada nak buat satu Sistem Dashboard ICT JHEAINS, dalam sistem ini ada beberapa modul kecil yang akan dikembangkan dari masa ke semasa mengikut keperluan. Buat masa ni aku bercadang nak buat modul pinjaman peralatan ICT, modul aduan kerosakan ICT dan modul permohonan email rasmi jabatan.

Paparan Sistem Dashboard ICT JHEAINS

Paparan Sistem Dashboard ICT JHEAINS

Buat masa ni aku tengah cuba siapkan Modul Pinjaman Peralatan dulu. Berikut adalah paparan Borang Permohonan Pinjaman Peralatan yang di isi oleh pengguna.

Borang Permohonan Pinjaman Peralatan

Borang Permohonan Pinjaman Peralatan

Kat bawah ni ada satu set dropdownlist. Bila pengguna memilih Jenis Peralatan, dropdownlist yang lain akan update valuenya secara automatik.

Multiple dropdownlist

Multiple dropdownlist

Berikut adalah code yang aku gunakan untuk tujuan ni.

Untuk form

<td bgcolor="#FFFFA8">Jenis Peralatan</td>
<td colspan="3" bgcolor="#FFFFA8">
<?php
echo $form->dropDownList($model,'jenis_peralatan',
CHtml::listData(JenisPeralatan::model()->findAll(),'kategori','kategori'),

array(
    'empty'=>'Pilih Kategori',
    'ajax' => array(
    'type' => 'POST',
    'url' => CController::createUrl('PermohonanPinjaman/namaperalatan'),
    'dataType'=>'json',
    'data'=>array('namaperalatan'=>'js:this.value'),

   'success'=>'function(data) {
$("#PermohonanPinjaman_jenis_perkakasan_1").html(data.dropDownPeralatan);
$("#PermohonanPinjaman_jenis_perkakasan_2").html(data.dropDownPeralatan);
$("#PermohonanPinjaman_jenis_perkakasan_3").html(data.dropDownPeralatan);
$("#PermohonanPinjaman_jenis_perkakasan_4").html(data.dropDownPeralatan);
$("#PermohonanPinjaman_jenis_perkakasan_5").html(data.dropDownPeralatan);
$("#PermohonanPinjaman_jenis_perkakasan_6").html(data.dropDownPeralatan);
   }',
)
));
?>

</td>
</tr>
<tr>
<tr>
<td bgcolor="#FFFFD7">Jenis Perkakasan</td>
<td bgcolor="#FFFFD7">
<?php
echo $form->dropDownList($model,'jenis_perkakasan_1',array(),array('prompt'=>'Pilih Perkakasan'));
?>
</td>

<td bgcolor="#FFFFD7">Bilangan Unit</td>
<td bgcolor="#FFFFD7">
<?php echo $form->textField($model,'unit_perkakasan_1',array('class'=>'span1','maxlength'=>1)); ?>
</td>
</tr>

<tr>
<td bgcolor="#FFFFA8">Jenis Perkakasan</td>
<td bgcolor="#FFFFA8">
<?php
echo $form->dropDownList($model,'jenis_perkakasan_2',array(),array('prompt'=>'Pilih Perkakasan'));
?>
</td>

<td bgcolor="#FFFFA8">Bilangan Unit</td>
<td bgcolor="#FFFFA8">
<?php echo $form->textField($model,'unit_perkakasan_2',array('class'=>'span1','maxlength'=>1)); ?>
</td>
</tr>
<tr>

<td bgcolor="#FFFFD7">Jenis Perkakasan</td>
<td bgcolor="#FFFFD7">
<?php
echo $form->dropDownList($model,'jenis_perkakasan_3',array(),array('prompt'=>'Pilih Perkakasan'));
?>
</td>
<td bgcolor="#FFFFD7">Bilangan Unit</td>
<td bgcolor="#FFFFD7">
<?php echo $form->textField($model,'unit_perkakasan_3',array('class'=>'span1','maxlength'=>1)); ?>
</td>
</tr>

<tr>
<td bgcolor="#FFFFA8">Jenis Perkakasan</td>
<td bgcolor="#FFFFA8">
<?php echo $form->dropDownList($model,'jenis_perkakasan_4',array(),array('prompt'=>'Pilih Perkakasan'));
?>
</td>
<td bgcolor="#FFFFA8">Bilangan Unit</td>
<td bgcolor="#FFFFA8">
<?php echo $form->textField($model,'unit_perkakasan_4',array('class'=>'span1','maxlength'=>1)); ?>
</td>
</tr>

<tr>
<td bgcolor="#FFFFD7">Jenis Perkakasan</td>
<td bgcolor="#FFFFD7">
<?php echo $form->dropDownList($model,'jenis_perkakasan_5',array(),array('prompt'=>'Pilih Perkakasan'));
?>
</td>
<td bgcolor="#FFFFD7">Bilangan Unit</td>
<td bgcolor="#FFFFD7">
<?php echo $form->textField($model,'unit_perkakasan_5',array('class'=>'span1','maxlength'=>1)); ?>
</td>
</tr>

<tr>
<td bgcolor="#FFFFA8">Jenis Perkakasan</td>
<td bgcolor="#FFFFA8">
<?php echo $form->dropDownList($model,'jenis_perkakasan_6',array(),array('prompt'=>'Pilih Perkakasan'));
?>
</td>
<td bgcolor="#FFFFA8">Bilangan Unit</td>
<td bgcolor="#FFFFA8">
<?php echo $form->textField($model,'unit_perkakasan_6',array('class'=>'span1','maxlength'=>1)); ?>
</td>
</tr>

Untuk controller

public function actionNamaperalatan()
{

$data=JenisPeralatan::model()->findAllByAttributes(array('kategori'=>$_POST['namaperalatan']));

$data=CHtml::listData($data,'jenis_perkakasan','jenis_perkakasan');

    $dropDownPeralatan = "";
        foreach($data as $value=>$name)
        {
           $dropDownPeralatan .= CHtml::tag('option',
           array('value'=>$value),CHtml::encode($name),true);
        }
    echo CJSON::encode(array(
    'dropDownPeralatan'=>$dropDownPeralatan
    ));

}

Ok lah buat masa ni. Insya Allah ada masa nanti aku update lagi blog ni yer.

Happy h4ckin dari pokcik gh1mau 🙂
210166.strip

Lua Programming : Siri 1

Posted: 11 November, 2013 in programming

Salam semua, entri kali ni aku nak kongsi dan bincangkan tentang lua scripting. Lua adalah satu programming language yang digunakan dalam Wireshark, Snort dan Nmap. Nmap mempunyai satu function untuk menjalankan scripts, dan script ni boleh ditulis dengan menggunakan bahasa Lua ni. Untuk mula membuat scripting bagi nmap, pertama sekali, kita kena paham la sedikit sebanyak pasal lua ni. Nmap menyediakan API dan Libraries yang banyak dan memudahkan developer untuk membangunkan script baru. Insya Allah, nanti aku akan buat entri pasal nmap scripting ni.

lua

Lua is a powerful, fast, lightweight, embeddable scripting language.

Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.

Lua is designed, implemented, and maintained by a team at PUC-Rio, the Pontifical Catholic University of Rio de Janeiro in Brazil. Lua was born and raised in Tecgraf, the Computer Graphics Technology Group of PUC-Rio, and is now housed at Lablua. Both Tecgraf and Lablua are laboratories of the Department of Computer Science of PUC-Rio.

“Lua” (pronounced LOO-ah) means “Moon” in Portuguese. As such, it is neither an acronym nor an abbreviation, but a noun. More specifically, “Lua” is a name, the name of the Earth’s moon and the name of the language. Like most names, it should be written in lower case with an initial capital, that is, “Lua”. Please do not write it as “LUA”, which is both ugly and confusing, because then it becomes an acronym with different meanings for different people. So, please, write “Lua” right!

Ok, tanpa membuang masa kita bincangkan sedikit sebanyak tentang asas Lua Programming ini. Pertama sekali kita akan lihat struktur function dalam lua. Macam mana kita nak buat function yang asas.

1

Function terdiri daripada beberapa komponen. Function bermula dengan sintaks seperti dibawah, dan ditutup dengan end. Function perlu diberi nama, objek didalam () adalah parameter. Code yang berada di dalam function disebut chunks. Berikut adalah satu function mudah untuk kita printkan senarai nombor dari 1 hingga 10.

function senarai(a,b)
for nombor = a,b do
print ("Bil:" ..nombor)
end
end

senarai(1,10)

Di dalam lua, kita boleh membuat comments seperti berikut:

-- ini adalah single line comment
--[[--
ini adalah
multiline comments
--]]--

Macam mana kita nak assign value pada variable? Dalam lua tak ada specific data type. Sangat mudah dan straightforward. Cuba lihat contoh dibawah.

nombor = 10
nama = "ali"
nama = 'ali'
kehadiran = false
warna {"merah","hijau","biru","kuning"}
paparkehadiran = kehadiran or "Tidak Hadir"
a,b,c = 1,2,3

Local variable, hanya boleh diakses dalam block dimana ianya dideclare, berbeza dengan global variable, boleh diakses dari mana-mana bahagian code. Dalam kod dibawah, kita declare satu local variable (nama) didalam function paparnama. Kemudian kita cuba paparkan variable nama (print(nama)) dari luar function tersebut. Hasilnya adalah nil(tiada).

function paparnama()
local nama = "Ali"
end

print (nama)

Kita declare satu global variable nama,dan bila kita print variable nama, kita akan dapat nilai Abu.

nama = "Abu"
function paparnama()
local nama = "Ali"
end

print (nama)

2

Sekarang ni kita bincangkan secara asas tentang loops. Kita akan gunakan for loop. Konsepnya sama saja dengan programming language yang lain, jadi tak yah la nak citer panjang la. heheheh 🙂

for nombor = start, maximum, increment do
print ("Bil:" ..nombor)
end

3

Ok la, Insya Allah nanti kita akan sambung perbincangan pasal Lua ni dalam siri yang lain.

Happy h4ckin dari pokcik gh1mau 🙂

196051.strip.sunday

Yii Dependent Dropdownlist

Posted: 23 July, 2013 in php, programming

Salam semua. hari ni dah 14 Ramadhan dah, macam menghitung hari nak raya pulak kan. Hehehe. Kali ni aku nak kongsi macam mana kita nak buat dependent dropdownlist dalam yii framework ni. Aku akan gunakan sistem emihrab sebagai demo untuk tujuan ni. Kira upgrade lagi version dia. Minor bug fix gitu 🙂

Ok, tanpa membuang masa, kita terus ke technical part. Rajah dibawah menunjukkan sebahagian dari database diagram bagi sistem ni. Kalau kita tengok sekiran pengguna memilih parlimen tertentu, sepatutnya hanya dun yang dibawah parlimen dipilih sahaja dipaparkan.

drop1

Tapi disebabkan kekangan masa sewaktu nak buat sistem emihrab dulu (3 hari jer beb), fungsi ni tak sempat aku nak buat. Untuk menunjukkan perbezaan, berikut adalah paparan sistem ini sebelum ditambah dengan fungsi dependent dropdownlist. Setiap dropdown akan memaparkan semua data tanpa mengira parent atau child.

drop2

Apa yang kita nak lakukan adalah, bila dropdown parlimen dipilih, secara automatik dropdown nama dun dan kod dun akan memaparkan maklumat dun mengikut parlimen yang dipilih sahaja.

drop3

 

Berikut merupakan code pada controller yang berkaitan. Ingat, action yang baru kita buat, kita perlu declare pada access rules.

public function actionNamadun()
{
$data = Dun::model()->findAll('parlimen=:parlimen',
array(':parlimen'=>(int) $_POST['SenaraiMasjid']['parlimen']));

$data = CHtml::listData($data,'nama_dun','nama_dun');
foreach($data as $id => $value)
{
echo CHtml::tag('option',array('value' => $id),
CHtml::encode($value),true);
}

}

public function actionKoddun()
{
$data = Dun::model()->findAll('parlimen=:parlimen',
array(':parlimen'=>(int) $_POST['SenaraiMasjid']['parlimen']));

$data = CHtml::listData($data,'kod_dun','kod_dun');
foreach($data as $id => $value)
{
echo CHtml::tag('option',array('value' => $id),
CHtml::encode($value),true);
}
}

Dan ini pula code bagi view file.

<tr>
<td><?php echo $form->labelEx($model,'parlimen'); ?></td>
<td>
<?php
echo $form->dropDownList($model,'parlimen',
CHtml::listData(Parlimen::model()->findAll(),'parlimen','parlimen'),
array(
'empty'=>'PILIH PARLIMEN',
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('senaraimasjid/namaDun'),
'update' => '#SenaraiMasjid_'.'dun2'
)
));
?>
</td>

<td><?php echo $form->labelEx($model,'daerah'); ?></td>
<td>
<?php
echo $form->dropDownList($model,'daerah',
CHtml::listData(Daerah::model()->findAll(), 'daerah','daerah'),
array(
'empty'=>'PILIH DAERAH',
));
?>
</td>
</tr>

<tr>
<td><?php echo $form->labelEx($model,'dun2'); ?></td>
<td>
<?php
echo $form->dropDownList($model,'dun2',
CHtml::listData(Dun::model()->findAll(),'nama_dun','nama_dun'),
array(
'empty'=>'PILIH NAMA DUN',
'ajax' => array(
'type' => 'POST',
'url' => CController::createUrl('senaraimasjid/kodDun'),
'update' => '#SenaraiMasjid_'.'dun1'
)
));
?>
</td>

<td><?php echo $form->labelEx($model,'dun1'); ?></td>
<td>
<?php
echo $form->dropDownList($model,'dun1',
CHtml::listData(Dun::model()->findAll('parlimen= :parlimen',
array(':parlimen'=>$model->parlimen)), 'kod_dun', 'kod_dun'),
array('empty'=>'PILIH KOD DUN'));
?>
</td>
</tr>

Dan hasilnya adalah seperti berikut, nama dun dan kod dun yang dipaparkan adalah mengikut parlimen yang dipilih. Lagi sekali, fungsi ini dibuat adalah untuk memudahkan pengguna menggunakan sistem. Hehehe. Nasib kau la labu.

drop4

 

drop5

Happy h4ckin dari pokcik gh1mau 🙂

188976.strip.sunday

Salam semua, hari ni dah 13 Ramadhan dah, badan pun dah mula letih, perut rasa lapar, kepala rasa berat jer, ni semua lah antara ujian kecil di bulan Ramadhan. Ada yang tanya apa yang special sangat bulan Ramadhan ni, pada aku, bulan ni dimuliakan kerana diturunkan al – Quran padanya. Ok la, cukuplah tu, citer panjang-panjang pun bab ni aku bukannya ustaz. Hehehe

(Masa yang diwajibkan kamu berpuasa itu ialah) bulan Ramadan yang padanya diturunkan Al-Quran, menjadi petunjuk bagi sekalian manusia, dan menjadi keterangan-keterangan yang menjelaskan petunjuk dan (menjelaskan) perbezaan antara yang benar dengan yang salah. Oleh itu, sesiapa dari antara kamu yang menyaksikan anak bulan Ramadan (atau mengetahuinya), maka hendaklah ia berpuasa bulan itu; dan sesiapa yang sakit atau dalam musafir maka (bolehlah ia berbuka, Kemudian wajiblah ia berpuasa) sebanyak hari yang ditinggalkan itu pada hari-hari yang lain. (Dengan ketetapan yang demikian itu) Allah menghendaki kamu beroleh kemudahan, dan Ia tidak menghendaki kamu menanggung kesukaran. Dan juga supaya kamu cukupkan bilangan puasa (sebulan Ramadan), dan supaya kamu membesarkan Allah kerana mendapat petunjukNya, dan supaya kamu bersyukur.

al baqarah : 185

Entri kali ni, aku nak kongsikan macam mana kita nak buat autocomplete dropdown list. Kita akan upgrade sistem emihrab ni. Biarlah orang tak nak pakai atau tak nak appreciate sistem ni, lantak hang la wei! Hehehe.
At least aku dapat jugak brush up skill programming dan belajar benda-benda baru 🙂

Dalam versi yang sebelum ini, kita menggunakan dropdown list yang biasa. Valuenya di populate dari satu table tertentu. Kalau kita tengok gambar dibawah, bila kita pilih nama masjid (dropdown list), dia akan menyenaraikan semua nama masjid yang ada dalam table senarai_masjid. Ini sedikit sebanyak menyukarkan pengguna sistem, sebab perlu scroll satu satu untuk mencari nama masjid yang berkaitan.

autocomplete1

Berikut adalah code untuk tujuan paparan dropdown list yang biasa. (Seperti dalam gambar di atas)

<table>
<tr onmouseover="this.style.backgroundColor='#ffff66';" onmouseout=
"this.style.backgroundColor='#d4e3e5';">
<td>
<?php echo $form->labelEx($model,'nama_masjid'); ?>
</td>

<td>
<?php echo $form->dropDownList($model,'nama_masjid', CHtml::listData(SenaraiMasjid::model()->findAll(), 'nama_masjid','nama_masjid'), array(
'empty'=>'PILIH NAMA MASJID',
));
?>
</td>
</tr>
</table>

Sekarang ni, kita buang code dropdown list yang kat atas tu. Kita akan gunakan CJuiAutoComplete. Buat perubahan pada fail _form.php. Berikut adalah code bagi bahagian view.

<table>
<tr onmouseover="this.style.backgroundColor='#ffff66';" onmouseout=
"this.style.backgroundColor='#d4e3e5';">
<td><?php echo $form->labelEx($model,'nama_masjid'); ?></td>
<td>
<?php
$this->widget('zii.widgets.jui.CJuiAutoComplete',
array(
'name'=>'namamasjid',
'model'=>$model,
'attribute'=>'nama_masjid',
'source'=>$this->createUrl('ajk/autocomplete'),

'options'=>array(
'showAnim'=>'fold',
),

'htmlOptions'=>array(
'style'=>'width: 400px;',
),
));
?>
</td>
</tr>
</table>

Pada bahagian controller pulak, kita taipkan code seperti dibawah. Untuk contoh ni aku gunakan ajk controller. Dan ingat kita perlu declarekan nama function yang kita buat ni dalam function access rule.

public function actionAutocomplete() {
$res =array();

if (isset($_GET['term'])) {
$qtxt ="SELECT nama_masjid FROM senarai_masjid WHERE nama_masjid LIKE :nama_masjid";
$command =Yii::app()->db->createCommand($qtxt);
$command->bindValue(":nama_masjid", '%'.$_GET['term'].'%', PDO::PARAM_STR);
$res =$command->queryColumn();
}

echo CJSON::encode($res);
Yii::app()->end();
}

Dan hasilnya adalah seperti dalam gambar dibawah. Jadi pengguna tak perlu nak scroll satu-satu nama masjid seperti sebelum ni, hanya taipkan nama masjid (keyword), dan sistem akan paparkan nama masjid yang berkaitan.

autocomplete2

autocomplete3

System Developer berhempas pulas memikirkan dan upgrade sistem supaya memudahkan pengguna hingga ke peringkat maksimum, tapi selalunya pengguna sistem macam hampeh, bukannya nak guna sistem. Bila sistem tak der bukan main suh buat. Ini lah lumrah manusia. Biarkan.. Biarkan.. Biarkan..

Happy h4ckin dari pokcik gh1mau 🙂

dilbert-strip