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);
                    }
                }
                ?>
avatar arifrohman

@arifrohman

18 Kontribusi 4 Poin


Jawaban Terpilih

Itu tuh.. karena kamu ada 2 query yg dijalanin.

Satu di dalam loop, satunya di luar.
Makanya saat insert 2, masuk 3

Edit:
Mungkin ini
     1     2     3          4                  1         2         4          3                
(id_siswa,id,id_jadwal,bts_pinjam) VALUES ('$siswa','$barangs','$batas','$id_jadwal')
avatar GrennKren

@GrennKren

61 Kontribusi 45 Poin

Jawaban

Itu tuh.. karena kamu ada 2 query yg dijalanin.

Satu di dalam loop, satunya di luar.
Makanya saat insert 2, masuk 3

Edit:
Mungkin ini
     1     2     3          4                  1         2         4          3                
(id_siswa,id,id_jadwal,bts_pinjam) VALUES ('$siswa','$barangs','$batas','$id_jadwal')
avatar GrennKren

@GrennKren

61 Kontribusi 45 Poin

  • udah di kurangin query nya namun jika sudah pernah ada data yang masuk untuk insert data selanjutnya tidak bisa muncul error seperti di pertanyaan - @arifrohman
  • 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 - @GrennKren


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,,,)


<?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";
                    }
                }
                ?>
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
avatar mitsuky06

@mitsuky06

105 Kontribusi 51 Poin


Berikut Untuk stuktu database nya
pdm.pngpdm.png
avatar arifrohman

@arifrohman

18 Kontribusi 4 Poin

  • Oh bukan di relasi nya rupanya klo dah benar - @GrennKren
  • Yg ini toh $query = "INSERT INTO tb_pinjamkbm (id_siswa,id,id_jadwal,bts_pinjam) VALUES ('$siswa','$barangs','$batas','$id_jadwal')"; dalangnya rupanya. - @GrennKren
  • Ketuker variabel $batas ama $id_jadwal - @GrennKren

Tampikan semua |


Login untuk gabung berdiskusi