Добавьте данные в базу данных с помощью 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;
}
}
2 answers
Если это сервер, который выбрасывает страницу, которая не найдена, это почти наверняка проблема с URL, в отличие от проблемы CI/PHP.
Правильно ли определен ваш базовый URL-адрес в файле конфигурации? Правильно ли настроен ваш .htaccess
(старая конфигурация может быть маршрутизацией/добавлением запросов от CI)?
Попробуйте добавить следующее действие в контроллер добавления и перейти к нему непосредственно в http://[base]/add/thetest
public function thetest() {
echo 'Controller accessed';
die;
}
Если там все еще написано страница не найдена , это не ваш код, это ваш конфигурация (либо конфигурация сервера, либо CI).
Вместо вставки используйте обновление в вашей модели, например:
$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');
}