Postingan lainnya
Multipe Insert Data
Asalamualikum Semua...
kali ini saya akan melakukan insert multipe dengan menggunakan multipe select akan tetapi ada kendala di saat melakukan hal tersebut dimana
jika saya melakukan select barang hanya satu barang akan muncul error seperti berikut "Cannot add or update a child row: a foreign key constraint fails (`_2login`.`tb_pinjamkbm`, CONSTRAINT `tb_pinjamkbm_ibfk_2` FOREIGN KEY (`id_jadwal`) REFERENCES `tb_jadwal` (`id_jadwal`)) "
Namun Jika Barang Yang Di input dua barang maka yang akan masuk 3 barang
berikut struktu tabel yang saya miliki tabel pkbm "id_pkbm (Primary),id (FK),id_siswa (FK),id_jadwal (FK),tgl_pinjam,tgl_kembali,bts_pinjam,pinjam_status"
tabel jadwal "id_jadwal (Primary),hari ,jam,jam_mulai,jam_selesai,kd_mapel (FK),kd_guru (FK),id_kelas (FK)"
Berikut Script Nya
// Form Input
<form action="" method="POST" autocomplete="off">
<div class="row">
<div class="form-group col-4">
<label for="id_siswa">Nama Siswa</label>
<select name="id_siswa" id="id_siswa" class="form-control" required>
<option value="" hidden>Pilih Siswa</option>
<?php
$siswa = $conn->query("SELECT * FROM tb_siswa");
while ($as = $siswa->fetch_array()) : ?>
<option value="<?= $as['id_siswa']; ?>">
<?= $as['siswa']; ?>
</option>
<?php endwhile; ?>
</select>
</div>
<div class="form-group col-4">
<label for="id_jadwal">Kelas</label>
<select name="id_jadwal" id="id_jadwal" class="form-control" required>
<option value="" hidden>Pilih Kelas</option>
<?php
$kelas = $conn->query("SELECT * FROM tb_jadwal INNER JOIN tb_kelas ON tb_jadwal.id_kelas = tb_kelas.id_kelas");
while ($as = $kelas->fetch_array()) : ?>
<option value="<?= $as['id_jadwal']; ?>">
<?= $as['kelas']; ?>
</option>
<?php endwhile; ?>
</select>
</div>
</div>
<!-- -->
<div class=" form-group">
<label class="">Pilih Barang</label>
<label for="" class="col-md-8">
<select name="id[]" class="form-control select2" multiple="multipe">
<option value="">Pilih Barang</option>
<?php
$query = ("SELECT * FROM tb_sarpases WHERE status = 'tampilkan'");
$query_run = mysqli_query($conn, $query);
if (mysqli_num_rows($query_run) > 0) {
foreach ($query_run as $row) {
?>
<option value="<?= $row['id']; ?>">
<?= $row['nama_sarpras']; ?>
</option>
<?php
}
} else {
?>
<option value="">Data Tidak Ada</option>
<?php
}
?>
</select>
</label>
</div>
<div class="row">
<div class="form-group col-4">
<label for="nis" class="d-block">Batas Jam Pinjam</label>
<div class="selectgroup selectgroup-pills">
<label class="selectgroup-item">
<input type="radio" name="bts_pinjam" value="2" class="selectgroup-input">
<span class="selectgroup-button selectgroup-button-icon"><i class="far fa-clock"> Jam ke 2</i></span>
</label>
<label class="selectgroup-item">
<input type="radio" name="bts_pinjam" value="4" class="selectgroup-input">
<span class="selectgroup-button selectgroup-button-icon"><i class="far fa-clock"> Jam ke 4</i></span>
</label>
<label class="selectgroup-item">
<input type="radio" name="bts_pinjam" value="6" class="selectgroup-input">
<span class="selectgroup-button selectgroup-button-icon"><i class="far fa-clock"> Jam ke 6</i></span>
</label>
</div>
</div>
</div>
<!-- <div class="form-group">
<label class="col-md-12">keterangan</label>
<div class="col-md-8">
<input type="text" value="-" name="keterangan" class="form-control">
</div>
</div> -->
<div>
<button type="submit" name="add" value="Save" class="btn btn-success"><i class="fas fa-paper-plane"></i>Save</button>
<button type="reset" class="btn btn-secondary">Reset</button>
</div>
</form>
Query insertnya
<?php
if (isset($_POST['add'])) {
$siswa = $_POST['id_siswa'];
$id_jadwal = $_POST['id_jadwal'];
$id = $_POST['id'];
$batas = $_POST['bts_pinjam'];
foreach ($id as $barangs) {
$query = "INSERT INTO tb_pinjamkbm (id_siswa,id,id_jadwal,bts_pinjam) VALUES ('$siswa','$barangs','$batas','$id_jadwal')";
$query_qu = mysqli_query($conn, $query);
}
$query_qu = mysqli_query($conn, $query);
if ($query_qu) {
echo "<script>alert('Data berhasil ditambah.😃😃😃');window.location='?page=pkbm';</script>";
// jika query salah munculkan pesan data gagal di simpan lalu redirec ke halaman dashbord
} else {
echo mysqli_error($conn);
}
}
?>
3 Jawaban:
Jawaban Terpilih
<div>Itu tuh.. karena kamu ada 2 query yg dijalanin.<br><br>Satu di dalam loop, satunya di luar.<br>Makanya saat insert 2, masuk 3<br><br>Edit:<br>Mungkin ini</div><pre> 1 2 3 4 1 2 4 3
(id_siswa,id,id_jadwal,bts_pinjam) VALUES ('$siswa','$barangs','$batas','$id_jadwal')</pre>
Tanggapan
udah di kurangin query nya namun jika sudah pernah ada data yang masuk untuk insert data selanjutnya tidak bisa muncul error seperti di pertanyaan
Kalau itu berarti perhatiin primary key nya, atau bahkan relasinya. Soalny di error mu ada berhubungan dgn id jadwal. Bisa jadi pas di insert ke tabel pinjam, id jadwallnya ada yg tidak sesuai dgn di tabel jadwal
<div>memang susah sih kalau musti menjelaskan tanpa tau (misal, table nya, atau yang lainnya),,, tapi menurutku, bener yang di kasi tau grenn,,, mungkin karna query dan prymary key,,, (sorry kalo ku taruh sini, bukan di komennya grenn karna panjang banget,,, kalo ini bener, kasi jawaban benernya ke jawaban dia aja,,,)<br><br></div><pre><br><pre><?php if (isset($_POST['add'])) { $siswa = $_POST['id_siswa']; $id_jadwal = $_POST['id_jadwal']; $id = $_POST['id']; $batas = $_POST['bts_pinjam']; foreach ($id as $barangs) { $query = "INSERT INTO tb_pinjamkbm (id_siswa,id,id_jadwal,bts_pinjam) VALUES ('$siswa','$barangs','$batas','$id_jadwal')"; $query_qu = mysqli_query($conn, $query); if ($query_qu) { echo "<script>alert('Data berhasil ditambah.😃😃😃');window.location='?page=pkbm';</script>"; // jika query salah munculkan pesan data gagal di simpan lalu redirec ke halaman dashbord }else{ echo mysqli_error($conn); } }else{ echo "$_POST kosong"; } } ?></pre></pre><div>if memang yang paling simple,,, tapi juga yang paling ga ku rekomendasiin di dunia perkodingan sih,,, terutama bagian "else" nya,, karena rawan kesalahan dan makin membuat koding susah dipahami</div><div><br></div>
<div>Berikut Untuk stuktu database nya<br><figure data-trix-attachment="{"contentType":"image/png","filename":"pdm.png","filesize":63099,"height":316,"url":"https://i.ibb.co/fS1ZxRZ/pdm.png","width":583}" data-trix-content-type="image/png" data-trix-attributes="{"presentation":"gallery"}" class="attachment attachment--preview attachment--png"><img src="https://i.ibb.co/fS1ZxRZ/pdm.png" width="583" height="316"><figcaption class="attachment__caption"><span class="attachment__name">pdm.png</span></figcaption></figure></div>
Tanggapan
Oh bukan di relasi nya rupanya klo dah benar
Yg ini toh $query = "INSERT INTO tb_pinjamkbm (id_siswa,id,id_jadwal,bts_pinjam) VALUES ('$siswa','$barangs','$batas','$id_jadwal')"; dalangnya rupanya.
Ketuker variabel $batas ama $id_jadwal
ketuker gimana ya... akunya kurang memahami???
Coba liat jawaban ku yg ku edit
udah jalan terima kasih Jazakallah Khairan