Gagal update data (ci), message: too few arguments to function menu::editmenu(), 0 passed

saya sedang membuat update menu, gagal dan menghasilkan error:

An uncaught Exception was encountered

Type: ArgumentCountError

Message: Too few arguments to function Menu::editMenu(), 0 passed in C:\xampp\htdocs\web-absensi-cuti\system\core\CodeIgniter.php on line 532 and exactly 1 expected

Filename: C:\xampp\htdocs\web-absensi-cuti\application\controllers\Menu.php

Line Number: 36

Backtrace:

File: C:\xampp\htdocs\web-absensi-cuti\index.php Line: 315 Function: require_once

controller menu.php

public function __construct()
    {
        parent::__construct();
        $this->load->model('Menu_model');
        cek_login();
    }

public function editMenu($id)
    {
        $data['title'] = 'Ubah Menu';
        $data['user'] = $this->db->get_where('user', ['email' => $this->session->userdata('email')])->row_array();
        $data['menu'] = $this->Menu_model->getMenuById($id);

        $this->form_validation->set_rules('menu', 'menu', 'required');

        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('menu/ubah-menu', $data);
            $this->load->view('templates/footer');
        } else {
            $this->Menu_model->ubahMenu();
            $this->session->set_flashdata('pesan', '<div class="alert alert-success" role="alert">
            Menu berhasil diubah!</div>');
            redirect('menu');
        }
    }

model Menu_model.php

public function getMenuById($id)
    {
        return $this->db->get_where('user_menu', ['id' => $id])->row_array();
    }


    public function ubahMenu()
    {
        $menu = $this->input->post('menu', true);
        $this->db->set('menu', $menu);
        $this->db->where('id', $this->input->post('id'));
        $this->db->update('user_menu');
    }

view ubah-menu.php

<!-- Begin Page Content -->
<div class="container-fluid">

    <!-- Page Heading -->
    <h1 class="h3 mb-4 text-gray-800"><?= $title; ?></h1>

    <div class="row">
        <div class="col-lg-6">
            <?= $this->session->flashdata('pesan'); ?>
            <form action="<?= base_url('menu/editmenu'); ?>" method="post">
                <input type="hidden" name="id" value="<?= $menu['id']; ?>">
                <div class="form-group">
                    <label for="menu">Menu</label>
                    <input type="text" class="form-control" id="menu" name="menu" value="<?= $menu['menu']; ?>">
                    <?= form_error('menu', '<small class="text-danger">', '</small>'); ?>
                </div>

                <div class="form-group">
                    <button type="submit" class="btn btn-primary btn-icon-split">
                        <span class="icon text-white-50">
                            <i class="fas fa-fw fa-save"></i>
                        </span>
                        <span class="text">Simpan</span>
                    </button>
                </div>
            </form>
        </div>
    </div>

</div>
<!-- /.container-fluid -->

</div>
<!-- End of Main Content -->

saya sudah nyoba beberapa cara dari stackoverflow, tutorial" update data CI dan masih tetap sama hasilnya. mohon bantuannya agar update menu yg saya buat bisa jalan?

avatar MuhammadFathurRachman
@MuhammadFathurRachman

25 Kontribusi 7 Poin

Diperbarui 4 tahun yang lalu

5 Jawaban:

Jawaban Terpilih

Alhamdulillah. akhirnya bisa juga, saya rasa saya udah coba syntax ini sebelumnya dan ga jalan. setelah hibernate laptop untuk sholat teraweh dan baru nyoba lagi dengan syntax yg saya rasa udah saya coba dan akhirnya jalan.

dibagian file Menu_model.php ada sedikit perubahan, dari seperti ini <pre> public function ubahMenu() { $menu = $this-&gt;input-&gt;post('menu', true); $this-&gt;db-&gt;set('menu', $menu); $this-&gt;db-&gt;where('id', $this-&gt;input-&gt;post('id')); $this-&gt;db-&gt;update('user_menu'); } </pre>

menjadi <pre> public function ubahMenu() { $id = $this-&gt;input-&gt;post('id', true); $menu = $this-&gt;input-&gt;post('menu', true); $this-&gt;db-&gt;set('menu', $menu); $this-&gt;db-&gt;where('id', $id); $this-&gt;db-&gt;update('user_menu'); } </pre>

dan mengubah action form di view/ubah-menu <pre> &lt;form action="&lt;?= base_url('menu/editmenu'); ?&gt;" method="post"&gt; </pre>

dengan mengosongkannya <pre> &lt;form action="" method="post"&gt; </pre>

saya rasa kedua syntax fungsinya sama, hanya $id tidak saya deklarasikan dan langsung taruh di $this-&gt;db-&gt;where(). kenapa bisa berbeda seperti itu ya?

setelah saya coba dengan syntax yg saya rasa sudah saya coba tapi gagal lagi dan lagi dengan mengosongkan actionnya dan akhirnya jalan dan ketika action nya diisi dengan &lt;?= base_url('menu/editmenu'); ?&gt; error seperti pertanyaan saya pun muncul.

setelah action formnya dikosongkan, ubahMenu() di Menu_model.php saya ubah seperti ini dan tetap jalan <pre> public function ubahMenu() { $id = $this-&gt;input-&gt;post('id', true); $menu = $this-&gt;input-&gt;post('menu', true);

    $this-&amp;gt;db-&amp;gt;where(&#039;id&#039;, $id)-&amp;gt;update(&#039;user_menu&#039;, [&#039;menu&#039; =&amp;gt; $menu]);
}

</pre>

Alhamdulillah.

avatar MuhammadFathurRachman
@MuhammadFathurRachman

25 Kontribusi 7 Poin

Dipost 4 tahun yang lalu

gan boleh minta source codenya ? punya saya sama kendalanya seperti agan , tapi saya coba seperti yg diatas masih salah

avatar DwiGigih
@DwiGigih

3 Kontribusi 0 Poin

Dipost 4 tahun yang lalu

hmmm.. nanti saya cari dulu ya gan, soalnya ini kalau saya ga salah inget program dari skripsi saya

avatar MuhammadFathurRachman
@MuhammadFathurRachman

25 Kontribusi 7 Poin

Dipost 4 tahun yang lalu

Tanggapan

iya gan ditunggu ya gan saya masih eror ni, dah saya oprek oprek masih nda bisa juga ..

saya punya eror yang sama gan dan setelah di coba alhamdulillah berhasil, tengkyu gan....

avatar rafi017
@rafi017

1 Kontribusi 0 Poin

Dipost 4 tahun yang lalu

Tanggapan

ya gan, sama-sama :)

gan, mkasih atas jawabannya.. tapi kenapa ya di actionnya harus dikosongkan. mohon penjelasannya kalo tau gan.

Dan kenapa ya kalo menu nya uda diedit malah sekarang sub menu nya gabisa lagi dijalankan karena sub menunya kan berasosiasi dengan menu saat di tambahkan, kalo tau cara update yang disubmenu juga skalian trima kasih

avatar hafizulf
@hafizulf

2 Kontribusi 0 Poin

Dipost 4 tahun yang lalu

Login untuk ikut Jawaban