Postingan lainnya
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
0
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