Chcę więc po prostu stworzyć prosty formularz, aby dodawać, aktualizować i usuwać niektóre dane (imię i nazwisko, identyfikator i adres). Dodawanie i usuwanie działa dobrze, ale aktualizacja nie działa, Codeigniter wyświetla mi komunikat o błędzie:

Napotkano błąd PHP Severity: Error Message: Call to undefined method Mahasiswa_model :: getMahasiswa () Nazwa pliku: controllers / Mahasiswa.php Numer linii: 35 Backtrace:

A to jest mój kod, który moim zdaniem jest powiązany z błędem. Ta nazwa pliku to Mahasiswa.php

<?php
    if (!defined('BASEPATH')) exit('no direcet  script access allowed');

    class Mahasiswa extends CI_Controller {

        function __construct() {
            parent::__construct();
            $this->load->database();
            $this->load->helper('url');
            $this->load->helper('form');
            $this->load->model('Mahasiswa_model');
        }

        public function index() {
            $data['mhs'] = $this->Mahasiswa_model->retrieve();
            $this->load->view('Mahasiswa_view', $data);
        }

        public function form_tambah() {
            $this->load->view('Tambah_view');
        }

        public function submit() {
            $this->Mahasiswa_model->add($this->input->post('var'));
            $data['submitted'] = TRUE;
            $this->load->view('Tambah_view', $data);
        }

        function delete() {
            $this->Mahasiswa_model->delete($this->uri->rsegment(3));
            $this->index();
        }

        function form_update() {
            $data['mhs'] = $this->Mahasiswa_model->getMahasiswa($this->uri->rsegment(3));
            $this->load->view('update_view', $data);
        }

        function update() {
            $this->Mahasiswa_model->update($this->input->post('old_nim'),
            $this->input->post('var'));
            $this->index();
        }
    }
?>

A ten to Mahasiswa_model.php

<?php
    class Mahasiswa_model extends CI_Model {
        function retrieve() {
            $query = $this->db->get('mhs');

            if($query->result()) {
                foreach ($query->result() as $content) {
                    $data[] = array(
                        $content->nim,
                        $content->nama,
                        $content->alamat
                    );
                }
                return $data;
            } else {
                return FALSE;
            }
        }

        function add($arg) {
            $data = array (
                'nim' => $arg[0],
                'nama'=> $arg[1],
                'alamat' => $arg[2],
            );

            $this->db->insert('mhs', $data);
        }

        function delete($id) {
            $this->db->where('nim', $id);
            $this->db->delete('mhs');
        }

        function update($id, $form) {
            $data = array(
                'nim' => $form[0],
                'nama' =>$form[1],
                'alamat' => $form[2],
            );
        }
    }
?>

Może ktoś pomoże mi dowiedzieć się, gdzie popełniłem błąd? Linia 35 nie jest dla mnie wystarczająco jasna

-1
Rizky Mahendra 19 listopad 2019, 14:53
1
$this->getMahasiswa <- ta metoda nie jest zadeklarowana w twoim kontrolerze
 – 
Vishnu Bhadoriya
19 listopad 2019, 14:56
Próbowałem go usunąć, ale dał mi kolejny błąd
 – 
Rizky Mahendra
19 listopad 2019, 14:58
Znowu nie ma metody w twoim modelu. Upewnij się, że dodałeś poprawny kod
 – 
Vishnu Bhadoriya
19 listopad 2019, 15:04
W porządku, dziękuję. dam temu szansę
 – 
Rizky Mahendra
19 listopad 2019, 15:10
Myślałem, że getMahasiswa pochodzi z tego samego pliku w wierszu 4 class Mahasiswa extends CI_Controller, prawda?
 – 
Rizky Mahendra
19 listopad 2019, 15:15

1 odpowiedź

Ten wiersz w kontrolerze jest problemem:

$this->Mahasiswa_model->getMahasiswa($this->uri->rsegment(3));

Wywołujesz metodę getMahasiswa, która powinna być dostępna w Twoim modelu, ale (zakładając, że przesłany kod dla Twojego modelu jest kompletny) tak nie jest. Twój model ma zadeklarowane tylko metody retrieve, add, delete i update.

Musisz albo utworzyć metodę getMahasiswa w swoim modelu, albo musisz wywołać inną metodę ze swojego kontrolera.

Jeśli chcesz wywołać funkcję z tego samego kontrolera, po prostu napisz.

$data = $this->getMahasiswa($parameter1); IMP: funkcja musi być obecna w tym samym kontrolerze.

1
Bhavesh Parab 19 listopad 2019, 15:59
Szczerze mówiąc te kody z mojego modułu uczelni, nie wiem, czy napisałem ten kod źle, czy jest to mój moduł, ale dzięki za algorytm.
 – 
Rizky Mahendra
19 listopad 2019, 16:41