• Tidak ada hasil yang ditemukan

ANALISA DAN PERANCANGAN

4.4. Tampilan Web Maintenance Administrator

4.4.4. Tampilan Menu Tambah Kata

Menu ini digunakan untuk menambah perbendaharaan kata. Kata yang ditambahkan disini nantinya akan ditampilkan di menu Daftar Kata Inggris dan menu Daftar Kata Indonesia. Pada menu ini terdapat form untuk menginputkan kata, jenis kata, dan arti kata.

Gambar 4-15. Tampilan Form Tambah Kata

Kata yang dimasukkan akan disimpan di database. Jika berhasil melakukan input kata, maka akan muncul konfirmasi kata disimpan. Apabila ada form yang dikosongkan, maka akan muncul pemberitahuan utnuk mengisi form yang kosong. Tampilannya seperti berikut.

Gambar 4-16. Tampilan Pesan Input Form Tidak Lengkap

Jika kata yang dimasukkan sudah ada sebelumnya, maka akan muncul pemberitahuan bahwa kata dan arti sudah ada. Tampilannya seperti berikut.

Proses penambahan kata tampak pada listing berikut. CekLoginAdmin(); MenuAdmin(); if ($GLOBALS['admin']) { if ($_POST['simpan'] == 1) TambahKataIng(); } else Alihkan('login.php');

// tampilkan header, subheader, content, dan footer $GLOBALS['subheader'] = '

Web Maintenance<br/>Aplikasi J2ME Kamus Inggris-Indonesia Indonesia-Inggris';

$GLOBALS['page_title'] = "Tambah Kata Inggris"; include('../includes/header.php');

// tampilan form tambah kata Inggris $isi = '

<form name="form_tambah_ing" method="post" action="">

<table width="300" align="center" cellpadding="4" cellspacing="2" border="0" class="tborder">

<tr class="judul"><td colspan="2">Tambah Perbendaharaan Kata</td></tr>

<tr class="odd">

<td width="35%">Kata Inggris</td>

<td width="65%"><input type="text" name="kata" value="'.$_POST['kata'].'" size="30"/></td>

</tr>

<tr class="even"> <td>Jenis Kata </td>

<td><select name="jenis" class="input"> <option value="kb">kb. <option value="kk">kk. <option value="ks">ks. <option value="kki">kki. <option value="kkt">kkt. <option value="ksam">ksam. </select></td> </tr> <tr class="odd"> <td valign="top">Arti </td>

<td><input type="text" name="arti" value="'.$_POST['arti'].'" size="30"/></td>

</tr>

<tr class="even"> <td></td>

<td><input type="submit" value="Simpan"/>&nbsp; <input type="reset" value="Reset" /></td> </tr> <tr class="error"> <td></td> <td>'.$GLOBALS['error'].'</td> </tr> <tr class="pesan"> <td></td> <td>'.$GLOBALS['pesan'].'</td> </tr> </table>

<input type="hidden" name="simpan" value="1"/> </form>';

echo $GLOBALS['adminContent']; include('../includes/footer.php');

// fungsi untuk memproses penambahan kata inggris function TambahKataIng() {

// cek input! apakah masih kosong... // jika kosong, tampilkan pesan error if ($_POST['kata'] == '') {

$GLOBALS['error'] = 'Masukkan sebuah kata.'; } elseif ($_POST['jenis'] == '') {

$GLOBALS['error'] = 'Masukkan jenis kata.'; } elseif ($_POST['arti'] == '') {

$GLOBALS['error'] = 'Masukkan arti kata.'; } else {

// kueri untuk mengecek apakah kata tersebut sudah ada di tabel // untuk menghindari penggandaan id (key)

$kueri0 = "SELECT id_ing FROM inggris " .

"WHERE kata_ing='".addslashes($_POST['kata'])."' ";

// kueri untuk mengecek juga apakah arti (kata indonesia) sudah ada dalam tabel

// supaya tidak terjadi penggandaan id $kueri1 = "SELECT id_ind FROM indonesia " .

"WHERE kata_ind='".addslashes($_POST['arti'])."' "; // kueri untuk memasukkan kata inggris

$kueri2 = "INSERT INTO inggris (kata_ing) " .

"VALUES ('".addslashes($_POST['kata'])."')"; // kueri untuk memasukkan kata indonesia

$kueri3 = "INSERT INTO indonesia (kata_ind) " .

"VALUES ('".addslashes($_POST['arti'])."') "; // kueri untuk memasukkan relasi kata ke tabel arti $kueri4 = "INSERT INTO arti (id_ing, id_ind) " . " SELECT a.id_ing, b.id_ind " . " FROM inggris a, indonesia b " .

"WHERE a.kata_ing='".addslashes($_POST['kata'])."' " . "AND b.kata_ind='".addslashes($_POST['arti'])."' "; // cek eksistensi kata yang diinputkan

$res0 = mysql_query($kueri0); $res1 = mysql_query($kueri1); // jika kata inggris sudah ada... if (mysql_num_rows($res0) > 0) {

// jika kata indonesia (arti) belum ada... if (mysql_num_rows($res1) == 0) {

// simpan kata indonesia $res3 = mysql_query($kueri3); // simpan relasi kata

$res4 = mysql_query($kueri4); if (($res3) && ($res4)) {

$last_id = mysql_query("SELECT LAST_INSERT_ID()"); $id = mysql_fetch_row($last_id);

// masukkan jenis kata ke tabel arti

$kueri5 = "UPDATE arti SET jenis_kata='".$_POST['jenis']."' WHERE id_arti=".$id[0]." ";

$res5 = mysql_query($kueri5);

if ($res5) $GLOBALS['pesan'] = 'Kata disimpan.'; else $GLOBALS['error'] = 'Gagal menyimpan kata.'; } else $GLOBALS['error'] = 'Gagal menyimpan kata.';

// jika kata inggris dan arti sudah ada... } else {

// sebelumnya dicek dulu di tabel arti // apakah relasi yang sama sudah ada

$row_ing = mysql_fetch_assoc($res0); $row_ind = mysql_fetch_assoc($res1); $eng = $row_ing['id_ing'];

$ind = $row_ind['id_ind'];

// cek relasi

$kueri6 = "SELECT * FROM arti WHERE id_ing = ".$eng." AND id_ind = ".$ind." ";

$res6 = mysql_query($kueri6); if (mysql_num_rows($res6) > 0) {

$GLOBALS['error'] = "Kata dan definisinya sudah ada."; } else {

// jika relasi kata tersebut belum ada di tabel arti, // simpan relasi kata dan jenis kata ke tabel arti! $res4 = mysql_query($kueri4);

if ($res4) {

$last_id = mysql_query("SELECT LAST_INSERT_ID()"); $id = mysql_fetch_row($last_id);

// masukkan jenis kata ke tabel arti

$kueri5 = "UPDATE arti SET jenis_kata='".$_POST['jenis']."' WHERE id_arti=".$id[0]." ";

$res5 = mysql_query($kueri5);

if ($res5) $GLOBALS['pesan'] = 'Kata disimpan.'; else $GLOBALS['error'] = 'Gagal menyimpan kata.'; } else $GLOBALS['error'] = 'Gagal menyimpan kata.'; }

}

// jika kata inggris belum ada... } else {

// jika kata indonesia belum ada // berarti definisi baru

if (mysql_num_rows($res1) == 0) { // simpan kata inggris

$res2 = mysql_query($kueri2); // simpan kata indonesia $res3 = mysql_query($kueri3); // simpan relasi kata

$res4 = mysql_query($kueri4);

if (($res2) && ($res3) && ($res4)) {

$last_id = mysql_query("SELECT LAST_INSERT_ID()"); $id = mysql_fetch_row($last_id);

// masukkan jenis kata ke tabel arti

$kueri5 = "UPDATE arti SET jenis_kata='".$_POST['jenis']."' WHERE id_arti=".$id[0]." ";

$res5 = mysql_query($kueri5);

if ($res5) $GLOBALS['pesan'] = 'Kata disimpan.'; else $GLOBALS['error'] = 'Gagal menyimpan kata.'; } else $GLOBALS['error'] = 'Gagal menyimpan kata.'; // jika kata indonesia sudah ada...

} else {

// simpan kata inggris

$res2 = mysql_query($kueri2); // simpan relasi kata

$res4 = mysql_query($kueri4); if (($res2) && ($res4)) {

$last_id = mysql_query("SELECT LAST_INSERT_ID()"); $id = mysql_fetch_row($last_id);

// masukkan jenis kata ke tabel arti

$kueri5 = "UPDATE arti SET jenis_kata='".$_POST['jenis']."' WHERE id_arti=".$id[0]." ";

$res5 = mysql_query($kueri5);

if ($res5) $GLOBALS['pesan'] = 'Kata disimpan.'; else $GLOBALS['error'] = 'Gagal menyimpan kata.';

} else $GLOBALS['error'] = 'Gagal menyimpan kata.'; } } // cek error if ($GLOBALS['error'] == '') return true;

else return false; }

}

4.5. Koneksi

Salah satu bagian terpenting dari aplikasi ini adalah bagaimana perangkat seluler (mobile device) melakukan koneksi ke database server untuk mengambil data. Class yang menjadi kunci dalam proses ini adalah class WordFetcher. Dalam class WordFetcher ini telah ditentukan alamat URL yang akan dituju. Selanjutnya dibuat koneksi HTTP ke alamat URL tersebut. Setelah koneksi dibuka, metode permintaan (request method) di-set sebagai GET karena pada URL tersebut akan disertakan 2 parameter yang nantinya digunakan untuk proses query. Listing programnya tampak seperti berikut.

URL += "?arah=" + arah + "&cari=" + cari;

// ganti karakter yang tidak diizinkan dalam URL URL = Encoder.encodeURL(URL);

// ciptakan koneksi http

http = (HttpConnection) Connector.open(URL); // set metode request sebagai GET

http.setRequestMethod(HttpConnection.GET); // respons server if (http.getResponseCode() == HttpConnection.HTTP_OK) { sb = new StringBuffer(); int ch; is = http.openInputStream(); // baca stream input

while ((ch = is.read()) != -1) sb.append((char) ch);

} else {

// respons server tidak OK

System.out.println("Network error.");

Jika kode respons yang diperoleh dari koneksi HTTP adalah HTTP_OK, berarti permintaan layanan sukses diproses. Baris sb = new StringBuffer() berarti buat

variabel sb yang akan digunakan untuk menyimpan data string di memori untuk sementara. Sedangkan baris is = http.openInputStream() untuk membuka stream input. Pada saat melakukan request, class WordFetcher mengirimkan dua parameter yaitu arah (yang menyimpan arah terjemahan English-Indonesia atau Indonesia-English) dan cari (yang menyimpan keyword pencarian), sehingga bentuk URL yang dikirimkan menjadi:

http://bernadus.psm-ugm.com/kamus/wireless/ambil_data.php?arah=arah&cari=cari.

URL tersebut digunakan untuk mengakses file PHP yang bertugas melakukan query ke database. Listing programnya tampak seperti berikut.

public Vector parse() { Vector v = new Vector();

while (index < hasilMentah.length()) { String kata = extractItems(index, "k"); String arti = extractItems(index, "a"); if (kata.length() > 0 || arti.length() > 0) { Word word = new Word(kata, arti);

v.addElement(word); } else v.setSize(0); } return v; }

private String extractItems(int indeksAwal, String tag) { String tagBuka = "<" + tag + ">";

String tagTutup = "</" + tag + ">";

int awal = hasilMentah.indexOf(tagBuka, indeksAwal); awal += 3;

int akhir = hasilMentah.indexOf(tagTutup, awal); index = akhir + 4;

return hasilMentah.substring(awal, akhir); }

Data hasil query yang diperoleh dari PHP masih berupa data mentah berbentuk <k>kata</k><a>terjemahan</a>. Data yang diambil hanyalah yang diapit oleh tag <k></k> dan tag <a></a>. Data diekstrak menggunakan method parse() yang ada di class WordParser. Hasil ekstraksi akhirnya berupa kata dan terjemahannya saja.

Kata-kata yang mirip dengan keyword kemudian ditampilkan dalam bentuk list oleh method showWords(). Prosesnya tampak pada listing berikut.

public void showWords(Vector v, Displayable prevDisplay) { word = v;

int num = word.size();

String[] kata = new String[num]; // ekstrak kata

for (int i = 0; i < num; i++) { Word w = (Word)word.elementAt(i); kata[i] = w.getKata();

}

// list untuk kata

lsKata = new List("Hasil: " + fmSearch.getCari(), List.IMPLICIT, kata, null);

lsKata.addCommand(cmView); lsKata.addCommand(cmBack); lsKata.setCommandListener(this); // tampilkan list kata

setDisplay(lsKata);

Terjemahan dari kata yang dipilih dari list ditampilkan dengan method showTranslation(). Listing programnya tampak seperti berikut.

public void showTranslation(Word word) {

StringItem si = new StringItem(null, word.getArti()); // form untuk menampilkan hasil terjemahan

fmDispTrans = new Form(word.getKata()); fmDispTrans.addCommand(cmBack);

fmDispTrans.setCommandListener(this);

if(fmDispTrans.size() != 0) fmDispTrans.set(0, si); else fmDispTrans.append(si);

setDisplay(fmDispTrans); }

BAB V

Dokumen terkait