Kurang
Titik-Koma
Jenis error program ini merupakan
error yang paling sering ditemui. Penyebabnya karena kurang menambahkan
titik-koma ( ; ) pada akhir suatu perintah (statement). Solusi dalam
mencari letak kesalahan programnya membutuhkan kejelian dan ketelitian. Namun
demikian, umumnya akan ditunjukkan baris dimana error tersebut muncul. Mulailah
dari baris tersebut, namun tidak selamanya penyebab kesalahan berada pada baris
yang ditunjukkan. Terkadang penyebab kesalahan justru berada di baris atas atau
sebelumnya.
Berikut ini beberapa contoh program
beserta tampilan error yang akan muncul jika program dijalankan:
<?php
1. $nim
= "1111500111";
2. $nama
= "Achmad Solichin"
3. echo
$nim;
4. echo
$nama;
5. ?>
Jika program di atas dijalankan maka
akan ditampilkan error sebagai berikut:
Parse
error: syntax error, unexpected T_ECHO in
/home/achmatim/public_html/artikel_demo/error-php/error1.1.php on line 4
Baris yang ditunjukkan pada tampilan
error di atas adalah baris ke-4, namun jika diperhatikan program 1.1 di atas
ternyata penyebab error justru bukan di baris ke-4. Penyebab error berada pada
baris 3, dimana statement tidak diakhiri dengan titik-koma ( ; ). Mengapa PHP
justru menunjuk ke baris 4? Hal ini disebabkan karena proses pemeriksaan
sintaks oleh PHP dilakukan secara berurutan (sekuensial) dari baris pertama
hingga terakhir. Pada baris ketiga belum terjadi error, namun statement masih
memerlukan adanya titik-koma ( ; ). Saat PHP berada di baris 4, bukan
titik-koma ( ; ) yang ditemukan, namun justru perintah “echo”, sehingga disinilah
PHP akan menunjukkan errornya. PHP tidak akan mengetahui penyebab errornya
dimana, namun PHP akan menunjukkan pada baris mana error mulai terjadi. Tips: periksa program pada baris yang ditunjukkan
oleh pesan error, jika tidak ditemukan, periksa baris atasnya. Demikian dan
seterusnya hingga penyebab error ditemukan.
2. $user
= "achmatim";
3. $pass
= "123"
4. if
($user == "achmatim" && $pass == "123") {
5. echo "Login Berhasil";
6. }
else {
7. echo "Login Gagal";
8. }
9. ?>
Jika program di atas dijalankan maka
akan ditampilkan error sebagai berikut:
Parse
error: syntax error, unexpected T_IF in
/home/achmatim/public_html/artikel_demo/error-php/error1.2.php on line 4
Sama seperti program 1.1, penyebab
errornya adalah kurang titik-koma. Pada program 1.1, letak kesalahan diikuti
dengan perintah echo sehingga pesan kesalahan mengatakan “unexpected T_ECHO”.
Sedangkan pada program 1.2, letak kesalahan diikuti dengan perintah if,
sehingga pesan kesalahan yang ditampilkan adalah “unexpected T_IF”. Dari pesan
kesalahan tersebut, kita dapat mengetahui letak kesalahan pasti berada sebelum
perintah if, tepatnya pada baris ke-3, statement tidak diakhiri dengan
titik-koma ( ; ).
2. $day
= date ("D")
3. switch
($day) {
4. case 'Sun' : $hari = "Minggu"; break;
5. case 'Mon' : $hari = "Senin"; break;
6. case 'Tue' : $hari = "Selasa"; break;
7. case 'Wed' : $hari = "Rabu"; break;
8. case 'Thu' : $hari = "Kamis"; break;
9. case 'Fri' : $hari = "Jum'at"; break;
10. case 'Sat' : $hari = "Sabtu"; break;
11. default : $hari = "Kiamat";
12.}
13.echo "Hari
ini hari <b>$hari</b>";
14.?>
Jika program di atas dijalankan maka
akan ditampilkan error sebagai berikut:
Parse
error: syntax error, unexpected T_SWITCH in
/home/achmatim/public_html/artikel_demo/error-php/error1.3.php on line 3
Seperti dua contoh sebelumnya, jelas
bahwa pada program 1.3 letak kesalahan berada sebelum perintah switch,
tepatnya pada baris ke-2, statement tidak diakhiri dengan titik-koma ( ; ).
Jadi, jika muncul pesan kesalahan yang mirip seperti di atas, langsung saja
cari perintah switch dan perhatikan baris perintah sebelumnya.
2. /*
contoh 1 */
3. $i
= 1
4. while
($i <= 10) {
5. echo $i++;
6. }
7. ?>
Jika program di atas dijalankan maka
akan ditampilkan error sebagai berikut:
Parse
error: syntax error, unexpected T_WHILE in
/home/achmatim/public_html/artikel_demo/error-php/error1.4.php on line 4
Pada contoh program 1.4 di atas,
letak kesalahan berada tepat di atas perintah while, tepatnya di baris
ke-3. Statement seharusnya diakhiri dengan titik-koma.
2. function
cetak_ganjil ($awal, $akhir) {
3. for ($i=$awal; $i<$akhir; $i++) {
4. if ($i%2 == 1) {
5. echo "$i ";
6. }
7. }
8. }
9. //pemanggilan
fungsi
10.$a = 10;
11.$b = 50;
12.echo "<b>Bilangan
ganjil dari $a sampai $b : </b><br>"
13.cetak_ganjil($a,
$b);
14.?>
Jika program di atas dijalankan maka
akan ditampilkan error sebagai berikut:
Parse
error: syntax error, unexpected T_STRING, expecting ',' or ';' in
/home/achmatim/public_html/artikel_demo/error-php/error1.5.php on line 13
Pada contoh program 1.5 di atas, sudah
jelas bahwa letak kesalahannya pada baris ke-12 dimana statement tidak diakhiri
titik-koma. Error dengan pesan “unexpected T_STRING” perlu dicermati dengan
lebih teliti karena error tidak hanya terjadi karena kurangnya titik-koma,
namun dapat juga karena kurang koma ( , ) atau operator penggabungan string
berupa titik ( . ). Namun demikian, umumnya terjadi karena penulisan string
yang tidak lengkap.
2. echo
"test"
3. function
cetak_ganjil ($awal, $akhir) {
4. for ($i=$awal; $i<$akhir; $i++) {
5. if ($i%2 == 1) {
6. echo "$i ";
7. }
8. }
9. }
10.//pemanggilan
fungsi
11.$a = 10;
12.$b = 50;
13.echo "<b>Bilangan
ganjil dari $a sampai $b : </b><br>";
14.cetak_ganjil($a,
$b);
15.?>
Jika program di atas dijalankan maka
akan ditampilkan error sebagai berikut:
Parse
error: syntax error, unexpected T_FUNCTION, expecting ',' or ';' in
/home/achmatim/public_html/artikel_demo/error-php/error1.6.php on line 3
Contoh program 1.6 di atas mirip
dengan contoh program sebelumnya, hanya saja letak kesalahannya sekarang berada
pada baris ke-2, sebelum pendefinisian fungsi. Pada baris tersebut, seharusnya
diakhiri dengan titik-koma ( ; ).
2. $nim
= "0411500400";
3. $nama
= 'Chotimatul Musyarofah';
4. $umur
= 23;
5. $nilai
= 82.25;
6. $status
= TRUE;
7. echo
"NIM : " . $nim . "<br>";
8. echo
"Nama : $nama<br>";
9. print
"Umur : " . $umur; print "<br>";
10.printf ("Nilai : %.3f<br>",
$nilai);
11.
12.if ($status)
13. echo "Status : Aktif"
14.else
15. echo "Status : Tidak Aktif";
16.?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Parse
error: syntax error, unexpected T_ELSE, expecting ',' or ';' in
/home/achmatim/public_html/artikel_demo/error-php/error4.1.php on line 14
Letak kesalahan pada contoh program
1.7 bukanlah pada baris ke-14 seperti ditunjukkan di atas, namun terletak di
baris ke-13 (sebelum perintah ELSE) dimana statement tidak diakhiri dengan
titik-koma.
Kekurangan
atau Kelebihan Kutip
Penyebab error program yang kedua
berkaitan dengan tanda kutip, baik kutip tunggal (‘) maupun kutip ganda (“).
Seperti kita ketahui bahwa di PHP, string dapat dituliskan dengan diapit oleh
tanda kutip tunggal (‘) dan kutip ganda (“). Error program akan terjadi jika
penyajian tanda kutip yang tidak tepat, misalnya tidak ditutup (kurang kutip)
atau kelebihan kutip.
Berikut ini beberapa contoh program
PHP yang error karena permasalahan tanda kutip:
2. $nim
= "0411500400;
3. $nama
= 'Chotimatul Musyarofah';
4. echo
"NIM : " . $nim . "<br>";
5. echo
"Nama : $nama";
6. ?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Parse
error: syntax error, unexpected T_STRING in
/home/achmatim/public_html/artikel_demo/error-php/error2.1.php on line 4
Perhatikan contoh program 2.1 di
atas. Pesan kesalahan menunjuk pada baris ke-4, tetapi penyebab kesalahan
justru ada di baris ke-2. Hal tersebut terjadi karena pada baris ke-2 terdapat
string yang dibuka dengan kutip ganda (“) namun tidak ada penutup atau
pasangannya. Pada proses kompilasi, PHP akan memeriksa sintaks program secara
berurutan. Saat ditemukan tanda kutip, maka program akan menganggap teks
berikutnya sebagai sebuah string hingga ketemu pasangannya. Seperti pada contoh
program 2.1 di atas, program tidak menemukan pasangan dari kutip ganda (“) yang
ada di baris kedua pada baris yang sama, namun justru ditemukan kutip ganda (“)
pada baris ke-4. Kutip ganda pada baris keempat dianggap sebagai pasangan
(penutup) kutip ganda pada baris kedua. Setelah ditemukan penutup dari kutip
tersebut, maka program akan menganggap bahwa penyajian string (statement) sudah
lengkap dan harus ditutup dengan titik-koma atau operator penggabungan string.
Ternyata program tidak menemukan penutup statement setelahnya, sehingga
terjadilah error di baris ke-4.
Untuk mengatasi error pada program
2.1 di atas tentunya cukup dengan menambahkan kutip ganda sebelum titik-koma
pada baris kedua. Menemukan letak kesalahan yang berkaitan dengan tanda kutip
memang terkadang agak sulit dilakukan, terutama pada program yang cukup panjang.
Letak kesalahan seringkali berada pada baris yang sama sekali berbeda dengan
petunjuk pada pesan kesalahannya. Oleh karena itu, pemahaman terhadap
penanganan string menjadi cukup penting dan sangat membantu kita dalam
menemukan letak kesalahan dengan cepat. Jika perlu, pelajari kembali buku
gratis Pemrograman Web dengan PHP
& MySQL terutama Bab 6 mengenai String dan
Tanggal. Selain itu, penggunaan editor program yang baik dan sesuai juga
sangat membantu menemukan kesalahan dengan cepat, karena pada umumnya editor
memiliki pewarnaan yang berbeda antara string, nama variabel maupun perintah
bawaan PHP. Sebagai contoh, bandingkan contoh program 1.7 dan 2.1 di atas. Perintah
echo pada program 1.7 semuanya berwarna kuning, namun perintah echo pada
program 2.1 berwarna biru. Hal tersebut menunjukkan bahwa pada program 2.1
pasti terjadi kesalahan.
2. $nim
= "0411500400";
3. $nama
= 'Chotimatul Musyarofah;
4. echo
"NIM : " . $nim . "<br>";
5. echo
"Nama : $nama";
6. ?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Parse
error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE in
/home/achmatim/public_html/artikel_demo/error-php/error2.2.php on line 3
Penyebab error pada program 2.2 di
atas sudah cukup jelas, yaitu kurangnya pasangan tanda kutip tunggal ( ‘ ) pada
baris ketiga. Sama seperti error pada program sebelumnya, kita juga dapat
menganalisa kesalahan program dengan memperhatikan warna source code
yang ditampilkan oleh editor.
2. $nim
= 0411500400";
3. $nama
= 'Chotimatul Musyarofah';
4. echo
"NIM : " . $nim . "<br>";
5. echo
"Nama : $nama";
6. ?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Parse
error: syntax error, unexpected '"' in
/home/achmatim/public_html/artikel_demo/error-php/error2.3.php on line 2
Perhatikan baris kedua program 2.3
di atas. Terlihat bahwa nilai dari variabel $nim bertipe string,
sehingga harus diapit dengan tanda kutip. Inisialisasi variabel $nim
tidak diawali dengan tanda kutip ganda ( “ ) sehingga menyebabkan error
program.
Kurang
Operator Penggabungan String
Seperti kita ketahui bahwa suatu
string dapat digabungkan dengan variabel atau string lainnya menggunakan
operator penggabungan titik ( . ). Error akan ditampilkan jika pada
penggabungan string yang tidak menggunakan operator tersebut. Berikut ini
contoh program PHP yang error dalam hal penggabungan string.
2. $nim
= "0411500400";
3. $nama
= 'Chotimatul Musyarofah';
4. echo
"NIM : " $nim . "<br>";
5. echo
"Nama : $nama";
6. ?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Parse
error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in
/home/achmatim/public_html/artikel_demo/error-php/error3.1.php on line 4
Perhatikan baris keempat program 3.1
di atas. Antara string “NIM : “ dan variabel $nim seharusnya
terdapat operator penggabungan titik ( . ), seperti pada penggabungan $nim dan
string “<br>”. Selain dengan menggunakan operator penggabungan, string
dan variabel juga dapat digabungkan dengan memasukkan nama variabel ke dalam
string yang diapit dengan kutip ganda, seperti pada contoh baris ke-5 program
3.1 di atas.
Kurang
atau Kelebihan Kurung Kurawal
Pada bahasa pemrograman PHP, kurung
kurawal, baik { maupun }, digunakan untuk mengelompokkan suatu blok perintah
tertentu, seperti pada struktur kondisi IF-ELSE, perulangan WHILE,
pendefinisian fungsi, dan sebagainya. Penanganan error program yang berkaitan
dengan kelengkapan kurung kurawal terkadang sedikit sulit dilakukan, terutama
jika program sudah cukup kompleks dan gaya penulisan program (coding style)
tidak baik dan teratur. Kerapihan dalam penulisan program sangat berguna bagi
programmer dalam mengelola program di kemudian hari, maupun dalam melakukan
penelusuran kesalahan (error).
Gaya penulisan program atau coding
style memang setiap programmer memang berbeda, namun demikian biasakanlah
untuk mengikuti coding style yang baik. Di antara coding style yang baik adalah
konsistensi dalam penulisan nama variabel, fungsi dan class, penggunaan
indentasi (indenting) untuk blok dengan level yang berbeda, penambahan
keterangan atau komentar program dan sebagainya. Kita dapat mengikuti salah
satu coding standard yang sudah ada dan banyak digunakan oleh programmer
di seluruh dunia, seperti Zend
Framework Coding Standard dan PEAR Coding Standard.
Beberapa contoh program berikut ini
akan mempermudah pemahaman kita dalam menangani kesalahan program terkait
kurung kurawal.
2. $day
= date ("D");
3. switch
($day) {
4. case 'Sun' : $hari = "Minggu"; break;
5. case 'Mon' : $hari = "Senin"; break;
6. case 'Tue' : $hari = "Selasa"; break;
7. case 'Wed' : $hari = "Rabu"; break;
8. case 'Thu' : $hari = "Kamis"; break;
9. case 'Fri' : $hari = "Jum'at"; break;
10. case 'Sat' : $hari = "Sabtu"; break;
11. default : $hari = "Kiamat";
12.
13.echo "Hari
ini hari <b>$hari</b>";
14.?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Parse
error: syntax error, unexpected $end in
/home/achmatim/public_html/artikel_demo/error-php/error4.1.php on line 15
Saat kita menemukan pesan kesalahan
seperti di atas, terkadang kita bingung sendiri karena kesalahan justru
menunjuk pada baris yang tidak ada perintah apapun yaitu baris ke-15. Error
tersebut merupakan salah satu indikasi bahwa penyebab error adalah kurangnya
kurung kurawal penutup. Yang harus dilakukan adalah dengan memeriksa setiap
blok dalam program dan pastikan bahwa setiap kurawal buka { memiliki pasangan
}. Disinilah kerapihan penulisan program akan sangat membantu penelusuran. Pada
contoh program 4.1 di atas letak kesalahannya ada di baris ke-12 dimana kurawal
buka pada blok SWITCH-CASE belum memiliki pasangan (belum ditutup).
2. function
cetak_ganjil ($awal, $akhir) {
3. for ($i=$awal; $i<$akhir; $i++) {
4. if ($i%2 == 1) {
5. echo "$i ";
6. }
7. }
8. }
9. }
10.//pemanggilan
fungsi
11.$a = 10;
12.$b = 50;
13.echo "<b>Bilangan
ganjil dari $a sampai $b : </b><br>";
14.cetak_ganjil($a,
$b);
15.?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Parse
error: syntax error, unexpected '}' in /home/achmatim/public_html/artikel_demo/error-php/error4.2.php
on line 9
Berbeda dengan contoh program 4.1,
pada contoh program 4.2 justru kelebihan kurung kurawal penutup sehingga
ditampilkan error program seperti di atas. Pada pesan kesalahan ditunjukkan bahwa
error berada pada baris ke-9, namun sebenarnya kelebihan kurawal berada di
baris ke-8. Hapus kurawal } pada baris ke-8. Sekali lagi disini gaya penulisan
program yang baik akan sangat membantu proses identifikasi kesalahan. Jika
salah dalam menghapus kurung kurawal seringkali akan menimbulkan error yang
lain, sehingga diperlukan ketelitian dan pengalaman dalam menangani error
serupa.
Kesalahan
Nama Variabel
Variabel merupakan tempat
penyimpanan suatu nilai dalam program. Variabel terdiri dari 2 (dua) jenis,
yaitu variabel bawaan (built-in) dari PHP dan variabel yang
didefinisikan oleh programmer. Untuk jenis yang kedua, kita dapat
mendefinisikan variabel sesuai kebutuhan, namun penamaannya harus mengikuti
aturan-aturan yang telah ditetapkan PHP. Beberapa aturan dasar antara lain
harus diawali dengan tanda $ dan diikuti dengan huruf atau garis bawah ( _ ),
tidak boleh diawali dengan angka, tidak boleh mengandung karakter khusus
seperti spasi, tanda ‘$’ dan tanda ‘+’, dan seterusnya. Kesalahan dalam
penamaan variabel dapat menyebabkan error program.
Berikut ini contoh error program
yang disebabkan karena kesalahan penamaan variabel.
2. $nim
= "0411500400";
3. $nama
= 'Chotimatul Musyarofah';
4. $umur
= 23;
5. $3nilai
= 82.25;
6. $status
= TRUE;
7. echo
"NIM : " . $nim . "<br>";
8. echo
"Nama : $nama<br>";
9. print
"Umur : " . $umur; print "<br>";
10.printf ("Nilai : %.3f<br>",
$nilai);
11.
12.if ($status)
13. echo "Status : Aktif";
14.else
15. echo "Status : Tidak Aktif";
16.?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Parse
error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in
/home/achmatim/public_html/artikel_demo/error-php/error5.1.php on line 5
Pada baris ke-5 program 5.1 di atas
terdapat pendefinisian variabel $3nilai. Nama variabel tersebut tidak diijinkan
karena setelah tanda $ terdapat karakter angka. Seharusnya setelah tanda $
diikuti oleh huruf atau karakter garis-bawah ( _ ). Untuk memperbaiki program
di atas, tentu dengan mengganti nama variabel sesuai dengan ketentuan penamaan
variabel yang benar.
Variabel
Belum Didefinisikan
Dalam hal penanganan variabel, PHP
memang memiliki keleluasaan seperti variabel tidak perlu dideklarasikan. Kita
dapat langsung mendefinisikan isi dari variabel tanpa perlu dipusingkan dengan
deklarasi atau tipe data dari variabel. Tipe data akan ditentukan oleh PHP
berdasarkan isi dari variabelnya. Namun demikian, kita tetap perlu memahami
bahwa pada suatu kondisi, penggunaan variabel yang belum terdefinisikan
sebelumnya dapat menyebabkan munculnya error program. Sebagai contoh dalam
program 6.1 berikut ini.
2. for($i=1;
$i<=10; $i++) {
3. $total = $total + $i;
4. }
5. echo
$total;
6. ?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Notice:
Undefined variable: total in
/home/achmatim/public_html/artikel_demo/error-php/error6.1.php on line 3
Maksud dari program 6.1 di atas
adalah ingin menghitung dan menampilkan total dari 10 bilangan bulat yang
dimulai dari 1. Dengan demikian terdapat variabel $total yang akan diisikan
hasil penjumlahan untuk setiap bilangan dari 1 hingga 10. Perhatikan baris ke-3
program dimana terdapat perintah $total = $total + $i;. Pesan kesalahan
muncul karena pada saat perulangan baru dimulai ($i = 1) nilai awal dari $total
yang ditambahkan dengan nilai $i belum terbentuk atau belum ada. Untuk
mengatasi error tersebut, kita perlu mendefinisikan nilai awal dari $total
sebelum perulangan untuk menghitung total. Karena $total pasti akan bernilai
bilangan bulat, maka kita dapat memberi nilai awal $total dengan 0, sehingga
perintah yang perlu ditambahkan adalah $total = 0.
Mengakses
Index Array yang Tidak Ada
Seperti halnya variabel, dalam hal
penanganan array, PHP juga tidak memerlukan pendeklarasian awal maupun
penentuan jumlah elemen dari array. Akan tetapi, pengaksesan elemen array yang
tidak ada atau belum terbentuk akan menyebabkan error seperti pada contoh
program 7.1 berikut ini.
2. $arrBuah
= array ("Mangga", "Apel",
"Pisang", "Jeruk");
3. echo
$arrBuah[0]; //Mangga
4. echo
$arrBuah[4]; //Jeruk
5. ?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Notice:
Undefined offset: 4 in
/home/achmatim/public_html/artikel_demo/error-php/error7.1.php on line 4
Pada program 7.1 diatas terdapat
sebuah variabel array dengan nama $arrBuah yang didefinisikan berisi 4
elemen. Index dari elemen array secara default diawali dengan 0, sehingga
elemen array tersebut dapat diakses dengan index 0, 1, 2 dan 3. Pesan kesalahan
terjadi karena pada baris ke-4, program mengakses elemen dengan index 4, dimana
index array tersebut tidak ada atau belum terbentuk. Jika ingin mengakses
elemen terakhir dari $arrBuah tersebut, maka seharusnya menggunakan index 3.
Pembagian
dengan Nol
Perhitungan matematika di dalam
program seringkali diperlukan, misalnya dalam kaitannya dengan perhitungan
gaji, perhitungan total pemesanan barang, dan sebagainya. Terkait dengan
perhitungan matematis tersebut, kita perlu jeli dalam penerapannya, terutama
jika berkaitan dengan pembagian. Dalam matematika, pembagian dengan bilangan 0
akan menghasilkan nilai yang tidak terdefinisi. Dalam program, pembagian dengan
bilangan 0 akan menyebabkan adanya error “Division by zero”. Berikut ini
contoh sederhananya:
2. $a
= 10;
3. $b
= 0;
4.
5. echo
$a / $b;
6. ?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Warning:
Division by zero in
/home/achmatim/public_html/artikel_demo/error-php/error8.1.php on line 5
Perhatikan program 8.1 di atas.
Nilai variabel $a adalah 10, $b adalah 0. Pada baris ke-5 terdapat perintah
untuk menampilkan hasil pembagian $a / $b, yang berarti 10 / 0. Tentu hal
tersebut akan menyebabkan error seperti terlihat pada contoh di atas.
Memanggil
Fungsi yang Belum Terdefinisi
Setiap fungsi, baik fungsi built-in
maupun fungsi buatan, yang dipanggil dalam program PHP, harus sudah
didefinisikan terlebih dahulu. Fungsi built-in sudah didefinisikan oleh PHP
sehingga tidak perlu didefinisikan lagi, contohnya fungsi strlen(),
addslashes(), explode(), date() dan sebagainya. Sementara itu, fungsi buatan
harus didefinisikan sendiri oleh programmer dan letak pendefinisian fungsi
dapat diakses oleh bagian program yang memanggilnya. Pemanggilan fungsi yang
belum terdefinisi atau kesalahan penulisan nama fungsi saat pemanggilan sering
terjadi sehingga menyebabkan pesan kesalahan.
Pada contoh program berikut ini
terdapat kesalahan penulisan fungsi addslashes() sehingga menyebabkan error “Call
to undefined function”.
2. $str
= "Is your name O'Reilly ?";
3. $str2
= addlashes ($str);
4. $str3
= stripslashes ($str2);
5. echo
"<b>String asli</b> : $str";
6. echo
"<br><b>addslashes()</b> : $str2";
7. echo
"<br><b>stripslashes()</b> : $str3";
8. ?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Fatal
error: Call to undefined function addlashes() in
/home/achmatim/public_html/artikel_demo/error-php/error9.1.php on line 3
Menyertakan
File (Include) yang Tidak Ada
Pada aplikasi berbasis PHP,
menyertakan (include) file sudah biasa dilakukan. Misalnya pada saat program
harus menyertakan library seperti Smarty, FPDF, JPGraph dan sebagainya. Untuk
menyertakan file lain dalam PHP dapat menggunakan fungsi include(), include_once(),
require() atau require_once(). Masing-masing memiliki perbedaan penggunaannya.
Penyertaan file yang tidak benar, baik karena filenya tidak ada, path atau
lokasi file yang salah maupun akses terhadap file tidak diijinkan, dapat
menyebabkan error program. Contohnya pada program 10.1 berikut ini.
2. include
"koneksi.php";
3. echo
"testing";
4. ?>
Jika program di atas dijalankan maka
akan ditampilkan pesan kesalahan sebagai berikut:
Warning:
include(koneksi.php): failed to open stream: No such file or directory in
/home/achmatim/public_html/artikel_demo/error-php/error10.1.php on line 2
Warning: include(): Failed opening 'koneksi.php' for inclusion
(include_path='.:/usr/share/php:/usr/share/pear') in
/home/achmatim/public_html/artikel_demo/error-php/error10.1.php on line 2
File koneksi.php yang
disertakan dalam program 10.1 di atas tidak ada sehingga pesan kesalahan
“failed to open stream” muncul. Dengan demikian, kita harus pastikan bahwa file
yang kita include-kan benar-benar ada dan diakses dengan benar.
Notice: Use of undefined constant
mod – assumed ‘mod’ in /var/www/blogsaya/index.php on line 7
atau seperti ini:
Notice: Undefined index: mod in /var/www/blogsaya/index.php
on line 7
atau seperti ini:
Notice: Undefined variable: mod in
/var/www/blogsaya/index.php on line 8
Ketiganya hanyalah pesan peringatan
(notice), bukan kesalahan (error). Namun nampak tidak elegan jika
pesan seperti itu muncul di halaman website kita. Untuk menyembunyikan pesan
peringatan tersebut cukup dengan menambahkan sebaris kode berikut di bagian
paling awal kode PHP.
error_reporting(E_ALL ^ (E_NOTICE |
E_WARNING));
Kode tersebut hanya akan
menyembunyikan semua pesan peringatan level Notice dan Warning
yang muncul, pesan kesalahan yang lain, misal error, tetap muncul.
Namun tentu saja menyembunyikan pesan
peringatan bukan solusi yang baik. Notice message tersebut muncul karena
penanganan register global di PHP 5.x yang sedikit berbeda dengan PHP 4.x, dan
juga ada variable atau konstanta yang tidak diinisialisasi sebelum digunakan.
Pelanggaran yang umum dalam bahasa pemrograman PHP tetapi penegakan hukumnya
kurang ketat.
Perhatikan contoh berikut:
1
2
3
4
5
6
7
8
|
<form action="" method="post">
<input type="text" name="mod" />
<input type="submit" />
</form>
<?php
echo $_POST[mod];
echo $mod;
|
Kedua pesan pertama muncul karena
penggunaan register global yang kurang tepat, seperti pada contoh di atas pada
baris ke-7, seharusnya ditulis seperti berikut:
7
|
echo $_POST['mod'];
|
Begitu kesalahan pertama diperbaiki,
pesan yang pertama hilang namun yang kedua tidak. Itu terjadi karena variable
global $_POST belum diinisialisasi. Jadi kode baris ke-7 seharusnya seperti
berikut:
7
8
|
if (isset($_POST['mod']))
echo $_POST['mod'];
|
Lalu yang terakhir mudah saja kita
selesaikan, tinggal kita inisialisasi saja variable $mod dengan string kosong
seperti berikut:
9
10
|
$mod = '';
echo $mod;
|
Atau saya lebih suka menggunakan
operator ternary (bukan operator tersier) seperti berikut:
7
|
$mod = isset($_POST['mod']) ?
$_POST['mod'] : '';
|
Dengan menggunakan operator ternary
ini lebih saya sukai karena bisa sekaligus menyelesaikan ketiga permasalahan di
atas. Operator ternary adalah operator yang memiliki tiga buah argumen atau
operasi matematika, yang dipisahkan dengan tanda “?:”. Pernyataan di atas
berarti: jika variable global $_POST['mod'] ada isinya, maka $_POST['mod']
akan disalin ke $mod , jika tidak maka $mod akan berisi string kosong.
ConversionConversion EmoticonEmoticon