Senin, 14 Februari 2011

Input Data Ke MySQL Secara Simultan Via Form dengan PHP

Pertama kita siapkan dahulu tabel database MySQL nya. Pada studi kasus ini, kita buat simpel saja deh (cukup 2 field saja dulu)
CREATE TABLE mhs (
  nim varchar(5),
  namamhs varchar(20),
  PRIMARY KEY (nim)
);
Kemudian kita buat form untuk memasukkan jumlah datanya terlebih dahulu.
form.html
<h1>Input Data Mahasiswa</h1>

<form method="post" action="submit.php">
Jumlah Data <input type="text" name="jum"> <input type="submit" name="submit" value="Submit">
</form>
submit.php
<h1>Input Data Mahasiswa</h1>

<form method="post" action="insert.php">
<table border="1">
<tr><td>NIM</td><td>NAMA MHS</td></tr>

<?php
$n = $_POST['jum']; // membaca jumlah data

for ($i=1; $i<=$n; $i++)
{
  echo "<tr><td><input type='text' name='nim".$i."'></td><td><input type='text' name='nama".$i."'></td></tr>";
}
?>

</table>
<br>
<input type="hidden" name="jum" value="<?php echo $n; ?>">
<input type="submit" name="submit" value="Submit">
</form>
Bila Anda perhatikan script di atas, maka nama komponen untuk input NIM berbentuk
<input type='text' name='nim".$i."'>
yang mana nantinya looping ($i=1, 2, 3, …, $n) akan membentuk komponen-komponen dengan nama
<input type='text' name='nim1'>
<input type='text' name='nim2'>
<input type='text' name='nim3'>
.
.
dst
Nah… hal yang sama kita buat juga untuk komponen input nama mahasiswa.
Kemudian, coba perhatikan pula bahwa di bagian akhir script terdapat perintah
<input type="hidden" name="jum" value="<?php echo $n; ?>">
Perintah tersebut akan menghasilkan komponen hidden untuk menyimpan nilai $n (banyaknya data). Nilai ini nanti akan ikut disubmit ke script berikutnya guna pemrosesan lebih lanjut.
Terakhir.. kita buat script untuk insert datanya. Untuk membuat script insert data secara simultan ini, mungkin yang menjadi kendala adalah bagaimana cara membaca semua data yang telah diinputkan dalam form sebelumnya untuk kemudian disimpan ke dalam database. Adapun konsep pembacaan datanya adalah dengan menggunakan looping juga. Looping ini dilakukan sebanyak jumlah datanya ($n). Oleh karena itulah pada script ini kita butuh nilai $n yang ikut tersubmit dari script sebelumnya.
insert.php
<?php

// koneksi ke mysql
mysql_connect("dbhost", "dbuser", "dbpass");
mysql_select_db("dbname");

$n = $_POST['jum']; // membaca jumlah data

// looping
for ($i=1; $i<=$n; $i++)
{
    $datanim = $_POST['nim'.$i];
    $datanama = $_POST['nama'.$i];

    if ((!empty($datanim)) && (!empty($datanama)))
    {
       $query = "INSERT INTO mhs (nim, namamhs) VALUES ('$datanim', '$datanama')";
       $hasil = mysql_query($query);

       if ($hasil) echo "Input data sukses<br>";
       else echo "Input data gagal<br>";
    }
}

?>
Perhatikan perintah $datanim = $_POST['nim'.$i]; yang terdapat dalam looping di atas. Perintah tersebut digunakan untuk membaca value yang diinputkan dari komponen form bernama ‘nim1‘, ‘nim2‘, … dst. Hal yang sama juga berlaku untuk perintah $datanama = $_POST['nama'.$i];. Setelah value NIM dan Nama Mhs dari komponen pertama (‘nim1‘ dan ‘nama1‘) dibaca, selanjutnya baru disimpan ke database. Kemudian pembacaan dan insert data ke database dilanjutkan pada komponen kedua (‘nim2‘ dan ‘nama2‘), begitu seterusnya sampai dengan komponen terakhir.
Oya.. tambahan lagi, dalam script di atas juga terdapat statement
if ((!empty($datanim)) && (!empty($datanama)))
{
   ...
}

Tidak ada komentar:

Posting Komentar