Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
Kelas Premium!
Belajar Javascript untuk website
Gunakan kupon "mulaijs" untuk diskon 75 ribu!
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
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