Mengatasi Masalah Undefined Index di PHP 5

Bagi yang beralih dari PHP 4.x ke PHP 5.x mungkin pernah menjumpai peringatan seperti ini:
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:
<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:
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:
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:
$mod = ''; echo $mod;
Atau saya lebih suka menggunakan operator ternary (bukan operator tersier) seperti berikut:
$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.
Tulisan ini adalah kategori baru yang ingin saya catat di blog, yaitu tentang troubleshooting (penyelesaian masalah) dalam pemrograman. Troubleshooting adalah salah satu aspek paling penting dalam mempelajari bahasa pemrograman apapun.


Nice share gan….
Makasih Infox
Informasi yang sangat menarik, hal ini saya jumpai… saat saya membackup website online ke offline dengan menggunakan xampp…. semula saya pikir ada kesalahan…. Weww ternyata setelah membaca artikel ini jadi mengerti… Trimks sudah share.. semoga bermanfaat…
thanks info nya .. sangat membantu …
Pingback: Menyingkat Kode PHP menggunakan Operator Ternary | Sibudi </>
wah, makasih gan, jadi solved masalah
thanks gan…problem solved
ok gan thanks codink na sakti juga 3 hari gw cari solusina masuk ke blog ini baru jitu thank banget
gan ane mo nanyak nie klo kita pke radio button mis : jurusan kita cek lis . trus kita kirim kok hasil na jadi jurusan on gimana thu solusina gan?
Maaf, kurang jelas pertanyaannya.
Sama seperti input text, radio button juga memakai atribut name untuk menyimpan value-nya.
Terima kasih banyak atas artikelnya, sangat bermanfaat!
ty share nya nambah pengetahuan buat saya yang lagi belajar php otodidak….
Pingback: Akses Database Menggunakan PDO pada PHP | Sibudi </>
bang, itu kan kalo echo, kalo kita mau insert ke database kan di table nya jadi nambah string kosong di tiap barisnya pas kita refresh. itu gimana ya bang ya? thanks sebelumnya
thanx om budi
akhirnya hasil dari saya berpikir sendiri php yang error undefined itu semakin diperjelas..
sebenarnya php itu tidak lah sesulit yang dipikirkan, asal kita bisa menalar semuanya, walaupun beljar php scra otodidak seperti saya:
seprti halnya diatas adala : undefined Variable bla bla bla : berarti Variable yang diesbutkan tidak didefiniskan atau salah pendifinisannya.
biasanya adalah memanggil Variable tambahan atau fungsi seperti :
$arg = $var -> post_content;
dan seharusnya $var diatas sudah dijelaskan
nilainya sebelumnya, apabila di Code sebelumnya memang tidak tertulis tapi scipt berjalan dengan baik , maka bisa ditulis :
$var = ‘ ‘; //fungsi adalah noll / kosong
$arg = $var -> post_content;
atau var bisa dengan nilai NULL yaitu NULL adalah Kosong / Tidak punya nilai
makasih ya om
Wah sangat bermanfaat sekali, saya langsung praktekkan dan eng ing eng notice undefined index bla bla bla jd ilang…tp ada satu permasalahan lagi yg blm selesai dan saya mohon pencerahannya karena sy org awam yg ingin belajara PHP, masih ada muncul:
Deprecated: Function session_is_registered() is deprecated in C:\xampp\htdocs\penjualan2\admin\ubah_pass.php on line 3
kalo ada hal seperti itu kira2 saya harus bagaimana ya gan? mohon pencerahan penyelesaiannya.. terima kasih atas perhatian dan bantuannya
Itu artinya fungsi
session_is_registered()sudah akan ditinggalkan oleh PHP dan sebaiknya segera diganti dengan fungsi lain yg sejenis.Ganti dengan
$_SESSION['nama_variable'], dan gunakanisset()untuk memeriksa apakah suatu variable sudah terdaftar ke dalam session.Contoh:
if ( isset( $_SESSION['nama_variable'] ) )membantu kali ne artikelnya, kebetulan lagi upgrade wamp server
, makasih tutonya
Bang, thank’s beraaaat….
mantap gan sangat membantu ane ne..
sekalian nitip blog hehe : ronifisla.blogspot.com
dapursn.blogspot.com
saya memakai script
tapi ga muncul, dulu muncul undefined tapi setelah menambah error_reporting(E_ALL ^ (E_NOTICE | E_WARNING)); udah ga muncul akan tetapi data jadi ga muncul
akan tetpi script diatasnya
bisa memunculkan datanya, kira 2 gimananya ya solusinya
ini script yang pertama
$perintah = “SELECT * FROM setting WHERE id=’1′”;
$dadi = mysql_query($perintah);
$baris = mysql_fetch_array($dadi);
echo $baris['instansi'];
dan ini script yang berhasil
$query = “SELECT * FROM admin WHERE username=’”.$username.”‘ AND password=’”.$password.”‘”;
$hasil = mysql_query($query);
$row=mysql_fetch_array($hasil);
echo $row['username'];
Seperti yang sudah saya bilang di atas, menyembunyikan pesan kesalahan tidak akan menyelesaikan masalah
Solusinya adalah pahami dengan baik dan selesaikan masalah satu persatu. Good luck
gan kalo cara menyimpan form dengan metode one to many sperti apa ya codingnya..
mohn pencerahannya…
mungkin bisa dijelaskan metode one to many itu seperti apa, karena saya baru dengar itu
Behh… jitu… langsung berhasilll… mkasih gan ilmunya!
terima kasih om….
sangat membantu solve problemnya…..
bang klw bgini pesan bagimana
Notice: Use of undefined constant username – assumed ‘username’ in C:\xampp\htdocs\griya\griyagaya\adminweb\cek_login.php on line 9
Notice: Use of undefined constant password – assumed ‘password’ in C:\xampp\htdocs\griya\griyagaya\adminweb\cek_login.php on line 10
Fatal error: Call to undefined function session_register() in C:\xampp\htdocs\griya\griyagaya\adminweb\cek_login.php on line 19
Seperti yang sudah pernah saya jawab di atas, sebaiknya tidak lagi menggunakan fungsi
session_register()karena sudah mulai ditinggalkan.mau tanya
kalo skrip seperti ini bisa masuk ke database ga??
thanks
gan, kalau ad di Artikel terkait ada tulisan Undefined gimana itu?
Makasih mas dab artikelnya sangat membantu, urusan jadi kelar deh hehehhe
Makasih banyak mas, akhirnya problemnya solved juga