Update Multi Value Sekali Klik pada MySQL dengan PHP Foreach

Ketika kita membuat sebuah aplikasi terkadang akan menemui kementokan alias stak! alias kesulitan karena tiap kasus yang kita buat pada tiap aplikasi berbeda-beda untuk itu kita membutuhkan secangkir kopi kapal api, segelas susu coklat nikmat atau teh manis hangat juga boleh, supaya otak ngalir lancar n pure! Hehe. Oke baiklah langsung saja kawan..

Contoh kasus stak! misalnya saja pada kasus aplikasi terbaru saya yaitu "Progress Report with PHP+MySQL". Saya menemui sedikit kesulitan dalam mengupdate data nilai UAS siswa satu kelas dalam satu kali klik button submit maka data akan masuk ke tabel nilai di database MySQL.

Pada form tradisional seperti misalnya form login facebook, hanya beberapa variabel yang dikirmkan menggunakan method $_POST diantaranya email dan password kita, sedangkan pada kasus di atas kita harus menginput data siswa satu kelas sekaligus seluruh siswa dalam satu kali klik demi kenyamanan user. Lihat contoh form di bawah ini, satu kelas terdiri dari 34 anak dan kesemua sata nilai UASnya harus terkirim dengan satu klik tombol OK!



Nah, bagaimana kita menupdate multiple value yang value itu sendiri berasal dari database? Jawabannya adalah kita mengirimkan value dalam mode Array menggunakan method $_POST dan kita terima dengan menggunakan perulangan Foreach. Mari kita praktek langsung!

/** Perhatikan di sini! Input Valuenya berasal dari database, sedangkan nameny adalah variabel nilai yang diberi array nim siswa jadi seperti ini misalnya 'nilai[11009928]' **/
<input size="4" type="text" value="<?php echo $row_nilai['NILAI']; ?>" name="nilai[<?php echo $row_nilai['NIM']; ?>]"/>

Nah script PHP di atas seperti telah dijelaskan sebelumnya, berisi input text yang berfungsi mengirimkan value di dalam variabel array. Selanjutnya data yang dikirimkan akan masuk ke dalam file update-nilai.php seperti di bawah ini:

    //koneksi ke database
    include "konek.db.php";


    //tangkap data nilai array dari form nilai
    $kdmutpel = $_GET['kdmutpel'];
    $nilai = $_POST[nilai];


    //foreach
    foreach ($nilai as $nilai_key => $nilai_value) {
    $query_nilai = "UPDATE `nilai` SET `NILAI` =  '$nilai_value'
    WHERE `NIM` = '$nilai_key' AND `KDMUTASI_PEL` = '$kdmutpel' LIMIT 1 ;";
    $result_nilai = mysql_query($query_nilai);
    }
    if (!$result_nilai) {
        die ('cant update hafalan:' .mysql_error());
    }


Lihat script tangkap data nilai array di atas, sama seperti script $_POST standar saja, perbedaannya terletak pada script foreach di bawahnya. Perhatikan! ada 3 variabel $nilai, $nilai_key dan $nilai_value dilanjutkan di bawahnya terdapat query update sesuai dengan kebutuhan.

Variable $nilai : berisi value kiriman dari form UAS sebelumnya
Variabel $nilai_key : array nimnya,
Variabel $nilai_value : hasil konfersi $nilai dan $nilai_key, variabel ini lah yang dimasukkan ke database.


Nah sampai disini cukup. Jika ada error dalam aplikasi yang anda buat, bisa komen di sini atau kirim message ke Facebook, Email : ali@eksplore.com, atau follow twitter eksplore, Selamat belajar PHP! :)

5 comments:

dzaki naila mengatakan...

bro ada script lengkap nya?

dzaki naila mengatakan...

bro bs share script lengkap nya masih bingung nih

akhmad fauzan mengatakan...

coba dulu gan, makasih sbeelumya

Muhlis mengatakan...

bro minta tolong penjelasannya, misalkan gini:

satu dokumen berisi 10 item dengan jumlah (stok) berbeda2. Nah kita mau hapus dokumen tersebut, berarti kita harus update value setiap item tersebut atau dalam kasus sy mengembalikan stok per item sesuai jumlah pada dokumen tersebut. Nah gimana ya caranya atau querynya?

terima kasih sebelumnya

wong_udik mengatakan...

Jika kasus bro @Muhlis agaknya berbeda karena pada artikel ini lebih ditekankan "Update" bukan "Hapus".

Tapi kalo berkaitan dengan stok seharusnya Update bukan Delete dan kasusnya akan sama dengan tutrial saya di atas. Intinya pada tag input "namenya" sama, tapi dengan id yg berbeda contoh : input name=dokumen['112']


Keterangan :
dokumen = variable
112 = array id