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

21 Kontribusi 4 Poin

Diperbarui 1 tahun yang lalu

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>

avatar GrennKren
@GrennKren

62 Kontribusi 47 Poin

Dipost 1 tahun yang lalu

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>&lt;?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 "&lt;script&gt;alert('Data berhasil ditambah.😃😃😃');window.location='?page=pkbm';&lt;/script&gt;"; // jika query salah munculkan pesan data gagal di simpan lalu redirec ke halaman dashbord }else{ echo mysqli_error($conn); } }else{ echo "$_POST kosong"; } } ?&gt;</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>

avatar yukari06
@yukari06

137 Kontribusi 66 Poin

Dipost 1 tahun yang lalu

<div>Berikut Untuk stuktu database nya<br><figure data-trix-attachment="{&quot;contentType&quot;:&quot;image/png&quot;,&quot;filename&quot;:&quot;pdm.png&quot;,&quot;filesize&quot;:63099,&quot;height&quot;:316,&quot;url&quot;:&quot;https://i.ibb.co/fS1ZxRZ/pdm.png&quot;,&quot;width&quot;:583}" data-trix-content-type="image/png" data-trix-attributes="{&quot;presentation&quot;:&quot;gallery&quot;}" 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>

avatar arifrohman
@arifrohman

21 Kontribusi 4 Poin

Dipost 1 tahun yang lalu

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

Login untuk ikut Jawaban