Dalam membuat website dengan php pernahkah mendapat masalah dalam memasukkan data secara massal dalam database atau multiple insert hanya dengan sekali klik? tenang Onphpid akan berbagai tutorial untuk menyelesaikan masalah ini dengan php.
Memasukkan data massal atau multiple insert ini sering saya jumpai ketika saya ingin memasukkan data “kategori” sebuah posting, kuesioner, soal pilihan ganda dan data-data lain yang menuntut kita untuk mengeksekusi semua data tersebut hanya dengan satu kali klik tombol submit.
Pada kesempatan kali ini onphpid akan membahas bagaimana membuat fasilitas multiple insert dengan php, sebagai permulaan silahkan lihat perintah insert SQL berikut :
a. Perintah insert tunggal
1 |
INSERT INTO table (kolomA,kolomB,kolomC) VALUES (valueA,valueB,valueC) |
b. Perintah multiple insert
1 2 3 4 5 6 |
INSERT INTO table (kolomA,kolomB,kolomC) VALUES (valueA1,valueB1,valueC1), (valueA2,valueB2,valueC2), (valueA3,valueB3,valueC3), .... |
Dari perintah di atas kita akan menggunakan opsi b untuk menangani multiple insert dengan php. silahkan ikuti step by step berikut ini
Tutorial multiple insert dengan php ini menggunakan :
– xampp versi 5.6.3
– PHP 5+
– Windows 7
1. Buatlah sebuah folder di htdocs dengan nama “insert”
2. Buatlah file-file berikut :
– config.php
– insert.php
– form-insert.php
3. Buatlah database dengan nama “multiple_insert”
4. Buatlah fields seperti berikut :
– id (INT) Auto Increment Primary Key
– nama (VARCHAR 100)
– email (VARCHAR 100)
Isikan kode berikut
config.php
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $dbhost = 'localhost'; $dbuser = 'root'; $dbpass = ''; $dbname = 'insert'; $koneksi = new mysqli($dbhost,$dbuser,$dbpass,$dbname); # check koneksi if( $koneksi->connect_error ) { die('Oops!! koneksi Gagal : '. $koneksi->connect_error ); } |
form-insert.php
1 2 3 4 5 6 7 8 9 10 |
<form action="insert.php" method="post"> a. nama <input type="text" name='nama[]' /> | email <input type="text" name='email[]' /> <br/> b. nama <input type="text" name='nama[]' /> | email <input type="text" name='email[]' /> <br/> c. nama <input type="text" name='nama[]' /> | email <input type="text" name='email[]' /> <br/> d. nama <input type="text" name='nama[]' /> | email <input type="text" name='email[]' /> <br/> e. nama <input type="text" name='nama[]' /> | email <input type="text" name='email[]' /> <br/> f. nama <input type="text" name='nama[]' /> | email <input type="text" name='email[]' /> <br/> g. nama <input type="text" name='nama[]' /> | email <input type="text" name='email[]' /> <br/> <button>Simpan</button> </form> |
baca juga : Struktur direktori | Folder Website
insert.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php require( 'config.php' ); if( !isset( $_POST['nama'] ) ) { header('location:form-insert.php'); exit(); } $nama = $_POST['nama']; $email = $_POST['email']; $count = count($nama); $sql = "INSERT INTO multiple_insert (nama,email) VALUES "; for( $i=0; $i < $count; $i++ ) { $sql .= "('{$nama[$i]}','{$email[$i]}')"; $sql .= ","; } $sql = rtrim($sql,","); $insert = $koneksi->query($sql); if( !$insert ) { echo "gagal insert : ".$koneksi->error; }else{ echo "sukses, silahkan check database anda"; } ?> |
PENJELASAN
pada nama[] kita dapat melihat “[]”, tanda tersebut merupakan tambahan pada kolom input yang harus ditambahkan ketika melakukan multiple insert. sehingga data yang dikirim berubah menjadi array pada saat ditangkap dengan $_POST ( karena method pada form adalah post ).
.= ( titik samadengan ) merupakan opertor php untuk menggabungkan dengan string dari variabel sebelumnya (dengan catatan $variabel harus sama).
rtrim(); merupakan fungsi php untuk menghapus karakter sebelah kanan, ( default menghapus spasi) jika rtrim($var,’nilai’); maka kata ‘nilai’ di sebelah kanan akan dihapus.