Monday, March 19, 2012

Tutorial Membuat Aplikasi Chatting Dengan PHP Ajax

Sekarang mari kita membuat aplikasi chatting dengan menggunakan php ajax dan mysql sebagai database. Di sini kita memanfaatkan ajax untuk komunikasi client (browser) ke server. Ajax setiap detik akan melakukan request ke server (tanpa harus refresh). Di sini kita bisa memanfaat fungsi setTimeout() pada javascript. Fungsi setTimeout() berguna untuk me-set timer setiap berapa per milisecond javascript mengeksekusi suatu fungsi, contoh :
setTimeout("ambilPesan()",1000);
Kode di atas berarti, eksekusi fungsi ambilPesan() setiap 1000 milisecond. Mari kita lihat konsep untuk membuat aplikasi chatting:
  1. Kita buat objek ajax yang nantiya bertugas melakukan komunikasi ke server
  2. User memasukkan nama, yang nantinya kita simpan dalam suatu variabel
  3. Ketika user selesai mengetik pesan, masukkan ke dalam database melalui ajax
  4. User, baik kita sendiri atau orang lain, setiap 1 detik akan mengecek ke server, apakah ada pesan baru, jika ada tampilkan.
Sekarang mari kita mulai membuat kode-kodehttp://www.blogger.com/blogger.g?blogID=7641794122890923968#editor/target=post;postID=2861260277256342287nya
Berikut adah struktur tabel drzchat di database :

1-- 
2-- Table structure for table `drzchat` 
3-- 
4
5CREATE TABLE `drzchat` ( 
6  `nomor` int(3) NOT NULL auto_increment, 
7  `nama` varchar(20) NOT NULL, 
8  `pesan` varchar(200) NOT NULL, 
9  `waktu` varchar(10) NOT NULL, 
10  PRIMARY KEY  (`nomor`) 
11) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 


Pertama-tama mari kita buat halaman untuk chat di browser. drzchat.html


1<html> 
2<head> 
3<title> 
4DRZ Chat 1.0 
5</title> 
6<script> 
7var ajaxku = buatAjax(); 
8var tnama = 0; 
9var pesanakhir = 0; 
10var timer; 
11function taruhNama(){ 
12    if(tnama==0){ 
13        document.getElementById("nama").disabled = "true"
14        tnama = 1; 
15    }else
16        document.getElementById("nama").disabled = ""
17        tnama = 0; 
18    } 
19    ambilPesan(); 
20
21function buatAjax(){ 
22    if(window.XMLHttpRequest){ 
23        return new XMLHttpRequest(); 
24    }else if(window.ActiveXObject){ 
25        return new ActiveXObject("Microsoft.XMLHTTP"); 
26    } 
27
28
29function ambilPesan(){ 
30    namaku = document.getElementById("nama").value 
31    if(ajaxku.readyState == 4 || ajaxku.readyState == 0){ 
32        ajaxku.open("GET","ambilchat.php?akhir="+pesanakhir+"&nama="+namaku+"&sid="+Math.random(),true); 
33        ajaxku.onreadystatechange = aturAmbilPesan; 
34        ajaxku.send(null); 
35    } 
36
37
38function aturAmbilPesan(){ 
39    if(ajaxku.readyState == 4){ 
40        var chat_div = document.getElementById("div_chat"); 
41        var data = eval("("+ajaxku.responseText+")"); 
42        for(i=0;i<data.messages.pesan.length;i++){ 
43            chat_div.innerHTML += "<font color=red>"+data.messages.pesan[i].nama+"</font> "
44            chat_div.innerHTML += "<font size=1>("+data.messages.pesan[i].waktu+")</font> "
45            chat_div.innerHTML += " : "+data.messages.pesan[i].teks+"<br>"
46            chat_div.scrollTop = chat_div.scrollHeight; 
47            pesanakhir = data.messages.pesan[i].id; 
48        } 
49    } 
50    timer = setTimeout("ambilPesan()",1000); 
51
52
53function kirimPesan(){ 
54    pesannya = document.getElementById("pesan").value 
55    namaku = document.getElementById("nama").value 
56    if(pesannya != "" && document.getElementById("nama").value !=""){ 
57        ajaxku.open("GET","ambilchat.php?akhir="+pesanakhir+"&nama="+namaku+"&pesan="+pesannya+"&sid="+Math.random(),true); 
58        ajaxku.onreadystatechange = aturAmbilPesan; 
59        ajaxku.send(null); 
60        document.getElementById("pesan").value = ""
61    }else
62        alert("Nama atau pesan masih kosong"); 
63    } 
64
65
66function aturKirimPesan(){ 
67    clearInterval(timer); 
68    ambilPesan(); 
69
70function blockSubmit() { 
71    kirimPesan(); 
72    return false; 
73
74</script> 
75</head> 
76<body> 
77Nama : <input type=text name=nama id=nama> 
78<input type=button value=login id=tmbl_login onclick=taruhNama()><p> 
79<div id="div_chat" style="height: 300px; width: 500px; overflow: auto; background-color: lightyellow; border: 1px solid #555555;"
80
81</div> 
82<form onSubmit="return blockSubmit();"
83Pesan : <input type=text name=pesan id=pesan size=50> 
84<input type=button value="kirim" onclick="kirimPesan()"
85</form> 
86</body> 
87</html> 


Pada kode drzchat.html di atas, setelah user mengisi nama, lalu klik tombol login, maka kita menjalankan fungsi taruhNama(), yang berguna untuk mengunci nama yang sudah diketik sebagai user name di chatting. Setelah itu kita manjalankan fungsi ambilPesan(), yang berfungsi melakukan request ke server apakah ada pesan yang terbaru dari database. Jika ada pesan terbaru maka kita ambil dan taruh di browser dengan menggunakan fungsi aturAmbilPesan().
Apabila kita sudah mengetik pesan, javascript akan menjalankan fungsi kirimPesan(). Untuk mengerti apa itu readyState, onreadystatechange silahkan download tutorial pengenalan ajax di sini.
Pada kode di atas objek ajax melakukan request atau komunikasi dengan file php server, yaitu file ambilchat.php. Berikut kodenya :


1<?php 
2mysql_connect("localhost","root",""); 
3mysql_select_db("test"); 
4
5$nama = $_GET['nama']; 
6$pesan = $_GET['pesan']; 
7$waktu = date("H:i"); 
8$akhir = $_GET['akhir']; 
9
10$json = '{"messages": {'
11if($akhir==0){ 
12    $nomor = mysql_query("select nomor from drzchat order by nomor desc limit 1"); 
13    $n = mysql_fetch_array($nomor); 
14    $no = $n['nomor'] + 1; 
15    $json .= '"pesan":[ {'
16    $json .= '"id":"'.$no.'", 
17              "nama":"Admin"
18              "teks":"Selamat datang di chatting room"
19              "waktu":"'.$waktu.'" 
20              }]'; 
21    $masuk = mysql_query("insert into drzchat values(null,'Admin','$nama bergabung dalam chat','$waktu')"); 
22}else
23    if($pesan){ 
24        $masuk = mysql_query("insert into drzchat values(null,'$nama','$pesan','$waktu')"); 
25
26    } 
27    $query = mysql_query("select * from drzchat where nomor > $akhir"); 
28    $json .= '"pesan":[ '
29    while($x = mysql_fetch_array($query)){ 
30        $json .= '{'
31        $json .= '"id":"'.$x['nomor'].'", 
32                  "nama":"'.htmlspecialchars($x['nama']).'"
33                  "teks":"'.htmlspecialchars($x['pesan']).'"
34                  "waktu":"'.$x['waktu'].'" 
35                  },'; 
36    } 
37    $json = substr($json,0,strlen($json)-1); 
38    $json .= ']'
39
40
41$json .= '}}'
42echo $json
43?> 


File ambilchat.php mempunya fungsi utama memasukkan pesan ke database dan sekaligus mengecek apakah ada pesan terbaru dengan cara melakukan query "select * from drzchat where nomor > $akhir". Variabel $akhir kita dapat dari variabel yang dikirim oleh objek ajax, yang sebenarnya juga berasal field nomor pada tabel drzchat.
Format data yang dikirim oleh server menggunakan format JSON, silahkan download dan baca tutorial JSON di sini.
Download Source Code

Friday, March 16, 2012

Autentikasi dengan Session pada PHP

  Autentikasi dengan Session

  1. Pendahuluan
  2. Cara Membuat atau Register Session
  3. Cara Mengecek Session Telah Teregister
  4. Cara Un-Register Session (Log Out)
  5. Contoh Sederhana Session

1. Pendahuluan

Autentikasi adalah suatu mekanisme untuk mengatur hak akses suatu halaman web, biasanya diawali dengan adanya proses login. Dimana user diminta menginput user id dan password. Jika berhasil login anda berhak masuk ke suatu halaman, jika tidak..anda tidak akan bisa masuk ke halaman tersebut
Session adalah sebuah varibel sementara yang diletakkan di server. Di mana PHP bisa mengambil nilai yang tersimpan di server walaupun kita membuka halaman baru. Biasanya session akan hilang jika anda menutup browser.

2. Cara Membuat atau Register Session

Cara membuat session adalah sebagai berikut :
  1. Deklarasi awal kalau kita menggunakan session, yaitu menggunakan fungsi session_start()
  2. Set suatu nilai ke variabel $_SESSION
Contoh :
halaman1.php
<?php
session_start();

$_SESSION['namauser'] = "Desrizal";

echo $_SESSION['namauser'];

echo "<a href='halaman2.php'>Ke Halaman 2</a>";
?> 
 
Catatan :
Kode session_start() harus diletakkan sebelum ada output apapun walaupun hanya spasi, jadi sebaikanya selalu letakkan di bagian paling atas

3. Cara Mengecek Session Telah Teregister

Setelah kita me-registerkan variabel $_SESSION, maka untuk mengecek apakah session telah diregister adalah dengan menggunakan fungsi isset().
Pada contoh di atas (halaman1.php), setelah kita me-register $_SESSION['namauser'], kita akan ke halaman2.php
Di halaman2.php kita akan cek apakah variabel session telah di register, jika belum kita stop membuka isi halaman2.php
halaman2.php
<?php
session_start();

if(!isset($_SESSION['namauser'])){
    //jika session belum di set/register
    die("Anda belum register kan session");
}

//jika sudah register kita lanjut
?>
<h2>Selamat Datang</h2>

<?php
echo $_SESSION['namauser'];
?>
Untuk melihat efeknya antara variabel $_SESSION sudah diregister atau belum, coba anda tutup browser, lalu buka lagi browsernya, langsung buka halaman halaman2.php. Tanpa membuka halaman1.php terlebih dahulu

4. Cara Un-Register Session (Log Out)

Setelah kita belajar me-register session, maka cara un-register session adalah dengan menggunakan fungsi unset()
logout.php
<?php
session_start();

unset($_SESSION['namauser']);
?> 
 

5. Contoh Sederhana Session

Berikut adalah contoh untuk membuat login dan autentikasi dengan session
Silahkan lihat di : http://blog.codingwear.com/baca.php?no=19

Selamat mencoba
 

Tuesday, March 13, 2012

Pengertian Ajax dan Contoh Penggunaan Ajax

Apakah Ajax itu ? para Web Designer dan Programmer tentu sudah sering mendengar kata-kata tersebut dan sudah menjadi teknologi wajib yang harus digunakan dalam membuat sebuah website moderen dan dinamis.

Mengapa Harus Ajax

Pada website tradisional biasa jika kita mengklik suatu tombol/link tertentu maka browser akan melakukan refresh dimana document HTML akan di baca dari awal dan layar browser akan menjadi blank sesaat karena pada saat itu browser sedang meminta/merequest data dari web server dan hal itulah yang membuat aplikasi website menjadi kurang interaktif dan responsif. Ajax digunakan untuk memecahkan masalah tersebut, Ajax membuat aplikasi website menjadi lebih interaktif dan responsif serta memiliki kecepatan dalam memproses request ke server. Saat ini Ajax sudah menjadi teknologi yang wajib diterapkan bagi website-website moderen (Web 2.0).

Asal Mula Bahasa Pemrograman Ajax

AJAX memiliki kepanjangan Asynchronous Javascript And XML merupakan suatu teknik baru dalam dunia web tapi bukan merupakan bahasa pemrograman yang baru. Dikembangkan sekitar 2-3 tahun yang lalu, AJAX mulai dilirik oleh para web desainer dan programmer. Dengan adanya AJAX, akses data ke server yang dikirim melalui client via web dapat lebih cepat daripada mekanisme biasa. Hal ini dikarenakan AJAX tidak perlu melakukan proses loading page (refresh page) atau pindah ke page yang lain. AJAX dapat diintegrasikan dengan server side programming seperti PHP, ASP, JSP dll. Perhatikan mekanisme proses AJAX menggunakan PHP berikut ini
Gambar Proses Ajax
Pada mekanisme di atas, proses berawal dari web client. Web client merequest sebuah halaman PHP ke server melalui Javascript. Selanjutnya server akan merespon dan menjalankan script PHP. Script PHP akan menghasilkan respon dalam bentuk XML dan data XML tersebut akan dikirim kembali ke web client untuk diolah oleh Javascript. Hasil olahan javascript tersebut akhirnya akan ditampilkan di web client sebagai output tanpa harus merefresh halaman web. Bandingkan dengan mekanisme biasa dalam menjalankan PHP seperti yang ditunjukkan pada gambar berikut
Gambar Proses Biasa
Pada mekanisme biasa, respon yang dihasilkan oleh server berupa HTML yang mengakibatkan halaman web akan merefresh tampilan. Dilihat dari sisi efisiensi, hal ini tentu kurang sekali. Sedangkan kekurangan AJAX dibandingkan mekanisme biasa adalah memiliki tingkat kesukaran pemrograman yang lebih tinggi, karena programmer harus menguasai 4 hal yaitu HTML-(XHTML), Javascript, XML dan juga server side programming seperti PHP dan lain sebagainya


Aplikasi Website dengan Ajax
Pada aplikasi Javascript konvensional jika kita menginginkan data dari server kita menggunakan Form dan memanggilnya dengan method GET atau POST. Sehingga pengunjung perlu mengklik tombol dan kemudian halaman akan kerefresh untuk menampilkan hasil dari request tersebut. Nah, kalau dengan Ajax, Javascript berkomunikasi langsung keserver dengan sebuah fungsi yang disebut XMLHttpRequest.
dengan XMLHttpRequest suatu halaman web dapat direquest dari server dan diterima hasilnya tanpa perlu terjadi refresh pada halaman web tersebut. XMLHttpRequest telah disupport oleh IE 5 keatas, Safari 1.2 keatas, Mozilla Firefox keatas dan Opera 8 keatas. Ajax merupakan penggabungan teknologi-teknologi Javascript, HTML/XHTML, XML, CSS dan Server Side Client. Jadi jika anda belum menguasai salah satu dari teknologi tersebut disarankan untuk anda mempelajari dahulu sebelum melanjutkan pemahaman tentang AJAX.

Contoh aplikasi Ajax

Pada artikel ini saya akan coba memberikan contoh ajax yang paling sederhana karena aplikasi-aplikasi
 website yang besar dimulai dari sesuatau yang sederhana. Untuk memulainnya silahkan anda buat sebuah File HTML dan tuliskan kode dibawah ini lalu simpan dengan nama index.html
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<html>
<head>
<title>Contoh AJAX title>
<script language="javascript">
function GetXmlHttpObject(){
    var xmlHttp=null;
    try {
    //Untuk Browser Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e){
    //Untuk Browser Internet Explorer
        try {
                xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e){
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}
 
function getpages(url,centercol) {
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp) {
        var obj = document.getElementById(centercol);
        xmlHttp.open("GET", url);
        xmlHttp.onreadystatechange = function() {
            if (xmlHttp.readyState == 1) {
                obj.innerHTML = '<img alt=\"Halaman Sedang Dimuat \" src=\"images/wait.gif\" alt=\"loading\" / >';
            }
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                obj.innerHTML = xmlHttp.responseText;
            }
        }
        xmlHttp.send(null);
    }
}
</script>
</head>
<body>
 
<h1>Request File Dari HTML </h1>
<form>
    <input value="Request File  " onclick="getpages('request.html','centercol')" type="button">
</form>
<div id="centercol">
  File request.html akan ditampilkan disini
</div>
</body>
</html>
Sekarang buat file HTML dengan nama request.html yang disimpan dengan folder yang sama dengan File diatas kemudian isilah dengan text berikut ini:
?
1
Text ini ditampilkan dengan metode proses request <strong>Ajax</strong>
Berikut saya terangkan
Awalnya kita perlu membuat object XMLHttpRequest, objek ini wajib ada dalam website yang menggunakan Ajax. Untuk memanggilnya kita perlu menggunakan fungsi berikut ini:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function GetXmlHttpObject(){
    var xmlHttp=null;
    try {
    //Untuk Browser Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }
    catch (e){
    //Untuk Browser Internet Explorer
        try {
                xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e){
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}
Pertama-tama kita set xmlHttp=null tidak aktif, kemudian baru kita aktifkan lagi dengan membuat objek yang baru xmlHttp = new XMLHttpRequest(); Khusus untuk Internet Explorer, karena menggunakan ActiveX untuk membuat XMLHttpRequest kita harus membuat kode xmlHttp = new ActiveXObject("Microsoft.XMLHttp");
Setelah kita membuat objek XMLHttpRequest sekarang kita membuat fungsi untuk mengambil file dan menampilkannya. Disini kita membuat fungsi function getpages(url,centercol), yang didalamnya terdapat xmlHttp.open ("GET", url); yang berarti kita mengambil url dengan method get. dengan menggunakan method get maka kita harus mengirimkan sesuatu keserver, tapi karena kita tidak mengirim apa-apa maka kita kirimkan saja nilai kosong dengan kode: xmlHttp.send(null);
xmlHttp.onreadystatechange = function() merupakan sebuah fungsi dimana nanti kita akan memperoleh status dari request file yang telah kita lakukan. xmlHttp.readyState memiliki 4 status yaitu:
  • 0 Request kita belum dibuat
  • 1 Request kita sedang dalam proses (biasanya kita menggunakan gambar loading dengan ini)
  • 2 Request kita sudah dikirim tapi hasil belum diterima
  • 3 Request kita sedang diproses dikomputer klien
  • 4 Request sudah sukses dikirim dan kita sudah sukses menerimanya
xmlHttp.status merupakan status http. Jika statusnya 200 berarti file html nya ada dan siap ditampilkan. Sehingga kita perlu mengecek kedua status tersebut dengan kode if (xmlHttp.readyState == 4 && xmlHttp.status == 200)

Jika kedua statusnya oke, maka kita perlu menampilkannya dengan perintah obj.innerHTML = xmlHttp.responseText Dimana ini berarti kita menampilkannya di obj, sementara variabel obj telah kita isi dengan centercol, ini kode ketika kita mengisi obj dengan centercol, var obj = document.getElementById(centercol).

Terakhir Kita memanggil fungsi getpages pada tombol serta mengirim url yang akan ditampilkan. Inilah kode yang digunakan untuk memanggil fungsi getpages: <input type="button" value="Tampilkan Request" onclick="getpages('request.html' ,'centercol')">.

Selamat mencoba

Sunday, March 11, 2012

Membuat Searching (Skrip Pencarian Data) pada PHP

Searching atau pencarian data merupakan hal penting dalam sebuah aplikasi, apalagi aplikasi yang menangani data yang banyak. Ada dua tipe searching yaitu: Quick Search dan Advanced Search. Quick search adalah pencarian sederhana seperti google search, pengguna hanya memasukkan sebuah kata kunci dari apa yang dicarinya. Sedangkan Advanced search adalah pencarian lanjut yang lebih kompleks dengan beberapa kriteria pencarian, yang memungkinkan hasil pencarian yang lebih akurat.

Sebelum membuat script seaching ada baiknya untuk mempelajari dasar untuk menampilkan data. Pada tutorial ini akan digunakan sebuah tabel siswa seperti berikut:
Fieldname Tipe Data Keterangan
idint(11)primary key
namavarchar(50)
ayahvarchar(50)
ibuvarchar(50)
alamattext
Searching biasanya menggunakan query "like", seperti:
  1. SELECT * FROM nama_table WHERE nama_field LIKE '%cari%'
hasilnya adalah semua data yang berisikan kata cari seperti "mencari", "pencarian".

Membuat Quick Search

Untuk membuat Quick Search gunakan skrip php di bawah:
  1. <!-- form quick search -->
  2. <form name="form1" method="get" action="">
  3. Search : <input type="text" name="q" id="q"/> <input type="submit" value="Search"/>
  4. </form>
  5. <!-- menampilkan hasil pencarian -->
  6. <?php
  7. if(isset($_GET['q']) && $_GET['q']){
  8. $conn = mysql_connect("localhost", "root", "");
  9. mysql_select_db("test");
  10. $q = $_GET['q'];
  11. $sql = "select * from siswa where nama like '%$q%' or
  12. ayah like '%$q%' or ibu like '%$q%' or alamat like '%$q%'";
  13. $result = mysql_query($sql);
  14. if(mysql_num_rows($result) > 0){
  15. ?>
  16. <table>
  17. <tr>
  18. <td>Nama</td>
  19. <td>Ayah</td>
  20. <td>Ibu</td>
  21. <td>Alamat</td>
  22. </tr>
  23. <?php
  24. while($siswa = mysql_fetch_array($result)){?>
  25. <tr>
  26. <td><?php echo $siswa['nama'];?></td>
  27. <td><?php echo $siswa['ayah'];?></td>
  28. <td><?php echo $siswa['ibu'];?></td>
  29. <td><?php echo $siswa['alamat'];?></td>
  30. </tr>
  31. <?php }?>
  32. </table>
  33. <?php
  34. }else{
  35. echo 'Data not found!';
  36. }
  37. }
  38. ?>

Membuat Advanced Search

Gunakan skrip di bawah untuk membuat advanced search.
  1. <!-- form advanced search -->
  2. <form name="form1" method="get" action="">
  3. Nama : <input type="text" name="nama" id="nama"/> <br/>
  4. Ayah : <input type="text" name="ayah" id="ayah"/> <br/>
  5. Ibu : <input type="text" name="ibu" id="ibu"/> <br/>
  6. Alamat : <input type="text" name="alamat" id="alamat"/>
  7. <br/><input type="submit" value="Search" name="search"/>
  8. </form>
  9. <!-- menampilkan hasil pencarian -->
  10. <?php
  11. if(isset($_GET['search'])){
  12. $conn = mysql_connect("localhost", "root", "");
  13. mysql_select_db("test");
  14. $nama = $_GET['nama'];
  15. $ayah = $_GET['ayah'];
  16. $ibu = $_GET['ibu'];
  17. $alamat = $_GET['alamat'];
  18. $sql = "select * from siswa where nama like '%$nama%' and
  19. ayah like '%$ayah%' and ibu like '%$ibu%' and alamat like '%$alamat%'";
  20. $result = mysql_query($sql);
  21. if(mysql_num_rows($result) > 0){
  22. ?>
  23. <table>
  24. <tr>
  25. <td>Nama</td>
  26. <td>Ayah</td>
  27. <td>Ibu</td>
  28. <td>Alamat</td>
  29. </tr>
  30. <?php
  31. while($siswa = mysql_fetch_array($result)){?>
  32. <tr>
  33. <td><?php echo $siswa['nama'];?></td>
  34. <td><?php echo $siswa['ayah'];?></td>
  35. <td><?php echo $siswa['ibu'];?></td>
  36. <td><?php echo $siswa['alamat'];?></td>
  37. </tr>
  38. <?php }?>
  39. </table>
  40. <?php
  41. }else{
  42. echo 'Data not found!';
  43. }
  44. }
  45. ?>
Perbedaan advanced search dengan quick search adalah: Quick search menggunakan operator "or" pada sql query, sedangkan Advanced search menggunakan operator "and" dengan beberapa kriteria pencarian, seperti nama, ayah, ibu, alamat.

Rangkuman

Ada dua tipe searching/pencarian data: Quick search dan Advanced Search. Quick search adalah pencarian sederhana hanya menggunakan satu kriteria pencaria. Advanced Search, pencarian lanjut yang lebih kompleks dengan beberapa kriteria pencarian. Advanced search memberikan hasil yang lebih akurat dibanding quick search.

Tips Mengatasi Masalah USB Device Not Recognized Pada Windows 7

Terkadang saat kita mencolokkan USB flashkdisk ke port USB akan muncul notifikasi USB Device Not Recognized. Tidak hanya dengan flashdisk, terkadang juga muncul saat mencolokkan kabel handphone, kamera, modem dan lain2 yang berhubungan dengan USB port.
USB-device not recognized
Windows 7 menganggap peripheral anda tersebut mengalami malfungsi (gagal fungsi) sehingga mengeluarkan notifikasi. Nah bagaimana cara mengatasinya?
Ikuti petunjuk berikut:
Langkah 1:
Klik Start dan ketik dan jalankan Devmgmt.msc, kemudian akan terbuka Device Management. Pilih Komputer anda sebagai lokasi untuk melakukan scanning hardware. Klik kanan pada Computer dan klik scan untuk proses pencarian hardware yang terpasang.
Scan for hardware changes
Kemungkinan besar Windows akan dapat mendeteksi masalah dan mengenali USB drive Anda. Jika anda masih menghadapi masalah, coba langkah 2.
Langkah 2:
Klik Start, ketik dan jalankan Devmgmt.msc, akan terbuka jendela Device Management. Pilih pada USB Root seperti pada gambar di bawah, klik kanan pada USB yang terdapat pesan Unknown Device.
11
Pilih properti dari menu klik kanan dan pilih tab Power Management. Klik untuk menghapus “Allow the computer to turn off this device to save power” centang kotak yang ada, kemudian klik OK. Sekarang dari menu Tindakan, klik Scan untuk perubahan hardware seperti yang dimaksud pada pada langkah 1.
Power Management
Windows akan mulai menscan kembali perangkat USB anda.
Langkah 3:
Jika anda masih mengalami masalah, matikan komputer, lepaskan USB, cabut baterai (untuk laptop), atau mencabut daya listri (untuk desktop), biarakan mati sekitar 10-15 menit. Hidupkan kembali komputer anda dan masukkan kembali USB. Seharusnya sampai tahap ini Windows sudah dapat mengenali USB anda. Jika belum kemungkinan terdapat kerusakan pada USb anda.

Friday, March 2, 2012

Contoh Error di PHP, Penyebabnya, dan Solusinya

Dalam artikel kali ini, saya mencoba merangkum beberapa pertanyaan yang sering ditanyakan seputar error di php yang mereka jumpai dan bagaimana cara mengatasinya.


Bunyi Error:
1.Warning: mysql_fetch_array(): supplied argument is not
2.a valid MySQL result resource in ....
atau
1.Warning: mysql_num_rows(): supplied argument is not
2.a valid MySQL result resource in ...
Penyebab:
Error di atas disebabkan ada query SQL yang salah. Bisa jadi karena sintaks perintah query SQL nya salah, misalnya kurang tanda petik untuk menyatakan string dll. Selain itu bisa juga terjadi karena nama field dan tabel yang salah penulisannya.
Solusi:
Coba cek kembali statement query SQL Anda. Pastikan tidak ada lagi kesalahan dalam penulisannya. Untuk proses debugging query SQL (mengetahui letak kesalahannya), Anda bisa menambahkan statement die(mysql_error()) pada perintah mysql_query() nya. Contoh:
1.$query = ".....";
2.mysql_query($query) or die(mysql_error());
3..
4..
atau silakan baca kembali teknik debugging script php mysql.

Bunyi Error:
1.Warning: session_start() [function.session-start]:
2.Cannot send session cookie - headers already sent by
3.(output started at ... ) in ... on line ...
atau
1.Warning: session_start() [function.session-start]:
2.Cannot send session cache limiter - headers already sent
3.(output started at ...) in ... on line ...
Penyebab:
Error di atas biasanya terjadi pada penggunaan session. Sewaktu memberikan perintah session_start(), terdapat baris perintah di atasnya yang menampilkan string atau kode html ke browser. Sebagai contoh, perhatikan script berikut ini:
1.<?php
2.echo "Hallo...";
3.session_start();
4.?>
atau
1.<html>
2.<head>
3.<title>....</title>
4.</head>
5.<?php
6.session_start();
7.?>
Bila Anda perhatikan script di atas, maka terdapat string yang di-echo-kan atau terdapat kode html yang diletakkan sebelum session_start(). Nah… inilah yang menyebabkan error. Selain contoh di atas, error juga bisa muncul dari script yang berbentuk seperti ini
1.<?php
2.include "header.php";
3.session_start();
4.?>
Meskipun sebelum session_start() tidak ada echo atau kode html, namun error akan tetap muncul apabila isi dari script header.php terdapat echo atau kode html juga, misalnya
header.php
1.<?php
2.echo "hallo";
3.?>
Solusi:
Pastikan sebelum perintah session_start() tidak terdapat perintah echo atau kode html apapun.

Bunyi Error:
1.Warning: Cannot modify header information – headers already sent by
2.(output started at ...) in ...
Penyebab:
Peringatan di atas biasanya muncul ketika Anda melakukan redirecting menggunakan perintah
1.header("Location: ...");
Seharusnya, sebelum perintah header("Location: ...") tidak boleh ada string apapun yang ditampilkan di browser, meskipun itu kode HTML (sama seperti penyebab error di session_start() sebelumnya). Sebagai contoh perhatikan script berikut ini:
1.<?php
2.echo "<p>Hallo Apa kabar?</p>";
3.header("Location: test.php");
4.?>
Pada script di atas, sebelum perintah header() terdapat string yang ditampilkan ke browser. Inilah yang mengakibatkan muncul peringatan tsb. Lantas bagaimana dengan script berikut ini?
1.<?php
2.$a = 10;
3.if ($a < 0) echo "Nilai A negatif";
4.else header("Location: test.php");
5.?>
Kira-kira muncul Warning nya gak ya? Jika Anda coba, maka tidak muncul Warning nya meskipun sebelum header() terdapat string yang ditampilkan ke browser. Mengapa demikian? ya.. meskipun di situ terdapat perintah untuk menampilkan string ke browser, namun perintah tersebut tidak pernah dijalankan karena nilai $a nya positif.
Solusi:
Pastikan sebelum perintah header("Location: ...") tidak ada kode HTML atau perintah echo apapun. Jika Anda mengincludekan suatu script di atas header("Location: ...") pastikan dalam script yang diincludekan tersebut tidak ada kode HTML atau echo.

Bunyi Error:
1.Warning: mysql_connect() [function.mysql-connect]:
2.Access denied for user ‘root’@'localhost’ (using password: YES) in ...
Penyebab:
Error di atas disebabkan karena koneksi yang gagal ke MySQL. Penyebab gagalnya bisa jadi disebabkan nama user atau password yang salah.
Solusi:
Pastikan username dan password koneksi ke MySQL Anda sudah benar ketika menggunakan perintah koneksi mysql_connect("namahost", "namauser", "passworduser");

Bunyi Error:
1.Parse error: syntax error, unexpected T_STRING,
2.expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or ‘}’ in ...
Penyebab:
Penyebab pastinya, saya kurang mengetahuinya. Namun biasanya ini terjadi karena penggunaan versi PHP yang rendah (versi di bawah PHP 5) untuk menjalankan script PHP yang menggunakan OOP.
Solusi:
Coba upgrade versi PHP Anda, atau gunakan PHP dengan versi yang lebih tinggi.

Bunyi Error:
1.Parse error: syntax error, unexpected T_ELSE in ...
Penyebab:
Error tersebut muncul sebagai akibat penulisan sintaks IF … ELSE yang tidak sesuai aturan. Perhatikan contoh penggunaan IF ELSE yang salah di bawah ini
1.<?php
2.$a = 5;
3.if ($a > 0) $status = "A lebih besar dari 0"
4.else ($a < 0) $status = "A lebih kecil dari 0"
5.else $status = "A sama dengan 0"
6.?>
Contoh di atas terdapat kesalahan yaitu setiap akhir statement tidak diberikan tanda titik koma (;), dan pada bagian else ($a < 0) kurang IF, seharusnya
1.<?php
2.$a = 5;
3.if ($a > 0) $status = "A lebih besar dari 0";
4.else if ($a < 0) $status = "A lebih kecil dari 0";
5.else $status = "A sama dengan 0";
6.?>
Solusi:
Pastikan struktur statement yang Anda gunakan berbentuk seperti ini
1.<?php
2.if (syarat1) statement1;
3.else if (syarat2) statement2;
4.else if (syarat3) statement3;
5..
6..
7.else statementX;
8.?>
atau
01.<?php
02.if (syarat1)
03.{
04.statement;
05.statement;
06..
07..
08.}
09.else if (syarat2)
10.{
11.statement;
12.statement;
13..
14..
15.}
16..
17..
18.else
19.{
20.statement;
21.statement;
22..
23..
24.}
25.?>

Bunyi Error:
1.Fatal error: Call to undefined function: ...
Penyebab:
Error tersebut disebabkan karena nama function yang digunakan tidak ada atau tidak dikenal oleh PHP. Jika function tersebut adalah built in function, misalnya str_split() bisa jadi hal ini disebabkan pada versi PHP yang digunakan belum ada function tersebut. Jika function tersebut adalah function buatan sendiri, bisa jadi anda lupa menyisipkan ke dalam script atau meng-include-kannya.
Solusi:
Jika function yang tidak dikenal adalah built in function, maka lakukan upgrade versi PHP yang lebih tinggi. Sedangkan jika function yang tidak dikenal adalah buatan sendiri, pastikan Anda sudah meng-includekan di dalam scriptnya sehingga bisa dikenal. Contohnya:
function.php
1.<?php
2.function jumlah($a, $b)
3.{
4.return $a + $b;
5.}
6.?>
script.php
1.<?php
2.include "function.php";
3.echo jumlah(9, 10);   // akan menghasilkan 19
4.?>
atau
script.php
1.<?php
2.function jumlah($a, $b)
3.{
4.return $a + $b;
5.}
6. 
7.echo jumlah(9, 10);   // akan menghasilkan 19
8.?>

Bunyi Error:
1.Parse error: parse error, unexpected $end
Penyebab:
Error di atas disebabkan karena kurangnya tanda penutup kurung kurawal. Contohnya:
1.<?php
2.if ($a > 1)
3.{
4.echo "Nilai A lebih dari 1";
5.?>
atau
1.<?php
2.while ($a > 1)
3.{
4..
5..
6..
7.?>
Selain itu, bisa pula error tersebut disebabkan karena efek perbedaan penggunaan tanda pembuka PHP <?php dan <?. Contohnya
01.<?php
02.if (syarat)
03.{
04.statement1;
05.statement2;
06.?>
07. 
08.<?
09.statement3;
10.statement4;
11.}
12.?>
Perhatikan contoh script di atas, bahwa pada blok statement IF oleh si programmer dipecah menjadi 2 blok, namun perhatikan bahwa untuk blok kedua, tanda pembukanya menggunakan <? saja. Nah... terkadang suatu server hanya membolehkan tanda pembuka script PHP menggunakan <?php, sehingga untuk blok kedua tidak dianggap sebagai script, dan.. akibatnya statement IF nya dianggap tidak ada tanda } penutup.
Solusi:
Pastikan tanda kurung kurawal penutup tidak lupa menuliskannya. Jika ternyata kasus yang Anda hadapi sama seperti contoh kasus terakhir (perbedaan tanda pembuka script PHP), konsistenkan penulisan tanda pembukanya menggunakan <?php supaya aman.

Bunyi Error:
1.Parse error: syntax error, unexpected T_STRING
Penyebab:
Error tersebut disebabkan karena penggunaan tanda petik (double quote atau single quote) yang tidak tepat untuk menyatakan suatu string. Sebuah string harus diapit oleh dua buah tanda petik. Sebagai contoh:
1.<?php
2.$a = "ini sebuah string";
3.?>
atau
1.<?php
2.$a = 'ini sebuah string';
3.?>
Namun... jika dalam string tersebut terdapat tanda petik lagi, misalkan
1.<?php
2.$a = "ini sebuah " string";
3.?>
atau
1.<?php
2.$a = 'ini sebuah ' string';
3.?>
maka akan terdapat error di atas. Hal yang sama jika Anda menggunakan single quote (tanda petik tunggal).
Solusi:
Pastikan di dalam sebuah string, anda mengapitnya dengan hanya 2 buah tanda petik saja. Jika Anda bermaksud menyisipkan tanda petik dalam sebuah string, gunakan tanda \" atau \', contoh
1.<?php
2.$a = "ini sebuah \" string";
3.?>
atau
1.<?php
2.$a = 'ini sebuah \' string';
3.?>

Bunyi Error:
1.Notice: Undefined index: ...
atau
1.Notice: Undefined variable: ...
Penyebab:
Sebenarnya itu bukan error, namun sekedar peringatan saja bahwa ada variabel atau index array yang belum terdefinisi sebelumnya. Di beberapa versi PHP peringatan tersebut muncul, namun di versi yang lain tidak muncul. Berikut ini contohnya:
1.<?php
2.if ($a > 0)
3.{
4.....
5.}
6.?>
Jika kita perhatikan script di atas, variabel $a langsung diberikan statement pengecekan IF, padahal nilai $a ini tidak ada sebelumnya. Nah... di beberapa versi PHP, akan muncul peringatan
1.Notice: Undefined variable: a
Namun, bila nilai $a ini sudah didefinisikan sebelumnya misalnya
1.<?php
2.$a = 10;
3.if ($a > 0)
4.{
5.....
6.}
7.?>
maka peringatan di atas tidak akan muncul lagi. Peringatan yang hampir sama juga bisa muncul untuk contoh berikut ini
1.<?php
2.if ($_GET['test'] == 0)
3.{
4.....
5.}
6.?>
yang dikarenakan nilai $_GET['test'] belum terdefinisi sebelumnya atau belum ada nilainya (belum ada request GET untuk parameter 'test').
Solusi:
Sebenarnya peringatan di atas bisa saja diabaikan karena tidak berpengaruh pada kinerja script atau proses yang terjadi di dalamnya. Namun, jika Anda ingin menghilangkan peringatan tersebut caranya adalah dengan memodifikasi parameter
1.error_reporting  = ...
pada file konfigurasi php.ini
Tambahkanlah nilai "& ~E_NOTICE" pada nilai parameternya, contoh:
1.error_reporting  =  E_ALL & ~E_NOTICE
Maksud dari parameter di atas adalah, PHP akan menampilkan bunyi error kecuali NOTICE. Jika sudah, silakan merestart Apache nya.

Bunyi Error:
1.Fatal error: Maximum execution time of ... seconds exceeded in ...
Penyebab:
Error di atas disebabkan karena lama eksekusi sebuah script PHP telah mencapai batas maksimumnya. Jika Anda menggunakan AppServ atau XAMPP, default maximum execution time nya diset 30 detik. Jika lama eksekusi script yang Anda buat melebihi 30 detik, maka akan muncul error di atas.
Solusi:
Anda dapat meningkatkan atau menambah max execution time pada file php.ini, dengan cara carilah parameter
1.max_execution_time = ...
Tambahlah nilainya, misalnya menjadi 9999 detik, sehingga nilai parameternya menjadi
1.max_execution_time = 9999
Selanjutnya, simpan kembali php.ini nya, lalu restart Apachenya.
Kalau perlu, lakukan analisis algoritma pada script Anda apabila dirasa tidak efisien sehingga mengakibatkan running time yang lama.

Bunyi Error:
Bukan Error sih, tapi kegagalan dalam proses upload file ketika Anda membuat script upload file.
Penyebab:
Kegagalan dalam proses upload file itu disebabkan oleh ukuran file yang terlalu besar melebihi batas maksimum yang diperbolehkan oleh PHP sesuai di file php.ini.
Solusi:
Anda dapat mengubah batas maksimum file size untuk upload ini dengan mengubah parameter
1.upload_max_filesize = ...
dan
1.post_max_size = ...
pada file php.ini
Berikut ini contoh pengubahan batas maksimum upload file hingga 80 Mb.
1.upload_max_filesize = 80M
dan
1.post_max_size = 80M
Jika sudah melakukan pengubahan, lakukan restart Apache nya. Oya, jangan lupa pula untuk menambah komponen input
1.<input type="hidden" name="MAX_FILE_SIZE" value="80000000" />
pada form upload nya.
Solusi di atas hanya akan bisa menyelesaikan permasalahan upload jika file diupload ke folder atau direktori tertentu yang ada di server. Namun, jika file diupload ke database server, seperti pada artikel lain yang pernah dibahas, maka solusi di atas tidak menyelesaikan masalah karena adanya batasan limit file size pada tipe data yang memungkinkan untuk menyimpan data file, misalnya tipe data blob, medium blob, atau long blob.
OK.. mudah-mudahan artikel di atas bisa bermanfaat bagi Anda yang ingin belajar PHP, namun terkendala beberapa macam error yang belum tahu penyebabnya dan solusinya.

 
Pratama Master powered by blogger.com
Design by Simple Diamond and Pratama Master