所以我尝试使用 foreach 来显示数据,但它重复了 foreach 内的内容。这是代码
<!-- Begin Page Content -->
<div class="container-fluid">
<?= $this->session->flashdata('pesan'); ?>
<div class="row">
<div class="col-lg-6">
<?php if (validation_errors()) {
$this->session->set_flashdata('pesan', '<div class="alert alert-danger alert-message" role="alert">Nama Kategori tidak boleh Kosong</div>');
redirect('buku/ubahkategori/' . $k['id_kategori']);
} ?>
<?php foreach ($kategori as $k) { ?>
<form action="<?= base_url('buku/ubahKategori'); ?>" method="post">
<div class="form-group">
<input type="hidden" name="id" id="id" value="<?php echo $kategori['id_kategori']; ?>">
<input type="text" class="form-control form-control-user" id="kategori" name="kategori" placeholder="Masukkan Kategori Buku" value="<?= $kategori['kategori']; ?>">
</div>
<div class="form-group">
<input type="button" class="form-control form-control-user btn btn-dark col-lg-3 mt-3" value="Kembali" onclick="window.history.go(-1)">
<input type="submit" class="form-control form-control-user btn btn-primary col-lg-3 mt-3" value="Update">
</div>
</form>
<?php } ?>
这是控制器
public function ubahKategori()
{
$data['judul'] = 'Ubah Kategori Buku';
$data['user'] = $this->ModelUser->cekData(['email' => $this->session->userdata('email')])->row_array();
$where = ['id_kategori' => $this->uri->segment(3)];
$data['kategori'] = $this->ModelBuku->kategoriWhere($where)->row_array();
$this->form_validation->set_rules(
'kategori',
'Kategori',
'required', [
'required' => 'Judul Buku harus diisi'
]);
if ($this->form_validation->run() == false)
{
$this->load->view('templates/header', $data);
$this->load->view('templates/sidebar', $data);
$this->load->view('templates/topbar', $data);
$this->load->view('buku/ubah_kategori', $data);
$this->load->view('templates/footer');
} else {
$data = ['kategori' => $this->input->post('kategori')];
$this->ModelBuku->updateKategori(['id_kategori' => $this->input->post('id')], $data);
redirect('buku/kategori');
}
}
它重复了 foreach 内部的内容,尝试在查询上使用 Limit 但它仍然不起作用
尝试添加限制
如果我理解正确,您正在尝试更新表单中的一个类别。您可以使用
->row_array()
从数据库中获取此类别,因此 $data['kategory']
包含单个数据库行/单个类别的属性。
如果您随后对此类别执行 foreach,则 foreach 会循环遍历该类别的属性并为每个属性重复该形式。由于您只想显示一种类别,因此这里不需要使用 foreach,直接访问属性即可。
删除 foreach,并将
$k['id_kategori']
中的 redirect
替换为 $kategori['id_kategori']
:
<!-- Begin Page Content -->
<div class="container-fluid">
<?= $this->session->flashdata('pesan'); ?>
<div class="row">
<div class="col-lg-6">
<?php if (validation_errors()) {
$this->session->set_flashdata('pesan', '<div class="alert alert-danger alert-message" role="alert">Nama Kategori tidak boleh Kosong</div>');
redirect('buku/ubahkategori/' . $kategori['id_kategori']);
} ?>
<form action="<?= base_url('buku/ubahKategori'); ?>" method="post">
<div class="form-group">
<input type="hidden" name="id" id="id" value="<?php echo $kategori['id_kategori']; ?>">
<input type="text" class="form-control form-control-user" id="kategori" name="kategori" placeholder="Masukkan Kategori Buku" value="<?= $kategori['kategori']; ?>">
</div>
<div class="form-group">
<input type="button" class="form-control form-control-user btn btn-dark col-lg-3 mt-3" value="Kembali" onclick="window.history.go(-1)">
<input type="submit" class="form-control form-control-user btn btn-primary col-lg-3 mt-3" value="Update">
</div>
</form>