CI3 中重复的 foreach

问题描述 投票:0回答:1

所以我尝试使用 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 但它仍然不起作用

尝试添加限制

codeigniter-3
1个回答
0
投票

如果我理解正确,您正在尝试更新表单中的一个类别。您可以使用

->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>
© www.soinside.com 2019 - 2024. All rights reserved.