【问题标题】:Add data to the database using codeigniter使用 codeigniter 将数据添加到数据库
【发布时间】:2012-09-04 16:12:54
【问题描述】:

我目前正在尝试使用 codeigniter 将数据添加到数据库中。我已经使用 active 方法设置了一个注册页面,并尝试对添加新闻表单使用相同的方法,但没有成功。

当我点击提交时,它说找不到页面,并且 url 显示控制器函数名称。当我故意将任何字段留空时也是如此。我检查了我的数据库,没有添加任何记录,也没有 php 日志错误。

这是我的sn-ps代码:

查看:

<?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;
}
}

【问题讨论】:

  • 您在源代码中的表单操作中看到了什么?
  • 在源代码中,我知道该操作针对添加控制器和 add_article 函数,并且在提交时仅显示:localhost/codeigniter/add/add_controller 然后找不到页面,这就是您的意思?我还尝试在 if 语句的控制器中使用重定向。
  • 试试echo form_open('index.php/add/add_article');
  • ---如果你想看的话,我已经在我的第一篇文章下面添加了我的工作代码。---

标签: php database codeigniter content-management-system add


【解决方案1】:

如果是服务器抛出未找到页面,则几乎可以肯定是 URL 问题,而不是 CI/PHP 问题。

您的基本网址是否在配置文件中正确定义?您的.htaccess 配置是否正确(旧配置可能会从 CI 路由/添加请求)?

尝试将以下操作添加到 Add 控制器,并直接在 http://[base]/add/thetest 导航到它

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

如果仍然显示找不到页面,这不是您的代码,而是您的配置(服务器配置或 CI)。

【讨论】:

  • 我试过这个,在测试时它仍然抛出一个 CI 页面 url not found 我将管理员添加到添加/测试并找到了回声,所以现在我已经将“管理员”添加到表单打开,如果在我的控制器中查询。谢谢。
【解决方案2】:

而不是在您的模型中插入使用更新,例如:

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

而且我认为你在控制器中的这部分代码也是错误的(错误的 if 语句并且没有数据发送到模型):

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');
}

【讨论】:

  • 我已经保存了这个 sn-p 以供将来参考,但是当使用 $insert = $this->db->update('news', $data);这更新了我在数据库中的所有记录,而不是添加新行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 2016-02-27
  • 2017-07-14
  • 2017-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多