Input lebih dari 1 id

<div class="col-xxl-12">
                            <label for="rule" class="form-label">Rule*</label>
                            <select class="form-select mb-3" id="rule" name="rules[]">
                                <option value="-">Pilih Rule</option>
                                <?php foreach ($rules as $rule): ?>
                                    <option onclick="addRule();" value="<?= $rule['id']; ?>" id="rule-<?= $rule['id']; ?>"><?= $rule['nama']; ?> (jam <?= $rule['start']; ?>-<?= $rule['end']; ?>)</option>
                                <?php endforeach; ?>
                            </select>
                            <div id="listrule"></div>
                        </div>

ini viewnya

 function addRule() {
            var ruleId = document.getElementById('rule').value;
            if (ruleId !== "-") {
                fetch('<?= site_url('/telephony/admin/addRule'); ?>', {
                        method: 'POST',
                        headers: {
                            'Content-Type': 'application/json'
                        },
                        body: JSON.stringify({
                            rule_id: ruleId
                        })
                    })
                    .then(response => response.json())
                    .then(data => {
                        if (!data.error) {
                            var listruleDiv = document.getElementById('listrule');
                            var newRule = document.createElement('div');
                            newRule.className = 'd-flex justify-content-between align-items-center mb-2';

                            // Teks rule
                            var ruleText = document.createElement('span');
                            ruleText.textContent = data.nama + ' (jam ' + data.start + '-' + data.end + ') ';
                            newRule.appendChild(ruleText);

                            // Tambahkan ikon hapus
                            var deleteButton = document.createElement('button');
                            deleteButton.className = 'btn btn-danger btn-sm';
                            deleteButton.onclick = function(event) {
                                event.stopPropagation(); // Mencegah event bubbling
                                deleteRule(newRule, event); // Pass event ke deleteRule
                            };

                            // Ikon hapus
                            var deleteIcon = document.createElement('i');
                            deleteIcon.className = 'ri-delete-bin-line';
                            deleteButton.appendChild(deleteIcon);

                            newRule.appendChild(deleteButton);
                            listruleDiv.appendChild(newRule);
                        } else {
                            console.error(data.error);
                        }
                    })
                    .catch(error => console.error('Error:', error));
            }
        }
ini ajax add rule
public function input_profil($data)
    {
        // Insert ke tabel profil
        $this->db->table($this->profil)->insert([
            'nama' => $data['nama'],
            'id_grup' => $data['id_grup'],
            'jumlah_tiket' => $data['jumlah_tiket'],
            'auto' => $data['auto']
        ]);
        // Ambil ID terakhir yang dimasukkan
        $maxId = $this->db->insertID();
        // Insert ke tabel profil_rule
        if ($maxId) {
            $insertRule = $this->db->query("INSERT INTO {$this->profil_rule} (id_profil, id_rule)
                SELECT $maxId, id_rule FROM {$this->temp_profil_rule} ORDER BY id");
            // Mengembalikan true jika insert berhasil, tanpa truncate
            return $insertRule ? true : false;
        }
        return false; // Gagal jika maxId tidak ditemukan
    }

ini model

masalahnya adalah ketika input kemudian di listrule ada lebih dari 1 data maka yang terinput hanya 1 id. mohon dibantu

avatar okesuriadi
@okesuriadi

1 Kontribusi 0 Poin

Dipost 1 bulan yang lalu

Tanggapan

jika dilihat pada bagian: var ruleId = document.getElementById(rule).value; disana hanya men-select 1 rule id.

apa bisa di debug print pada saat get ruleId tersebut, apakah ter-print semua id yang di input ?

kalau memang hanya 1 id, maka perlu ditampung dulu id2 tersebut, setelah ditampung semua id, baru di input_profile (bisa di looping satu2, atau kirim bulk).

Belum ada Jawaban. Jadi yang pertama Jawaban

Login untuk ikut Jawaban