Last Updated on 12 years by Mas Herdi
Jadi, yah ini gara-gara tugas saya akhirnya posting pertanyaan ke StackOverflow. Saya sebenarnya newbie di PHP karena selama ini lebih fokus ke bahasa yang lain, seperti Java. Tapi bagi saya PHP adalah bahasa yang cocok ketika kita hanya ingin membuat sesuatu yang seadanya (to get jobs done).
Oke, intinya saya ingin membuat suatu array multidimensi yang mempunya format seperti di bawah ini. Sedangkan hasilnya saya ambil dari database MySQL melalui select query. Semalaman saya mencobanya, dari sekitar jam 9 malam sampai jam 1 malam. Karena stuck dan gak ngerti PHP (maklum newbie) akhirnya saya memutuskan untuk tanya di StackOverflow (asumsi nggak punya teman yang ngerti PHP, kalau punya, mau tanya udah kemaleman juga).
Format array-nya adalah sebagai berikut :
$books = array( "8" => array( "my girl" => 2.5, "the god delusion" => 3.5, "tweak" => 3, "the shack" => 4, "the birds in my life" => 2.5, "new moon" => 3.5), "14" => array( "the last lecture" => 2.5, "the god delusion" => 3.5, "the noble wilds" => 3, "the shack" => 3.5, "the birds in my life" => 2.5, "new moon" => 1) );
Sedangkan data yang ada di database punya format seperti ini :
ID value title ------------------------------------------------------------------ 8 5 Clara Callan 8 5 Where You'll Find Me: And Other Stories 8 5 The Middle Stories 8 5 Jane Doe 8 6 The Witchfinder (Amos Walker Mystery Series) 8 6 More Cunning Than Man: A Social History of Rats an... 8 7 Goodbye to the Buttermilk Sky 9 6 Beloved (Plume Contemporary Fiction) 12 10 If I'd Known Then What I Know Now: Why Not Learn f... 14 5 Mary-Kate & Ashley Switching Goals (Mary-Kate ... 14 5 Tell Me This Isn't Happening 14 6 Flood : Mississippi 1927 16 9 Airframe 17 7 Death in the Clouds 17 5 Bant/Spec.Last of the Breed 17 6 Piercing the Darkness 17 3 Prophet 19 7 Prague : A Novel
Jawaban
Setelah menunggu sekitaran 3 jam (tidur dulu pastinya), pukul 4 pagi saya cek ternyata sudah ada tiga jawaban. Entah karena masih ngantuk atau gimana, waktu itu saya coba semua saran yang diusulkan tapi nggak ada yang berhasil. Akhirnya saya utak-atik lagi sendiri, dan akhirnya bisa.
Solusinya adalah sebagai berikut :
$result = mysql_query($mySelectQuery)or die("<br/><br/>".mysql_error()); $books = array(); while ($row = mysql_fetch_array($result)) { $userID = $row{'User-ID'}; $books[$userID][$row{'Book-Title'}] = $row{'Book-Rating'}; }
Namun anehnya ketika sorenya saya cek lagi, ternyata ada jawaban yang caranya persis seperti cara saya, padahal waktu pagi hari saya cek jawaban belum ada yang benar. haha
Jadi penjelasan dari solusinya, karena itu array multidimensi maka kita juga harus membuat dua buah indeks ‘[][]’. Kalau saya baca-baca dari tutorial yang lain ada juga yang pakai foreach() dan sebagainya, menandakan banyak sekali terjadi redundancy di PHP. Saya sendiri nggak ngerti darimana method, misalnya mysql_fetch_array() berasal. Karena bukan object-oriented, jadi mungkin yang mau belajar akan kesulitan mengingat semua method, karena tidak ada referensi class tempat asal method tersebut. Yah tapi seenggaknya seperti yang saya katakan di atas, PHP cocok untuk kita yang hanya ingin get things done. Semoga membantu.
mas saya mau tanya dong, cara membuat format database seperti itu gimana ya? (kaya gambar database studi kasus diatas) saya mau buat itu untuk pertanyaan survey, mohon bantuannya. Terima kasih sblmnya 🙂
Bikin saja pakai SQL syntax, tau kan caranya ? 😉