Saturday, July 23, 2011

Inserting table Multiple Rows

Sekarang kita mencoba untuk berkomunikasi dengan database ..
dan untuk lebih memudahkan menggunakan database maka kita perlu tau bgmn cara memasukkan multi data / row dalam ke sebuah tabel.
sengaja saya menulis yang multiplenya karna kasus ini sangat mungkin banyak dipakai dalam mengelola suatu sistem.
nah, biasanya kebanyakan dalam memproses lebih dari satu data ini menggunakan check box, yuk kita lihat gmn syntaxnya .. ^^


Berdasarkan skenario di atas, maka kita siapkan terlebih dahulu beberapa tabel pendukungnya. Untuk contoh ini, kita perlu tabel untuk menyimpan data matakuliah yang diambil mahasiswa serta tabel untuk menyimpan semua matakuliah yang ditayangkan. Untuk tabel-tabel yang lain, misalkan tabel mahasiswa atau yang lain silakan dibuat sendiri ya.

CREATE TABLE mk (
  kodeMK varchar(10),
  namaMK varchar(20),
  PRIMARY KEY (kodeMK)
)

CREATE TABLE ambilmk (
  nim varchar(8),
  kodeMK varchar(10),
  nilai float,
  PRIMARY KEY (nim,kodeMK)
)





Anda dapat menambahkan field-field yang lain pada tabel-tabel di atas bila diperlukan.

Untuk tabel mk, misalkan kita sudah siapkan record-recordnya sebagai berikut:

INSERT INTO mk VALUES ('M001', 'Algoritma');
INSERT INTO mk VALUES ('M002', 'Pengantar Basis Data');
INSERT INTO mk VALUES ('M003', 'Sistem Pakar');

Now… let’s take action… terlebih dahulu kita buat form untuk menampilkan list matakuliah yang ditayangkan untuk dipilih mahasiswa. Dalam form ini, misalkan kita siapkan sebuah textbox untuk memasukkan nim mahasiswa yang akan mengambil matakuliah. Di bawah textbox tersebut, kita tampilkan daftar matakuliahnya menggunakan checkbox.

form.php


<h1>Form Pengambilan Matakuliah</h1>

<form method="post" action="submit.php">
Masukkan NIM <input type="text" name="nim" /><br />
Daftar Matakuliah <br />
<?php
$query = "SELECT * FROM mk";
$hasil = mysql_query($query);
$no = 1;
while ($data = mysql_fetch_array($hasil))
{
  echo "<input type='checkbox' value='".$data['kodeMK']."' name='mk".$no."' /> ".$data['namaMK']."<br />";
  $no++;
}
?>
<input type="submit" name="submit" value="Submit" />
</form>





mysql_connect("dbhost", "dbuser", "dbpassword");
mysql_select_db("dbname");
?>


Form Pengambilan Matakuliah





Masukkan NIM
Daftar Matakuliah

$query = "SELECT * FROM mk";
$hasil = mysql_query($query);
$no = 1;
while ($data = mysql_fetch_array($hasil))
{
  echo " ".$data['namaMK']."
";
  $no++;
}
?>






Catatan:
Perintah pada baris ke-17 dalam script di atas akan menghasilkan tag-tag XHTML berikut ini ketika dijalankan

Algoritma
Pengantar Basis Data
Sistem Pakar





Perhatikan pada atribut name untuk setiap komponen checkbox. Atribut ini kita buat name yang unik untuk setiap checkboxnya. Jangan memberi value name yang sama untuk checkboxnya karena apabila diberikan name yang sama maka value yang disubmit adalah value dari checkbox terakhir yang dipilih. Oleh karena itu supaya namenya unik, kita pakai bantuan increment $no, sehingga kita dapatkan name ‘mk1′, ‘mk2′, … dst.

Selanjutnya kita buat script untuk memproses value yang disubmit via form di atas. Mungkin yang menjadi kesulitan kita adalah membaca value yang diinput melalui checkbox dinamis tersebut. Untuk data NIM saya kira tidak menjadi masalah untuk dibaca.

Untuk membaca value berasal dari checkbox dinamis, kita dapat menggunakan looping. Lho mengapa looping? bukankah kita bisa menuliskan perintah untuk pembacaan value-value checkboxnya secara langsung seperti ini:

$mk1 = $_POST['mk1'];
$mk2 = $_POST['mk2'];
$mk3 = $_POST['mk3'];





Iya sih… tapi dalam contoh ini kan kita hanya punya 3 data matakuliah sehingga tidak menjadi masalah ketika ketika menuliskan perintah pembacaan valuenya satu persatu. Tapi.. bagaimana bila terdapat 30 matakuliah yang tersedia untuk dipilih? He.. 3x repot bukan? So.. solusinya adalah kita pakai looping.

submit.php


mysql_connect("dbhost", "dbuser", "dbpassword");
mysql_select_db("dbname");

$nim = $_POST['nim'];

for($i = 1; $i <= 3; $i++)
{
   $mk = $_POST['mk'.$i];
   if (!empty($mk))
   {
      $query = "INSERT INTO ambilMK VALUES('$nim', '$mk', 0)";
      mysql_query($query);
   }
}

echo "Terimakasih sudah memilih matakuliah";

?>





Catatan:
Perintah pada baris ke-10 digunakan untuk membaca value untuk setiap komponen mk1, mk2, mk3. Apabila valuenya tidak kosong (empty), maka masukkan ke database.

Eh… tunggu dulu, pada contoh ini jumlah matakuliahnya adalah fixed yaitu 3, sehingga kita bisa dengan mudah mengeset jumlah loopingnya ada 3 (for($i = 1; $i <= 3; $i++)). Namun... bagaimana bila jumlah checkboxnya dinamis? Waduh... gimana nih? Ya.. kita terpaksa cari akal nih. Idenya adalah kita sisipkan sebuah komponen tersembunyi (hidden component) dalam form pemilihan matakuliah. Hidden component ini akan diisikan dengan jumlah matakuliah yang ditayangkan (muncul dalam daftar pilihan). Jumlah matakuliah ini dapat diperoleh dengan memanfaatkan increment $no, yaitu nilai $no terakhir setelah looping berakhir dikurangi 1. Mengapa harus dikurangi 1? Pikirkan sendiri ya..

Begitu form ini disubmit maka jumlah matakuliah ini menjadi input yang akan digunakan dalam looping. So... kita perbaiki script formnya menjadi seperti di bawah ini:

form.php

mysql_connect("dbhost", "dbuser", "dbpassword");
mysql_select_db("dbname");
?>


Form Pengambilan Matakuliah


Masukkan NIM
Daftar Matakuliah

$query = "SELECT * FROM mk";
$hasil = mysql_query($query);
$no = 1;
while ($data = mysql_fetch_array($hasil))
{
  echo " ".$data['namaMK']."
";
  $no++;
}
?>


Jangan lupa, kita juga ubah sedikit script pemrosesan formnya

submit.php
mysql_connect("dbhost", "dbuser", "dbpassword");
mysql_select_db("dbname");

$nim = $_POST['nim'];
$jumMK = $_POST['jumMK'];

for($i = 1; $i <= $jumMK; $i++)
{
   $mk = $_POST['mk'.$i];
   if (!empty($mk))
   {
      $query = "INSERT INTO ambilMK VALUES('$nim', '$mk', 0)";
      mysql_query($query);
   }
}

echo "Terimakasih sudah memilih matakuliah";

?>

Udah selesai deh scriptnya. Mudah bukan cara membuat checkbox dinamis ini berserta pemrosesannya? Tidak ada yang tak mungkin dengan programming. Semuanya pasti ada caranya, selama kita punya ide untuk menyelesaikannya. 'Ide' is the most important thing in programming. So.. inilah yang membuat mahalnya suatu program atau script, karena 'ide' sendiri adalah mahal

Mudah-mudahan artikel ini ada manfaatnya. Selamat belajar dan mencoba.
Read more »

Jquery Auto Complete

Auto Complete adalah suatu fungsi untuk mencari data dengan mengetik sebuah keyword pada suatu text(html) tersebut. Jquery UI mempunyai fasilitas tersebut , maka dari hal itu file - file yang harus dibutuhkan adalah sbb :
1. jquery.min.js

2. jquery-ui.min.js

misal kita mempunyai text html sbb :
input type="text" name="barang" class="id" size="30" />
div id="result">/div>

text tersebut mempunyai class dengan nama id dan ada div id='result' untuk menampilkan hasil dr autocomplete tersebut.

nah setelah itu kita buat file javascript auto completenya sbb :


$(document).ready( function() {
            $(".id").autocomplete({
                minLength: 2,
                source:
                    function(req, add){
                    $.ajax({
                        url: "http://localhost/admin/barang/", ----> untuk mengambil data barang
                        dataType: 'json',
                        type: 'POST',
                        data: req,
                        success:
                            function(data){
                            if(data.response =="true"){
                                add(data.message);
                            }
                        },
                    });
                },
                select:
                    function(event, ui) {
                    $("#result").append(
                    " input type='text' id='harga_barang_free' name='harga_barang_free' value='" + ui.item.value1 + "' size='15' /"
                );
                },
            });
        });

Read more »

Membuat Chart Flash dengan FrameWork Code Igniter

Untuk aplikasi yang sedikit kompleks, tampilan grafik banyak membantu user dalam memahami data. Grafik lebih user friendly karena mayoritas user mampu menerjemahkan grafik lebih baik daripada tampilan berupa tabel. Sebagai programmer (khususnya web), library grafik sangat banyak beredar. Ada yang berbayar dan ada yang gratis. Bukan berarti yang gratis lebih jelek daripada yang berbayar.


Anda tidak perlu sedih. Library Flash yang tidak kalah cantiknya dan berlisensi gratis adalah Open Flash Chart. Tidak hanya gratis, library ini juga open source! Anda bisa mendownload file flashnya berupa FLA file beserta class yang menyertainya. Dan menurut saya, library ini lebih cantik daripada Fusion Flash Chart, karena animasi overlaynya lebih menawan. Apalagi jika Anda bekerja dalam lingkungan Framework Codeigniter, library ini bisa kita masukkan dalam library aplikasi yang bisa dipangggil sewaktu-waktu. Sampai sekarang, saya benar-benar jatuh hati dengan library ini. OK, biar ndak banyak basa basi, mari kita mulai membuat chart dengan Open Flash Chart di lingkungan Framework Codeigniter.
Download library-nya di sini (Ingat! Download yang versi 1.97 saja karena versi 2 masih tahap pengembangan.
Setelah Anda download, buat folder 'assets' di dalam root project CodeIgniter Anda. Buat lagi 2 folder di dalamnya dengan nama 'js' dan 'swf'. Copykan file swfobject.js dari folder js hasil downloadan tadi ke dalam folder js di dalam folder assets Codeigniter kita. Setelah itu copykan file open-flash-chart.swf dari hasil downloadan ke dalam folder swf di dalam folder 'assets'.
OK, langkah berikutnya copykan file dari hasil downloadan di dalam folder 'php-ofc-library', yaitu open-flash-chart.php ke dalam aplikasi CI yaitu di path 'system/application/libraries'. Rename file php dengan nama graph.php.
Buka file graph.php tersebut dan cari baris :


$this->js_path = 'js/';
$this->swf_path = '';

ubah menjadi


$this->js_path = base_url().'assets/js/';
$this->swf_path = base_url().'assets/swf/'

Instalasi beres, sekarang tinggal menggunakan saja, kawan. Buat Model baru misalkan grafik_model.php di dalam folder Models. Buat fungsi cretaegraph dan isikan baris kode berikut ini (ini adalah data acak) : 


function creategraph()
{
    $this->load->library('graph');
    $data_1 = array();
    for( $i=0; $i<7; $i++ )
    {
        $data_1[] = rand(30,550);
    }
    $ff = new graph();
    $ff->set_data( $data_1 );
    $ff->title( 'Traffic SMS 1 Minggu Terakhir', '{font-size: 14px; color: #3D5570;font-family:calibri;}' );
    $ff->line_dot( 3, 5, '#8B6122', 'SMS Jarkom', 10 );
    $ff->bg_colour = '#FFFFFF';
    $ff->x_axis_colour( '#818D9D', '#ADB5C7' );
    $ff->y_axis_colour( '#818D9D', '#ADB5C7' );
    $ff->set_x_labels( array( '25/12','26/12','27/12','28/12','29/12','30/12','31/12' ) );
    $ff->set_y_max( 600 );
    $ff->y_label_steps( 10 );
    $ff->set_y_legend( 'Jumlah SMS', 12, '#3D5570' );
    $ff->set_x_legend( 'Tanggal', 12, '#3D5570' );
    $ff->set_output_type('js');
    $ff->width = '90%';
    $ff->height = '300';
    return $ff->render();
}

Setelah itu kita panggil menggunakan controller. Buat file controller di dalam folder controller dengan nama grafik.php. Di dalam fungsi index, ketikkan baris kode berikut ini.


$this->load->model('Grafik_model');
$data['graph1'] = $this->Grafik_model->creategraph();
$this->load->view('tampilgrafik', $data);

Buat file view untuk menampilkan grafik di dalam folder views, yaitu tampilgrafik.php. Ketikkan Code berikut:


<html>
    <head>
        <title>Grafik Flashtitle>
    head>
    <body>
    php echo $graph1;?>
    body>
html>
Read more »