Sabtu, 05 November 2011

membuat login alternatif dengan akun google open id

Pernahkah Anda mengunjungi situs berbagi file 4shared? Jika Anda perhatikan di form loginnya, situs tersebut menawarkan login menggunakan akun Google yang sudah dimiliki usernya (lihat gambar di bawah ini).
Google Open ID
Dengan begitu, si user bisa melakukan login dengan 2 cara yaitu melalui username dan password ketika registrasi di 4shared, atau menggunakan akun Google jika si user tersebut memiliki.
Pada artikel kali ini pembahasan akan dimulai dari cara pembuatan script registrasinya, script login, sampai dengan script untuk logout.

OK, pertama kita perlu rancang untuk tabel databasenya di MySQL terlebih dahulu. Tabel ini nanti digunakan untuk menyimpan data user yang sudah teregistrasi. Di sini kita buat simpel saja ya, karena sekedar contoh.
1.CREATE TABLE `login` (
2.`email` varchar(100),
3.`passwd` varchar(100),
4.`nama` varchar(100),
5.PRIMARY KEY (`email`)
6.);
Dalam contoh ini, email nantinya akan digunakan sebagai username loginnya. Karena nama email digunakan sebagai user login, maka jangan lupa membuatnya sebagai primary key supaya unik.
Untuk keperluan koneksi ke MySQL, kita buat dahulu script koneksinya
koneksi.php
01.<?php
02. 
03.$dbuser = "...";
04.$dbpass = "...";
05.$dbhost = "localhost";
06.$dbname = "...";
07. 
08.mysql_connect($dbhost, $dbuser, $dbpass);
09.mysql_select_db($dbname);
10. 
11.?>
Script di atas nantinya akan kita sisipkan ke script lain setiap kali membutuhkan koneksi ke databasenya.
Selanjutnya, kita buat form untuk proses registrasi usernya
register.php
01.<h1>Register</h1>
02. 
03.<form method="post" action="registerproses.php">
04.<table>
05.<tr><td>Email</td><td>:</td><td><input type="text" name="email"></td></tr>
06.<tr><td>Nama Lengkap</td><td>:</td><td><input type="text" name="nama"></td></tr>
07.<tr><td>Password</td><td>:</td><td><input type="password" name="pass1"></td></tr>
08.<tr><td>Ulangi Password</td><td>:</td><td><input type="password" name="pass2"></td></tr>
09.</table>
10.<input type="submit" name="name" value="Register">
11.</form>
Setelah form registrasi user dibuat, jangan lupa buat juga script untuk memproses registrasinya
registrasiproses.php
01.<?php
02. 
03.// koneksi ke MySQL
04.include "koneksi.php";
05. 
06.// baca data email
07.$email = $_POST['email'];
08.// baca data nama user
09.$nama = $_POST['nama'];
10.// baca data password1
11.$pass1 = $_POST['pass1'];
12.// baca data password2
13.$pass2 = $_POST['pass2'];
14. 
15.// query untuk mencari email yg sdh ada di database
16.$query = "SELECT * FROM login WHERE email = '$email'";
17.$hasil = mysql_query($query);
18.if (mysql_num_rows($hasil) == 0)
19.{
20.// jika belum ada, simpan data user ke database
21.if ($pass1 == $pass2)
22.{
23.$query2= "INSERT INTO login (email, nama, passwd) VALUES ('$email', '$nama', '$pass1')";
24.$hasil2 = mysql_query($query2);
25.if ($hasil2) echo "<p>Registrasi sukses</p>";
26.else echo "<p>Registrasi gagal</p>";
27.}
28.else echo "<p>Password tidak sama</p>";
29.}
30.else echo "<p>Email '".$email."' sudah pernah diregistrasikan sebelumnya</p>";
31. 
32.?>
Script registrasi sudah dibuat, selanjutnya kita buat script untuk proses loginnya.
login.php
01.<?php
02.session_start();
03. 
04.include "koneksi.php";
05. 
06.// untuk proses login biasa
07.if ($_GET['op'] == "submit")
08.{
09.$email = $_POST['email'];
10.$pass = $_POST['pass'];
11.$query = "SELECT * FROM login WHERE email = '$email'";
12.$hasil = mysql_query($query);
13.$data  = mysql_fetch_array($hasil);
14.// proses pencocokan password login dengan yg tersimpan di db
15.if ($data['passwd'] == $pass)
16.{
17.// redirect ke main.php
18.header("location: main.php");
19.// simpan nama ke session
20.$_SESSION['nama'] = $data['nama'];
21.}
22.else echo "<p>Login Gagal</p>";
23.}
24.// untuk proses login dg akun Google
25.else if ($_GET['op'] == "google")
26.{
27.include 'openid.php';
28.// membuat obyek open id
29.$openid = new LightOpenID;
30.if(!$openid->mode)
31.{
32.// proses authentication dengan Open ID Google
33.$openid->identity = 'https://www.google.com/accounts/o8/id';
34.$openid->required = array('contact/email');
35.header('Location: ' . $openid->authUrl());
36.}
37.else
38.{
39.// baca data email Google
40.$ambildata = $openid->getAttributes();
41.$email = $ambildata['contact/email'];
42.// cari data user yang memiliki email Google
43.$query = "SELECT * FROM login WHERE email = '$email'";
44.$hasil = mysql_query($query);
45.if (mysql_num_rows($hasil) > 0)
46.{
47.// jika data user ada, baca nama user dan simpan ke session
48.$data  = mysql_fetch_array($hasil);
49.$_SESSION['nama'] = $data['nama'];
50.// redirect ke main.php
51.header("location: main.php");
52.}
53.else
54.{
55.// jika data user tidak terdaftar/tidak ada, munculkan form registrasi
56.echo "<p>Username/email tidak terdaftar.</p><p>Silakan register dahulu </p>";
57.// munculkan form registrasi user
58.?>
59.<h1>Register</h1>
60. 
61.<form method="post" action="registerproses.php">
62.<table>
63.<tr><td>Email</td><td>:</td><td><input type="text" name="email" value="<?php echo $email; ?>"></td></tr>
64.<tr><td>Nama Lengkap</td><td>:</td><td><input type="text" name="nama"></td></tr>
65.<tr><td>Password</td><td>:</td><td><input type="password" name="pass1"></td></tr>
66.<tr><td>Ulangi Password</td><td>:</td><td><input type="password" name="pass2"></td></tr>
67.</table>
68.<input type="submit" name="name" value="Register">
69.</form>
70. 
71.<?php
72.}
73.}
74.}
75.else
76.{
77.// munculkan form login
78.?>
79. 
80.<h1>Login</h1>
81. 
82.<form method="post" action="login.php?op=submit">
83.<table>
84.<tr><td>Email</td><td>:</td><td><input type="text" name="email"></td></tr>
85.<tr><td>Password</td><td>:</td><td><input type="password" name="pass"></td></tr>
86.</table>
87.<input type="submit" name="submit" value="Login"><br><br>
88.<small><a href="login.php?op=google">Login with Google Account</a></small>
89.</form>
90. 
91.<?php
92.}
93.?>
Dalam script login di atas, terdapat 2 skenario login yaitu login biasa melalui pengisian username/email dan password melalui form login sesuai yang pernah diisi sewaktu registrasi, serta login melalui open ID Google. Untuk proses melalui form login biasa, saya kira tidak perlu saya jelaskan karena simpel. Sedangkan proses login dengan open ID Google agak sedikit kompleks. Di sini, kita menggunakan class LightOpenID yang sudah pernah di buat orang. Dengan class ini, kita nantinya akan terhubung ke server Google untuk proses authentication. Anda dapat mendownload file berisi class LightOpenID di sini.
Setelah proses authentication melalui Open ID Google berhasil, selanjutnya kita ambil data email dari hasil authentication tersebut untuk kita lookup ke dalam database user login yang kita buat sebelumnya. Jika email ini ada, maka proses login berhasil. Namun jika belum ada, maka si user belum terdaftar dan nantinya akan muncul form registrasi user baru.
Lantas, bagaimana dengan script main.php yang merupakan hasil redirect jika proses login berhasil? Script main.php ini merupakan landing page berisi konten-konten yang bersifat restricted, hanya bisa diakses oleh user yang loginnya berhasil. Misalkan main.php ini kita buat simpel saja sbb:
main.php
01.<?php
02. 
03.session_start();
04. 
05.if (isset($_SESSION['nama']))
06.{
07.// tampilkan nama user
08.echo "<p>Hallo ".$_SESSION['nama'].", Anda sudah login</p>";
09.echo "<a href='logout.php'>Logout</a>";
10.}
11.else echo "<p>Anda belum login (<a href='login.php'>Login</a>)</p>";
12. 
13.?>
 Sedangkan script untuk logoutnya, kita buat seperti berikut logout.php

1.<?php
2.session_start();
3.session_destroy();
4.echo "<p>Anda sudah logout</p>";
5.echo "<p><a href='login.php'>Login</a></p>";
6.?>
Jika kita perhatikan script logout di atas, maka untuk proses logout hanyalah menghapus variabel sessionnya saja. Dengan demikian, jika sebelumnya si user melakukan login melalui Open ID Google maka masih tetap bisa masuk ke sistem melalui link ‘Login with Google Account’.
Berikut ini beberapa screen shot tampilan dari script di atas.
Gambar di bawah ini muncul ketika proses registrasi
Google Open ID
Gambar di bawah ini muncul ketika proses login melalui Open ID Google
Google Open ID
Google Open ID
Setelah proses login berhasil
Google Open ID
OK deh.. selamat mencoba ya…



Sumber : http://blog.rosihanari.net

php terjemah dengan Google API Translate

Akhir-akhir ini saya suka sekali memposting tentang API (Application Programming Interface). Setelah kemarin memposting artikel tentang Paypal API untuk cek balance, untuk artikel kali ini saya akan mencoba memaparkan cara membuat script PHP untuk menterjemahkan teks dari bahasa tertentu ke bahasa lain memanfaatkan Google Translate API.
Dengan script buatan sendiri ini, Anda tidak perlu lagi membuka situs Google Translate setiap kali akan menterjemahkan sebuah teks, namun cukup membuka aplikasi yang telah dibuat sendiri ini. Bahkan, Anda bisa menambahkan semacam widget di situs web Anda untuk layanan penterjemahan sembarang teks.

OK, sebelum kita mulai membuat script penterjemah teks ini, terlebih dahulu kita harus mengaktifkan API untuk Google Translate ini. Untuk mengaktifkan API ini, silakan Anda login ke https://code.google.com/apis/console/?api=translate menggunakan akun Google Anda. Jika belum memilikinya, maka silakan registrasi dahulu.
Setelah Anda berhasil login, maka akan muncul tampilan berikut ini jika sebelumnya belum pernah mengaktifkan Google API.
Google API Translate
Selanjutnya, klik tombol ‘Add project’, lalu muncul beberapa layanan API Google. Dari beberapa layanan API tersebut, cari ‘Translate API’ dan klik tombol ‘Activate’.
Google API Translate
Untuk mendapatkan layanan akses ke Google API, setiap user akan mendapatkan API Access yang berupa kode tertentu. Kode ini berfungsi sebagai autentikasi kepada setiap user yang mengakses API. Kode API Access Anda dapat dilihat di menu ‘API Access’.
Google API Translate
Setelah Anda klik API Access, maka Anda akan menjumpai suatu kode sbb (perhatikan kode yang di kotak merah):
Google API Translate
itulah kode API Access Anda.
OK… sampai sini, kita sudah mengaktifkan Google API Translate dan juga mendapatkan kode API Access nya. Sekarang kita bisa mulai membuat script penterjemahannya.
Pertama, kita buat dahulu form untuk input teks yang akan diterjemahkan.
form.html
01.<html>
02.<head>
03.<title>Aplikasi Penterjemah Bahasa</title>
04.</head>
05.<body>
06.<h1>Aplikasi Penterjemah Bahasa</h1>
07.<form method="post" action="translate.php">
08.Masukkan Teks : <br>
09.<textarea name="teks" cols="40" rows="5"></textarea>
10.<br><br>
11.Dari bahasa
12.<select name="from">
13.<option value="id">Indonesia</option>
14.<option value="en">Inggris</option>
15.<option value="ma">Malaysia</option>
16.<option value="fr">Perancis</option>
17.<option value="es">Spanyol</option>
18.<option value="de">Jerman</option>
19.<option value="nl">Belanda</option>
20.</select>
21. 
22.ke bahasa
23.<select name="to">
24.<option value="id">Indonesia</option>
25.<option value="en">Inggris</option>
26.<option value="ma">Malaysia</option>
27.<option value="fr">Perancis</option>
28.<option value="es">Spanyol</option>
29.<option value="de">Jerman</option>
30.<option value="nl">Belanda</option>
31.</select>
32. 
33.<input type="submit" name="submit" value="Terjemahkan">
34. 
35.</form>
36.</body>
37.</html>
Perhatikan, pada kode HTML form di atas. Dalam form kita buat dua buah combo box untuk memilih penterjemahannya dari bahasa tertentu ke bahasa tertentu. Untuk masing-masing bahasa terdapat identitas sendiri, misalnya bahasa Indonesia menggunakan ‘id’, bhs Inggris dengan ‘en’. Identitas bahasa ini nanti akan dibaca oleh Google API Translate dan digunakan untuk proses penterjemahan. Berikut ini adalah tampilan form di atas
Google API Translate
Selanjutnya kita buat script translate.php nya yang akan memproses form di atas.
translate.php
01.<?php
02. 
03.// masukkan API Access di sini
04.$key = "...";
05. 
06.// membaca teks dari form
07.$teks = urlencode($_POST['teks']);
08. 
09.// dari bahasa
10.$dariBhs = $_POST['from'];
11. 
12.// ke bahasa
13.$keBhs = $_POST['to'];
14. 
15.// URL untuk mengakses Google API Translate
16.$url = "https://www.googleapis.com/language/translate/v2?key=".$key."&q=".$teks."&source=".$dariBhs."&target=".$keBhs."&callback=response";
17. 
18.// membaca respon dari server Google
19.$fetch = file_get_contents($url);
20. 
21.// menampilkan respon
22.echo $fetch;
23. 
24.?>
Jika script di atas dijalankan maka akan muncul respon sbb (jika form diisikan ‘Halo apa kabar?, dan penterjemahan dilakukan dari bahasa Indonesia ke bahasa Inggris’):
Google API Translate
Dari bentuk respon di atas, tampak bahwa respon dari Google API disajikan dalam format JSON yang diapit oleh
response(…)
Nah… sekarang tugas kita adalah mengekstrak respon dalam bentuk JSON tersebut, untuk mengambil hasil terjemahannya saja yang ada pada bagian “translatedText”: “Hello how are you doing?”
Berikut ini kita adalah script translate.php yang di dalamnya sudah ditambahkan beberapa perintah untuk parsing JSON.
translate.php
01.<?php
02. 
03.// masukkan API Access di sini
04.$key = "...";
05. 
06.// membaca teks dari form
07.$teks = urlencode($_POST['teks']);
08. 
09.// dari bahasa
10.$dariBhs = $_POST['from'];
11. 
12.// ke bahasa
13.$keBhs = $_POST['to'];
14. 
15.// URL untuk mengakses Google API Translate
16.$url = "https://www.googleapis.com/language/translate/v2?key=".$key."&q=".$teks."&source=".$dariBhs."&target=".$keBhs."&callback=response";
17. 
18.// membaca respon dari server Google
19.$fetch = file_get_contents($url);
20. 
21.// mengambil data JSON yang terletak di dalam response(...)
22.$splits1 = explode("response(", $fetch);
23.$splits2 = explode(");", $splits1[1]);
24. 
25.// mengekstrak data JSON
26.$hasil = json_decode($splits2[0], true);
27. 
28.// mengambil teks hasil terjemahan dari data JSON
29.$translate = $hasil["data"]["translations"][0]["translatedText"];
30. 
31.// menampilkan hasil terjemahan
32.echo "<p><b>Teks asli: </b>".$_POST['teks']."</p>";
33.echo "<p><b>Hasil terjemahan: </b>".$translate."</p>";
34.?>
Dan… tampilan dari script di atas setelah dimodifikasi adalah sbb:
Google API Translate
Mudah bukan cara membuatnya??? Oya… hanya sayangnya Google API Translate ini terbatas melayani maksimum 100.000 karakter perhari untuk diterjemahkan untuk sebuah API Access.
Selamat mencoba, semoga ada manfaatnya.

Script PHP Untuk Menampilkan Status Update Twitter

Dalam artikel kali ini, saya akan mencoba memaparkan cara untuk membuat script PHP yang nantinya digunakan untuk membaca status update di Twitter kita lalu menampilkannya. Anda dapat menyisipkan script ini di blog atau website sehingga pengunjung setia web/blog Anda bisa membaca status update Twitter Anda. Dengan script ini, Anda tidak perlu menggunakan widget yang disediakan oleh Twitter, sehingga bisa mempercantik sendiri tampilan status updatenya dimana hal ini tidak bisa dilakukan menggunakan widget nya Twitter.

OK dah… trus yang jadi pertanyaan terbesar dalam membuat script ini adalah bagaimana cara mengakses data status update Twitter kita? Yup… data status update Twitter bisa diakses melalui URL
http://twitter.com/statuses/user_timeline/XXXXXXXXX.rss
di mana XXXXXXXXX adalah nomor ID akun Twitter Anda.
Apakah nomor ID akun Twitter ini sama dengan username Twitter?? Tidak, nomor ID ini tidak sama dengan username Twitter. Untuk mendapatkan nomor ID ini, silakan Anda cek di http://www.idfromuser.com. Tinggal masukkan saja username Anda pada form yang disediakan di situ
script php twitter
Nah.. setelah kita tahu nomor ID akun Twitter kita, kita bisa mencoba mengakses data status update melalui URL di atas, sebagai contoh:
http://twitter.com/statuses/user_timeline/100716381.rss
dan.. jreeng… yang muncul adalah status update dalam bentuk dokumen XML
Jika kita perhatikan dalam dokumen XML yang muncul tersebut, akan muncul semua status update yang tersaji, dimana masing-masing status terdapat dalam struktur tag berikut ini:
01.<item>
02.<title>...</title>
03.<description>...</description>
04.<pubDate>...</pubDate>
05.<guid>...</guid>
06.<link>...</link>
07.<twitter:source>...</twitter:source>
08.<twitter:place/>
09.</item>
Semua status update yang muncul tersebut sudah tersusun sesuai urutan waktu, dimana data status terakhir terletak dalam <item>...</item> paling atas.
Nah.. untuk status updatenya sendiri terletak dalam tag <title>...</title> atau <description>...</description>. Saya tidak tahu persis perbedaan keduanya, karena isi tag nya sama yaitu status update, tapi yang jelas untuk membaca status update kita nanti akan baca di salah satu dari keduanya saja, misalnya kita akan membaca tag <title>...</title> saja untuk statusnya.
OK… data sudah ada, sekarang kita tinggal lakukan pembacaan data dalam dokumen XML nya. Dengan apa membacanya? Untuk membaca data dalam bentuk XML, kita gunakan function simplexml_load_file();
Berikut ini script PHP untuk membaca semua status update dari Twitter:
01.<?php
02. 
03.$idTwitter = '100716381';
04.$xml = simplexml_load_file("http://twitter.com/statuses/user_timeline/".$idTwitter.".rss");
05. 
06.foreach($xml->channel->item as $data)
07.{
08.echo "<p>";
09.echo $data->pubDate."<br>";
10.echo $data->title;
11.echo "</p>";
12.}
13. 
14.?>
Trus… bagaimana jika kita ingin membatasi hanya update status terakhir saja, atau beberapa status terakhir (tidak semua status)? Kalau hanya n status terakhir saja? berikut ini scriptnya
01.<?php
02. 
03.$idTwitter = '100716381';
04.$showStatus = 5;
05. 
06.$xml = simplexml_load_file("http://twitter.com/statuses/user_timeline/".$idTwitter.".rss");
07. 
08.$counter = 1;
09.foreach($xml->channel->item as $data)
10.{
11.echo "<p>";
12.echo $data->pubDate."<br>";
13.echo $data->title;
14.echo "</p>";
15.if ($counter == $showStatus) break;
16.else $counter++;
17.}
18. 
19.?>
Ide dari script di atas adalah dengan membuat counter atau pencacah hitungan. Jika counternya sudah mencapai batas yang ditentukan ($showStatus) maka looping dihentikan (BREAK), sehingga jumlah data status yang muncul sesuai dengan $showStatus nya. Selama counternya belum mencapai batas, proses pembacaan data status update akan terus dilakukan.
Tampilan dari script di atas adalah sbb:
script php twitter
OK deh.. selamat mencoba ya, mudah-mudahan artikel berikutnya adalah cara membuat script PHP untuk mengupdate status di Twitter. Stay tune terus di blog ini ya…

sumber : http://blog.rosihanari.net

Script PHP Untuk Auto Published Artikel

OK… di sini saya akan menjelaskan cara membuat script auto publish tersebut. Selanjutnya script ini nanti akan dijalankan menggunakan Cron Jobs. Wah apa itu Cron Jobs? Bagi yang masih awam dengan istilah ini.. Cron Jobs adalah fitur yang ada di web hosting yang nantinya dapat digunakan untuk menjalankan suatu proses terjadwal (on schedule) secara otomatis. Terjadwal di sini bisa setiap jam, menit, hari, minggu, dan bulan. Nah… dengan bantuan Cron Jobs ini nanti, kita akan menjalankan script untuk mempublish otomatis artikel sesuai tanggal yang telah ditentukan.

Sebagai contoh misalkan kita memiliki sebuah tabel untuk menyimpan artikel di web sebagai berikut:
1.CREATE TABLE article (
2.id int(11) auto_increment,
3.title varchar(30),
4.author varchar(30),
5.publishDate date,
6.statusPublish int,
7.PRIMARY KEY(id)
8.);
dengan field ‘id’ adalah menyatakan kode unik dari artikel, ‘title’ menyatakan judul artikel, ‘author’ adalah nama penulis dan ‘publishDate’ menyatakan tanggal publikasi artikel tersebut. Lalu… ada pula field bernama ‘statusPublish’. Buat apa ya field tersebut? Nah.. field ini nanti akan diisi dengan suatu bilangan 0 atau 1. Bila suatu artikel bernilai 0 artinya artikel tersebut belum dipublish. Sedangkan bila diisi dengan 1 maka artikel akan terpublish. Anda bisa pula menggunakan pembeda keadaan tersebut dengan bilangan yang lain (tidak harus 0 dan 1).
Nah.. ide untuk mempublish atau belum adalah di field ‘statusPublish’ dan ‘publishDate’ ini. Setelah suatu artikel disimpan atau diposting, maka secara default nilai ‘statusPublish’ akan bernilai 0 terlebih dahulu. Kemudian jika telah mencapai tanggal tertentu sesuai ‘publishDate’ nya maka secara otomatis berubah menjadi 1. Untuk mengubah ‘statusPublish’ ini nantinya kita gunakan suatu script yang dijalankan secara otomatis dengan Cron Jobs. Dah paham ya idenya?? Simpel bukan? :-)
OK.. sekarang kita buat script PHP nya.
publish.php
01.<?php
02. 
03.// koneksi ke mysql
04. 
05.mysql_connect("dbhost", "dbuser", "dbpass");
06.mysql_select_db("dbname");
07. 
08.// mengubah status publish menjadi 1 jika publishDate = tanggal sekarang
09. 
10.$query = "UPDATE article SET statusPublish = 1 WHERE publishDate = CURDATE()";
11.$hasil = mysql_query($query);
12. 
13.?>
Simpel ya scriptnya?? Selanjutnya bagaimana menjalankan script publish.php di atas menggunakan Cron Jobs? Ini dia caranya:
  • Masuklah ke dalam CPanel
  • Masuklah ke Cron Jobs dalam CPanel. Biasanya menu ini terletak di bagian paling bawah CPanel (di bagian Advanced)
  • Pilihlah ‘Every Days’ pada bagian ‘Days’ untuk menjalankan Cron Jobs setiap hari
  • Tulislah perintah
    ‘php -q /home/usernameAnda/public_html/.../publish.php‘
    pada bagian ‘Command to Run’. Perintah tersebut digunakan untuk menjalankan script PHP dengan nama script ‘publish.php’. Jangan sampai salah dalam menuliskan path menuju scriptnya.
  • Klik tombol Save Crontab
Setelah semua setting Cron Jobs selesai, maka script publish.php itu akan dijalankan setiap hari secara otomatis. Anda bisa pula menambahkan setting setiap jam berapa untuk menjalankan script tersebut dalam Cron Jobs.
Selesai deh artikelnya.. silakan dicoba ya. Mudah-mudahan berhasil.

sumber : http://blog.rosihanari.net

Sintak PHP Mencegah Data NULL di MySQL

Pernahkah Anda menjumpai data NULL dalam database MySQL Anda? Data NULL bukanlah data 0 untuk numerik atau string kosong untuk karakter. Biasanya data NULL ini muncul karena kita belum mengisi data pada suatu field tertentu, sedangkan field tersebut diset untuk membolehkan nilai NULL ini.
Dalam artikel ini, akan dipaparkan bagaimana cara mencari data NULL ini dalam MySQL.
Oya.. artikel ini saya tulis berdasarkan pengalaman pribadi ketika mengemban tugas negara :-) (Halah.. kelihatan kalo didramatisir)

Di sini saya akan mengambil contoh sederhana, misalkan kita memiliki tabel ‘mhs’ dengan struktur sebagai berikut
Struktur Tabel dengan NULL
Bila kita perhatikan struktur tabel di atas, maka untuk field ‘alamat’, ‘sex’, dan ‘tgllhr’ membolehkan adanya nilai NULL ini.
Nah.. selanjutnya misalkan kita mengentri beberapa data atau record ke dalam tabel tersebut sebagaimana tampak pada gambar di bawah ini
Data dengan NULL
Dalam contoh tersebut, data mahasiswa bernim ‘M0004′ dan ‘M0005′ sengaja saya buat beberapa nilai kosong pada ketiga field yang membolehkan NULL.
Kemudian, yang menjadi pertanyaan adalah bagaimana cara mencari data mahasiswa yang memiliki nilai NULL tersebut, misalnya pada field ‘alamat’. Siapa sajakah mahasiswa yang alamatnya masih NULL alias belum diisi?
Nah.. untuk mencari mahasiswa dengan alamat masih NULL ini, Anda tidak bisa menggunakan query SQL sebagai berikut
1.SELECT * FROM mhs WHERE alamat = '';
Bila Anda gunakan query SQL di atas, maka tidak akan muncul hasil yang diharapkan. Ingat !! nilai atau data NULL bukanlah string kosong (empty string).
Lantas.. bagaimana caranya? Caranya adalah dengan menggunakan ‘IS NULL’.
1.SELECT * FROM mhs WHERE alamat IS NULL;
Bila Anda jalankan query di atas, maka akan menampilkan dua buah record terkait dengan alamat yang NULL sebagaimana tampak pada gambar berikut ini
Data dengan NULL
Untuk mencegah adanya nilai NULL ini, Anda bisa hindari ketika mengcreate tabel pertama kali yaitu dengan menambahkan NOT NULL pada properti fieldnya
1.CREATE TABLE mhs (
2.nim varchar(5) NOT NULL,
3.nama varchar(20) NOT NULL,
4.alamat text NOT NULL,
5.sex varchar(1) NOT NULL,
6.tgllahir date NOT NULL,
7.PRIMARY KEY(nim)
8.)
Lantas.. mungkin Anda bertanya dalam hati. Misalkan suatu field diset NOT NULL (tidak boleh ada NULL), maka bagaimana jika field tersebut tidak diisi? Nah… bila field tersebut tidak diisi, maka isi nilainya (default value) adalah karakter kosong (empty string) jika tipe data fieldnya karakter, atau akan bernilai 0 jika tipe datanya berupa bilangan, atau bernilai ’0000-00-00′ untuk tipe data date.
Trus.. bagaimana bila sudah telanjur menset suatu field bisa menerima NULL menjadi tidak membolehkan NULL? Nah.. ubah saja properti field tersebut dengan perintah ALTER seperti contoh berikut ini
1.ALTER TABLE mhs CHANGE alamat alamat TEXT NOT NULL;
Perintah SQL di atas untuk mengubah status yang membolehkan NULL menjadi NOT NULL pada field ‘alamat’ dalam tabel ‘mhs’.
atau secara umum sintaksnya adalah
1.ALTER TABLE namatabel CHANGE namafield namafield tipedatafield NOT NULL;
OK paham ya dengan penjelasan di atas? Mudah-mudahan artikel di atas berguna bagi Anda yang sedang pusing dengan cara mencari data NULL dan cara menghindarinya.