Anda di halaman 1dari 10

MODUL 14

WML, PHP, dan MySQL


1. APLIKASI WAP DENGAN PHP
Pengembangan aplikasi WAP dengan PHP memungkinkan membuat aplikasi seperti
database, mail server, pengiriman pesan, dll.Supaya script PHP dapat didukung oleh
perangkat WAP, script ini harus menghasilkan output header WML kepada client.
Karena itu, setiap dokumen WML yang berisi yang berisi kode PHP harus menyertakan
baris-baris berikut yang ditempatkan pada awal deck.
<?php
header("Content-type: text/vnd.wap.wml");
echo "<?xml version=\"1.0\"?>";
echo "<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"
\"http://www.wapforum.org/DTD/wml_1.1.xml\">";
?>

Latihan 1 :
Menampilkan data tanggal hari ini, simpan sebagai file berekstensi php, misal :
simpledate.php
<?php
header("content-type: text/vnd.wap.wml");
echo("<?xml version=\"1.0\"?>");
echo("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"
\"http://www.wapforum.org/DTD/wml_1.1.xml\">");
?>
<wml>
<card id="satu" title="simple date">
<p>
<?php
$tanggal = date("d M Y");
Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 14) #1/10

print "hai !, hari ini tanggal<br/>";


print($tanggal);
?>
</p>
</card>
</wml>

Simpan dan jalankan dengan mengetikkan URL http://localhost/wap/simpledate.php


dari WAP Browser, jika file simpledate.php anda simpan di directory htdocs/wap/
2. INTERKONEKSI DENGAN DATABASE MYSQL
Dengan memakai database, maka user yang mengakses dapat memperoleh data atau
informasi dari server dan server dapat menyimpan data yang dikirimkan user dalam
databases MySQL.
Langkah-langkah yang perlu dilakukan :
Latihan 2 :
Buat database di MySQL
Mysql>create database wap;
Mysql>use wap;

Latihan 3 :
Buat tabel.
Create table skor_bola (
klub1 varchar(20),
skor1 int,
klub2 varchar(20),
skor2 int
);

Isikan data pada tabel diatas :


insert
insert
insert
insert

into
into
into
into

skor_bola
skor_bola
skor_bola
skor_bola

values
values
values
values

(AS Roma, 0,Real Madrid,3);


(Juventus, 2,Barcelona,4);
(Man Utd, 3,FC Porto,1);
(Chelsea, 2,Liverpol,1);

Latihan 4 :
Buat listing program php, beri nama : skor.php

Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 14) #2/10

<?php
header("content-type: text/vnd.wap.wml");
echo("<?xml version=\"1.0\"?>");
echo("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"
\"http://www.wapforum.org/DTD/wml_1.1.xml\">");
?>
<wml>
<card id="satu" title="hasil pertandingan">
<p>
<?php
//koneksi ke database -- host, nama user, password
mysql_connect("localhost","root","");
//pilih database
mysql_select_db("wapdb");
$result = mysql_query("select * from skor_champion");
$jmlBaris = mysql_num_rows($result);
for ($i=0;$i<$jmlBaris;$i++) {
//ambil data pada baris ke-i
$row = mysql_fetch_array($result);
//tampilkan
printf("%s %d-%d
%s<br/>",$row["klub1"],$row["skor1"],$row["skor2"],$row["klub2"]);
}
?>
</p>
</card>
</wml>

Secara singkat, yang dilakukan oleh aplikasi ini adalah:


1. mengirim header ke WAP browser.
2. membuat deck WML baru.
3. membuka koneksi ke database server (localhost, untuk loopback atau lainnya
tergantung konfigurasi sistem anda).
4. memilih database yang digunakan (wapdb).
5. memilih atau mengambil semua informasi (select *) dari tabel skor_champion.
Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 14) #3/10

6. menampilkan data dalam format klub1 skor1-skor2 klub2


Jalankan : http://localhost/wap/skor.php di WAP Browser anda.
Asumsi file skor.php anda simpan di folder htdocs/wap/
3. Membuat COUNTER
Buat tabel.
Create table counter (
tgl_mulai date,
jml int(15) unsigned
);

Latihan 5 :
Buat listing program php, beri nama : counter.php
<?php
header("Content-type: text/vnd.wap.wml");
echo("<?xml version=\"1.0\"?>");
echo("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"
\"http://www.wapforum.org/DTD/wml_1.1.xml\">");
?>
<wml>
<card id="card1" title="counter">
<p align="center">
<?php
mysql_connect("localhost","root","");
mysql_select_db("wapdb");
$result = mysql_query("select * from counter");
while ($row = mysql_fetch_array($result)) {
$tgl_mulai = $row["tgl_mulai"];
$jml = $row["jml"];
}
if (!$jml) {
mysql_query("insert into counter values(current_date(),\"1\")");
$jml = 1;
}
print("anda pengunjung ke-<br/>");
print("<b>$jml</b><br/>");
print("sejak $tgl_mulai");

Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 14) #4/10

$jml++;
mysql_query("update counter set jml='$jml'");
?>
</p>
</card>
</wml>

Setiap kali aplikasi counter dijalankan, variabel $jml ditambah satu dan hasilnya
disimpan dalam tabel counter.
4. APLIKASI POLLING
Buat tabel.
Create table pertanyaan (
tanya_id int(255),
tanya varchar(200),
primary key(tanya_id)
);
Create table jawaban (
jawab_id int(255),
tanya_id int(255),
jawab varchar(100),
primary key(jawab_id,tanya_id)
);
Create table polling (
voter_id int(255),
jawab_id int(255),
ip_voter varchar(30),
primary key(jawab_id,voter_id)
);

Masukkan data
mysql> insert into pertanyaan (
1,
bagaimana situs WAP ini?);
mysql> insert into jawaban (
1,
1,

Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 14) #5/10

sangat bagus+bagus+biasa+jelek+sangat jelek);

Setelah membuat pertanyaan dan jawaban selanjutnya membuat script php untuk
menampilkan pertanyaan dan jawaban tersebut.
Latihan 6 : polling.php
<?php
header("Content-type: text/vnd.wap.wml");
echo("<?xml version=\"1.0\"?>");
echo("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"
\"http://www.wapforum.org/DTD/wml_1.1.xml\">");
?>
<wml>
<card id="card1" title="Polling">
<p align="center">
<?
$file=$PHP_SELF;
include("polling.inc");
mysql_connect($host,$user,$pass);
mysql_select_db($database);
$query = "select pertanyaan.tanya_id,pertanyaan.tanya from pertanyaan,
jawaban where pertanyaan.tanya_id = jawaban.tanya_id";
$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$tanya_id = $row["tanya_id"];
$tanya = $row["tanya"];
}
print($tanya);
$query_jawab = "select * from jawaban where tanya_id = $tanya_id";
$result_jawab = mysql_query($query_jawab);
printf("<select name=\"vote\">");
while ($jawab_row = mysql_fetch_array($result_jawab)) {
$jawab = $jawab_row["jawab"];
$jawab_id = $jawab_row["jawab_id"];
printf("<option value=\"%d\"
onpick=\"../mywap/input_polling.php?vote=%d&amp;file=%s\">%s</optio
n>",$jawab_id,$jawab_id,$file,$jawab);
}

Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 14) #6/10

printf("</select>");
?>
</p>
</card>
</wml>

Latihan 7 : polling.inc
<?
$host = "localhost";
$user = "root";
$pass = "";
$database = "wapdb";
global $host,$user,$pass,$database;
?>

Pilihan jawaban untuk polling dibuat dengan menggunakan elemen <option> di mana
nilai atribut onpicknya telah kita atur menuju ke input_polling.php. File input_polling.php
ini digunakan untuk menyimpan jawaban dan alamat ip dari user ke dalam database.
Berikut kode untuk input:
Latihan 8 : input_polling.php
<?php
header("Content-type: text/vnd.wap.wml");
echo("<?xml version=\"1.0\"?>");
echo("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"
\"http://www.wapforum.org/DTD/wml_1.1.xml\">");
?>
<wml>
<card id="card2" title="Bye...">
<p align="center">
<?
if (!$vote) {
printf("<b>Anda belum memilih!</b>");
print("<a href=\"..$file\">Back</a>");
}
else {
include("polling.inc");

Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 14) #7/10

mysql_connect($host,$user,$pass);
mysql_select_db($database);
$query = "select pertanyaan.tanya from jawaban, pertanyaan where
jawaban.jawab_id = $vote and jawaban.tanya_id = pertanyaan.tanya_id";
$result = mysql_query($query);
$row = mysql_fetch_array($result);
$question = $row[0];
$question = substr($question,0,strlen($question)-1);
$q = str_replace(" ","_",$question);
$cookiename = $SERVER_NAME.$q;
if (!isset($$cookiename)) {
@setcookie($SERVER_NAME.$q,"3",time()+0);
$ip = $REMOTE_ADDR;
$query = "insert into polling (jawab_id,ip_voter) values $vote,'$ip')";
$result = mysql_query($query);
}
else if (mysql_error()) {
print("penyimpanan gagal");
}
printf("<b>Terima kasih Anda telah mengisi<br/>polling</b>");
}
?>
<do type="accept" label="Lihat hasil..">
<go href="lihat_polling.php"/>
</do>
</p>
</card>
</wml>

Pada input_polling.php, terdapat action untuk membuka lihat_polling.php. Script ini


dipakai untuk menampilkan semua hasil polling yang dimasukkan oleh user.
Latihan 9 : lihat_polling.php
<?php
header("Content-type: text/vnd.wap.wml");
echo("<?xml version=\"1.0\"?>");

Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 14) #8/10

echo("<!DOCTYPE wml PUBLIC \"-//WAPFORUM//DTD WML 1.1//EN\"


\"http://www.wapforum.org/DTD/wml_1.1.xml\">");
?>
<wml>
<card id="card3" title="Lihat hasil">
<p>
<?
include("polling.inc");
mysql_connect($host,$user,$pass);
mysql_select_db($database);
$query = "select count(ip_voter), jawab, tanya from polling, jawaban,
pertanyaan where polling.jawab_id = jawaban.jawab_id and
jawaban.tanya_id = pertanyaan.tanya_id group by jawab, tanya order by
jawab, tanya_id desc";
$result = mysql_query($query);
$i = 0;
while ($row = mysql_fetch_row($result)) {
$jumlah[$i] = $row[0];
$jawaban[$i] = $row[1];
$pertanyaan[$i] = $row[2];
$i++;
}
for ($n = 0; $n < $i; $n++) {
if (($pertanyaan[$n] == $pertanyaan[$n-1]) && ($n != 0)) {
$total[$j] += $jumlah[$n];
}
else {
$j++;
$total[$j] += $jumlah[$n];
}
}
$j = 0;
for ($n = 0;$n<$i;$n++) {
if (($pertanyaan[$n] == $pertanyaan[$n-1]) && ($n != 0)) {
if ($total[$j] != 0) {
$persen = number_format(($jumlah[$n] / $total[$g])*100,0);
print("$jawaban[$n] ($jumlah[$n])&nbsp;&nbsp;");
print("$persen%");
Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 14) #9/10

}
else {
print("$jawaban[$n] ($jumlah[$n])<br/>");
print("Hasilnya belum ada");
}
}
else {
$j++;
if ($total[$j] != 0) {
$persen = number_format(($jumlah[$n] / $total[$g]) *100,0);
print("$pertanyaan<br/>");
print("$jawaban[$n] ($jumlah[$n])&nbsp;&nbsp;");
print("$persen%");
}
else {
print("$jawaban[$n]<br/>");
print("$jumlah[$n]<br/>");
print("Hasilnya belum ada");
}
}
}
?>
<a href="polling.php">Back</a>
</p>
</card>
</wml>

Raka Yusuf: Pemrograman Berbasis Web 2 (Modul 14) #10/10