Mengatasi Masalah Undefined Index di PHP 5

undefined index
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.

Comments

95 responses to “Mengatasi Masalah Undefined Index di PHP 5”

  1. ikhwan Avatar
  2. Stokis Propolis Avatar

    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…

  3. maryanto Avatar

    thanks info nya .. sangat membantu …

  4. […] dapat disederhanakan menggunakan operator ternary. Contoh operator ternary bisa dijumpai pada artikel ini, ini, dan ini. Operator ternary memiliki bentuk dasar sebagai berikut: (pernyataan1) ? […]

  5. Mas Arie Avatar

    wah, makasih gan, jadi solved masalah 🙂

  6. ran Avatar
    ran

    thanks gan…problem solved

  7. rado Avatar

    ok gan thanks codink na sakti juga 3 hari gw cari solusina masuk ke blog ini baru jitu thank banget

  8. rado Avatar

    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?

    1. Sibudi Avatar

      Maaf, kurang jelas pertanyaannya.
      Sama seperti input text, radio button juga memakai atribut name untuk menyimpan value-nya.

  9. Yudi Widiawan Avatar

    Terima kasih banyak atas artikelnya, sangat bermanfaat!

  10. Fahrul Avatar
    Fahrul

    ty share nya nambah pengetahuan buat saya yang lagi belajar php otodidak….

  11. […] kode di atas dapat berjalan dengan baik, namun Anda akan mendapat pesan peringatan (notice): Only variables should be passed by reference bla.. […]

  12. lutfi Avatar
    lutfi

    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

  13. awan Avatar

    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

  14. Andri Avatar
    Andri

    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

    1. Sibudi Avatar

      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 gunakan isset() untuk memeriksa apakah suatu variable sudah terdaftar ke dalam session.

      Contoh: if ( isset( $_SESSION['nama_variable'] ) )

  15. masfran Avatar

    membantu kali ne artikelnya, kebetulan lagi upgrade wamp server :D, makasih tutonya

  16. soni Avatar

    Bang, thank’s beraaaat….

  17. roni Avatar

    mantap gan sangat membantu ane ne..

    sekalian nitip blog hehe : ronifisla.blogspot.com

    dapursn.blogspot.com

  18. Sodikin Avatar

    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

    1. Sodikin Avatar

      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’];

    2. Sibudi Avatar

      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 🙂

  19. daniel Avatar
    daniel

    gan kalo cara menyimpan form dengan metode one to many sperti apa ya codingnya..
    mohn pencerahannya…

    1. Sibudi Avatar

      mungkin bisa dijelaskan metode one to many itu seperti apa, karena saya baru dengar itu

  20. Musa Bil Avatar
    Musa Bil

    Behh… jitu… langsung berhasilll… mkasih gan ilmunya!

  21. ozzy Avatar

    terima kasih om….
    sangat membantu solve problemnya…..

  22. illank Avatar
    illank

    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

    1. Sibudi Avatar

      Seperti yang sudah pernah saya jawab di atas, sebaiknya tidak lagi menggunakan fungsi session_register() karena sudah mulai ditinggalkan.

      1. Mira Avatar

        Sy mau tnya..nie sy lgi mau ngecek bpjs kesehatan punya sy dan sy hnya menggunakan KK aj..di saat sy cek bpjs sy melalui call center stelah sy cek status kartu sy blz annya anda trdaftar sbagai undefinden dengan status kartu undefinden..maksud ny gmna…undefinden bpjs itu apa arti nya.

  23. reinhard Avatar

    kalo skrip seperti ini bisa masuk ke database ga??

  24. hairul Avatar

    gan, kalau ad di Artikel terkait ada tulisan Undefined gimana itu?

  25. pw Avatar

    Makasih mas dab artikelnya sangat membantu, urusan jadi kelar deh hehehhe

  26. Anwar Avatar
    Anwar

    Makasih banyak mas, akhirnya problemnya solved juga 😀

  27. Joshua Tan Avatar

    Terimakasih buat infonya. Sangat membantu!

  28. afrioni Avatar

    makasih mas,, akhirnya hilang sudah kebuntuan selama ini,, di tunggu post berikutnya

  29. […] sumber : http://blog.sibudi.net/mengatasi-masalah-undefined-index-di-php-5/ […]

  30. Devid Avatar
    Devid

    punten mas, saya ada sedikit masalah nih dari tampilan muncul perintah seperti ini:

    Notice: Undefined index: name in C:\xampp\htdocs\hotel\admin\index.php on line 25

    Parse error: syntax error, unexpected ‘}’ in C:\xampp\htdocs\hotel\admin\order\index.php on line 135

    Warning: include(laporan/index.php): failed to open stream: No such file or directory in C:\xampp\htdocs\hotel\admin\index.php on line 31

    Warning: include(): Failed opening ‘laporan/index.php’ for inclusion (include_path=’.;C:\xampp\php\PEAR’) in C:\xampp\htdocs\hotel\admin\index.php on line

    Mohon pencerahan penyelesaiannya..
    sebelumnya terima kasih atas perhatian dan bantuannya

  31. pahmi Avatar

    Makasih Infonya gan…sangat membantu,, sukses trs buat agan..
    salam kenal

  32. adien Avatar

    gara-gara pakai xampp baru akhirnya nyampai kesini 😀
    nais pos gan, nanti bersih2 kode yang notice

  33. nafsun Avatar

    terimakasih mas artikelnya. soalnya artikel ini yang saya cari.

  34. irfan Avatar
    irfan

    makasih banyak mas . . . sangat membantu !

  35. Wisnu Cahyono Avatar
    Wisnu Cahyono

    Trima ksh. sangat membantu.

  36. Ferdian Angga Avatar
    Ferdian Angga

    GILAKK nice info gan..
    Sangat membantu, TerimaKasih sangat :*

  37. angga Avatar
    angga

    best tutorial

    save my day

    Thx a lot

  38. Kaylee Avatar

    I read a lot of interesting content here.
    Probably you spend a lot of time writing, i know how to save you a lot of time, there is an online tool that creates unique, google friendly articles in seconds,
    just search in google – laranitas free content source

  39. Google Avatar

    * A sitemap to navigate your website is helpful for visitors to access main pages.
    Based on their experience, they could know how much is required before going into details.

    * Page SEO: Your page is optimized by various means which include, choosing
    the right keywords, placing them right, adding anchor text linking, adding
    call to action in various places on the page.

  40. rian Avatar
    rian

    Terimakasih admin membantu sekali 🙂

  41. leman Avatar
    leman

    mantap, sangat membantu,

    Terima kasih

  42. suaebatul Avatar
    suaebatul

    bermanfaat…. 😀

  43. supplier kalung korea murah Avatar

    Quality content is the important to attract the visitors to pay a quick visit the site, that’s
    what this web site is providing.

  44. Monggo Ngaji Avatar

    makasi sangat kang , ane dulu udah pake isset jadi kalau variable gk keisi program gk jalan , tapi gk kepikiran kalo yang di isset langsung variablenya bukan aksinya

  45. tempat kursus website, seo, desain grafis favorit 2015 di jakarta Avatar

    terima kasih telah berbagi Mas, senang sekali rasanya membaca tulisan2 di blog ini, jadi tambah wawasan.. semoga selalu di beri kesehatan dan sukses selalu..

  46. zain Avatar
    zain

    makasih banyak gan..mbantu banget pas lagi urgent

  47. maximus Avatar

    makaxi info kawan

  48. apip Avatar
    apip

    Problem solved.. makasi banyak..

  49. ogi Avatar
    ogi

    trimakasih boss infonya. sangat membantu sekali… barusan masalah saya terpecahkan GBU

  50. Panda28 Avatar

    untuk penggunaan $_post menggunakan isset tapi kalo penggunaan $_get gmn mas ?
    kalo cmn nutupi pesan eror bsa jadi vuln web

  51. vrachejmip Avatar

    На представленном вебсайте составлены мнения врачей и фармацевтов о всевозможных лечебных препаратах, особенностях их употребления, взаимозаменяемости, потенциальных побочных эффектах, редких осложнениях, не указанных в инструкции. Эта информация будет существенным подспорьем для практикующих врачей, фармацевтов, студентов медицинских вузов. Пациенты сумеют найти здесь интересующие их данные о препаратах, использующихся для лечения болезней, однако, стоит учесть, что самолечение может привести к непоправимым последствиям, потому перед использованием того или иного средства необходимо проконсультироваться с врачом.

    Комплекс для похудения chokolate slim

  52. Titi Avatar
    Titi

    potingan nya bagus mas, namun saya mendapatkan notice yang berbeda. penampakannya seperti dibawah ini:
    Notice: Undefined index: input1 in C:\xampp\htdocs\kalkulatorphp\index.php on line 72

    mohon solusinya…

  53. Wpancoro Avatar

    Luar Biasa
    thanks Gan 🙂

  54. Milda Avatar
    Milda

    kalo keluar ginian?
    Fatal error: Call to undefined function session_unregister() in C:\xampp\htdocs\buatweb\sessunreg.php on line 6
    gimana ngatasinya?

  55. fendi Avatar
    fendi

    masih bingung

  56. Rencontre infidele Avatar

    Hi, just wanted to mention, I loved thhis article.

    It was helpful. Keep on posting!

  57. Miftahurrohmah Avatar
    Miftahurrohmah

    HI, I wanted to ask you how to solve the problem if the message “Parse error: syntax error, unexpected ‘}’ in C: \ xampp \ htdocs \ a \ selamat.php on line 30”

    please completion

  58. rencontre musulman inchallah.com Avatar

    Aw, this was an extremely goood post. Finding the time and actual effort tto make a good article…
    but what can I say… I hesitate a whole lot and don’t
    manage to get nearly anything done.

  59. Rencontre infidele Avatar

    Thank you a bunch for sharing this with all folks you really realize what you’re speaking about!
    Bookmarked. Please additionally discuss with my web ssite =).
    We could have a hyperlink alternate contract among us

  60. wais Avatar
    wais

    gan saya erro bagian ini

    lalu peringatan ny seperti ini
    Notice: Undefined index: p in C:\xampp\htdocs\hotelfija\index.php on line 10
    ada solusi ndak gan

  61. Hasan Avatar

    Thank’s bro . sangat bermanfaat

  62. Muhammad Wali Avatar

    Makasih banyak ilmunya..

  63. madu bima 99 Avatar

    terus solusinya gimana gan? apakah hanya menambahkan ini saja

    error_reporting(E_ALL ^ (E_NOTICE | E_WARNING));

    atau ada solusi untuk menghilangkan penyebab warning itu?

    mohon pencerahan gan…

  64. Andi Saputra Siahaan Avatar

    Itu namanya curang gan, bukan solusi, hehe

  65. balqis Avatar
    balqis

    makasih infonya, bermanfaat sekaliiiiiiiii

  66. candra Avatar

    error undefined foto nya kalo di laravel gimana mas

  67. astrid Avatar
    astrid

    gan, kalau sudah di deklarasikan masih muncul Notice: Undefined index: id_mahasiswa in C:\xampp\htdocs\CRUD-Sederhana-\index.php on line 6. sudah saya cek di bagian indexnya. dan bagian functionnya. tapi masih muncul notice mulu. pada atribbutn name juga sudah pas. nah id_mahasiswa ini merupakan primary key. yg menggunakan Auto Increment gan. solusinya gimana ya gan?
    terima kasih

  68. Nanda radita Avatar

    makasih mas infonya sangat membantu?
    Lengkap…

  69. framadani Avatar
    framadani

    makasi bgt gan sangat membantu program ku jalan kembali

  70. Dewi maliana Avatar

    Nice gan , terimakasih untuk infonya

  71. Arieriyan Avatar
    Arieriyan

    terima kasih infonya gan Sangat membantu bagi saya yg pemula dalam membuat program php

  72. zaqiah Avatar
    zaqiah

    mau bertanya perihal eror seperti ini

    A PHP Error was encountered
    Severity: Notice

    Message: Undefined index: G

    Filename: controllers/Siswas.php

    Line Number: 77

    Backtrace:

    File: /home/u6026974/public_html/application/controllers/Siswas.php
    Line: 77
    Function: _error_handler

    File: /home/u6026974/public_html/index.php
    Line: 315
    Function: require_once

    itu kenpa ya? mhon bantuannya

  73. Emmalee Wood Avatar

    Great mix of research and practical application. Very helpful.

  74. XRumer23frats Avatar
    XRumer23frats

    Hello.

    This post was created with XRumer 23 StrongAI.

    Good luck 🙂

  75. asansör perdesi Avatar

    Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.

Leave a Reply to Devid Cancel reply

Your email address will not be published. Required fields are marked *