Добавьте данные в базу данных с помощью codeigniter


В настоящее время я пытаюсь добавить данные в базу данных с помощью codeigniter. Я уже настроил страницу регистрации, используя активный метод, и попытался использовать тот же метод для формы добавления новостей, но безуспешно.

Когда я нажимаю "Отправить", это говорит о том, что страница не может быть найдена, а URL-адрес показывает имя функции контроллера. Это то же самое, когда я намеренно оставляю любые поля пустыми. Я проверил свою базу данных, и никаких записей добавлено не было, и никаких ошибок в журнале php.

Здесь это мои фрагменты кода:

Просмотр:

<?php echo form_open('add/add_article'); ?>
        <?php echo form_input('title', set_value('title', 'Title')); ?><br />
        <?php echo form_textarea('content', set_value('content', 'Content')); ?><br />
        <?php echo form_input('author', set_value('author', 'Author')); ?>
        <?php echo form_submit('submit', 'Add Article'); ?>
        <?php echo validation_errors('<p class="error">' );?>
  <?php echo form_close(); ?>

Контроллер:

class Add extends CI_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        $this->load->view('admin/add');
}

    public function add_article() {
        $this->load->library('form_validation');

        $this->form_validation->set_rules('title', 'Title', 'trim|required');
        $this->form_validation->set_rules('content', 'Content', 'trim|required');
        $this->form_validation->set_rules('author', 'Author', 'trim|required');

        if($this->form_validation->run() == FALSE) {

        $this->index();

        }else{

            $this->load->model('news_model');
            if($query = $this->news_model->addArticle()) {
            $this->load->view('news');
            }else {
                $this->load->view('news');
        }
    }   
}
}

Модель:

public function __construct() {
    parent::__construct();
}

        function addArticle() {
    $data =array(
    'title' => $this->input->post('title'),
    'content' => $this->input->post('content'), 
    'author' => $this->input->post('author'),
    'username' => $this->input->post('username'));

    $insert = $this->db->insert('news', $data);
    return $insert;
}
}
Author: Rizier123, 2012-09-04

2 answers

Если это сервер, который выбрасывает страницу, которая не найдена, это почти наверняка проблема с URL, в отличие от проблемы CI/PHP.

Правильно ли определен ваш базовый URL-адрес в файле конфигурации? Правильно ли настроен ваш .htaccess (старая конфигурация может быть маршрутизацией/добавлением запросов от CI)?

Попробуйте добавить следующее действие в контроллер добавления и перейти к нему непосредственно в http://[base]/add/thetest

public function thetest() {
echo 'Controller accessed';
die;
}

Если там все еще написано страница не найдена , это не ваш код, это ваш конфигурация (либо конфигурация сервера, либо CI).

 3
Author: SLD, 2012-09-14 05:37:39

Вместо вставки используйте обновление в вашей модели, например:

$insert = $this->db->update('news', $data);
return $insert;

И я думаю, что эта часть вашего кода в контроллере тоже неверна (неверно, если оператор и данные не отправляются в модель):

if($query = $this->news_model->addArticle()) {
            $this->load->view('news');
            }else {
                $this->load->view('news');
        }

Попробуйте это:

$data =array(
    'title' => $this->input->post('title'),
    'content' => $this->input->post('content'), 
    'author' => $this->input->post('author'),
    'username' => $this->input->post('username')
);

$query = $this->news_model->addArticle($data);
if($query) 
{
   // query ok
   $this->load->view('news');
}
else {
   // no query
   $this->load->view('news');
}
 0
Author: Derfder, 2012-09-04 19:01:16