Statement while dalam PHP mungkin tidak asing lagi buat para webmaster, while digunakan untuk menampilkan data secara array maupun membuat pernyataan yang terus menerus secara berulang. Contoh sederhana kita akan menampilkan data seperti dibawah ini:

PRODUCT
Mie Instan

Indomie

Indomie Rasa Soto

Indomie Goreng

Sedaap

Rasa Kari

Rasa Soto

Snack

Potatoes

Chitatoes

Kira kira dari contoh tersebut sudah tergambar belum alur logikanya? Jika sudah mau pake apa menampilkannya, apakah mau pakai while bersarang atau pakai triger SQL? Ok mau pakai triger atau mau pakai while gimana anda mamahaminya mau pake yang mana karena dalam pemrograman tidak harus mengikuti satu langkah karena yang penting hasil output nya sama tidak berbeda. Mungkin yang berbeda hanyalah waktu eksekusi code nya.

1. Pakai While

Kita buat dulu tabel dibawah ini:
kategori
katid int(6) primary key
kjudul char(150)

artikel
artid int(6) primary key
ajudul char(150)
aisi text
katid int(6)

Buatlah tabel diatas kemudian isikan sample data sebagai berikut:

kategori
1 | Ekonomi
2 | Bisnis
3 | Teknologi
4 | Tutorial

artikel
1 | Ekonomi Berbasis Syariah | Isi artikel bla bla bla | 1
2 | Menjadi wirausaha muda | Isi Bla bla bla | 2
3 | Computer Pintar Pertama | Isi artikel bla bla disini | 3
4 | Virus Komputer Pertama | isi artikel bla bla | 3
<?php
$data=mysql_query("SELECT * FROM rm_kategori ORDER BY idkat ASC");
if(mysql_num_rows($data) > 0)
{
echo '<ol>';
while($k=mysql_fetch_array($data))
{
echo '<li>'.$k[judul];
$katid=$k[katid];
$artikel=mysql_query("SELECT * FROM artikel WHERE katid='$katid'");
if(mysql_num_rows($artikel) > 0)
{
echo '<ol>';
while($a=mysql_fetch_array($artikel))
{
echo '<li>'.$a[ajudul].'</li>';
}
echo '</ol></li>';
}
else{
echo '</li>';
}
}
echo '</ol>';
}
else{
echo '<ul>
<li>Belum ada record</li>
</li>';
}

?>

Penjelasan:
Skrip diatas adalah untuk menampilkan daftar kategori berdasarkan id kategori (idkat) secara ascending / urutan kecil ke atas. Dibawah judul kategori akan tampil judul judul artikel yang terkait (jika kategori memiliki artikel tampilkan artikel). Analogi gambarannya seperti dibawah ini:

1. Ekonomi
1. Ekonomi Berbasis Syariah

2. Bisnis
1. Menjadi wirausaha muda

3. Teknologi
1. Computer Pintar Pertama

2. Virus Komputer Pertama

4. Tutorial

Perhatikan dibagian script WHERE dalam WHILE disitu kita filter dulu artikel apa yang akan ditampilkan berdasarkan kategori secara array. Makanya untuk menghindari crash dalam proses eksekusi perintah kita inisialiasi dulu data yang akan difilter yaitu berdasarkan id kategori. Cara diatas adalah contoh sederhana dengan menggunakan skrip murni PHP.

2. TRIGER and Grouping

Cara berikutnya adalah dengan pembuatan triger dimana data dikelompokan berdasarkan group yang kita buat dalam perintah SQL.

Contoh:
Seumpamanya kita akan membuat menu multilevel dan multisub seperti dibawah ini:
HOME       PROFILE         SERVICE
- Sejarah
- Organisasi

- Pengurus
- Pimpinan

Nah kira kira skripnya seperti apa? Oke kita mulai bahas. Pertama adalah anda siapkan tabel di databasenya

rm_menu

men_id int(6)
men_menu varchar(35)
men_url varchar(100)
men_judul varchar(150)
men_status enum('publish', 'draft')
men_parent_id int(6)
men_urutan int(5)

Kemudian isi dengan sample data dibawah ini (sesuiakan urutan yang dipisahkan dengan | )

1 | Profile | pages.php?profile | Profile Perusahaan | publish | 1 | 0
2 | Sejarah | pages.php?sejarah | Sejarah Perusahaan | publish | 1 | 1
3 | organisasi | pages.php?organisasi | Organisasi Perusahaan | publish | 1 | 2
4 | Pengurus | pages.php?pengurus | Pengurus Perusahaan | publish | 3 | 0
5 | Pimpinan | pages.php?pimpinan | Pimpinan Perusahaan | publish | 3 | 1

Kemudian setelah kita mengisi tabel langkah pertama adalah membuat triger dan grouping
SELECT a.men_id, a.men_menu, a.men_url, Deriv1.Count FROM rm_menu a LEFT OUTER JOIN (SELECT men_parent_id, COUNT(*) AS Count FROM rm_menu GROUP BY men_parent_id) Deriv1 ON a.men_id=Deriv1.men_parent_id WHERE a.men_parent_id='1' AND a.hal_status='publish' ORDER BY hal_urutan ASC
Oke daripada bingung kita langsung ke contoh pembuatan menu dengan:
<?php
$parent_id=1;
$urutan=0;

$menu=mysql_query("SELECT a.hal_id, a.hal_menu, a.hal_url, Deriv1.Count FROM rm_halaman a LEFT OUTER JOIN (SELECT hal_parent_id, COUNT(*) AS Count FROM rm_halaman GROUP BY hal_parent_id) Deriv1 ON a.hal_id=Deriv1.hal_parent_id WHERE a.hal_parent_id='$parent_id' AND a.hal_status='publish' ORDER BY hal_urutan ASC");
echo "\n<ul>\n";
while ($m=mysql_fetch_assoc($menu))
{
if($m[Count] > 0)
{
$a=$m[Count];
echo '<li><a href="'.$m[men_url].'">'.$m[men_menu].'</a>';
rm_menu($m[men_id],$urutan + 1);
echo "</li>\n";
}
else if($m[Count] < 1)
{
echo '<li><a href="halaman.php?id='.$m[men_id].'">'.$m[men_menu].'</a>';
echo "</li>\n";
}
else;
}
echo '</ul>';

?>

Oke mudah bukan, jangan dibikin sulit pemrograman itu..namanya juga belajar. jika ada kesalahan mohon dikoreksi ya para master...malum new bie he..he..

Post a Comment

 
Top