如何从url获取id,然后使用codeigniter将其插入数据库

时间:2014-01-21 06:14:57

标签: php codeigniter codeigniter-url

希望所有这些信息都有用。

所以我正在做的是我有一个论坛页面,我已经设置为你可以选择一个类别,从该类别你可以在该类别中插入一个帖子。我需要帮助的是获取数据库的该类别的ID,以便当我回显它时将显示帖子。换句话说,在插入时将id链接到页面。

好,所以我知道它插入了用户名消息标题ect但它没有做的是从url获取1并将该1插入category_id下的数据库

这是我的网址,我省略了主要的http来缩短它,但剩下的就是数字1是我想要得到的并插入原因,它会根据你选择的类别而改变。 index.php/forum/create_post/1

这是我的类别表

ID    title   

1     community

这是我的帖子表中所有主要信息的来源,并且我想将category_id连接到主类别表。

ID 标题消息日期用户ID category_id flaged用户名

这是第一个插入新帖子的视图

查看:

<div id="container">
    <div class="module">
        <?php echo form_open('forum/create_post'); ?>
        <div>
            <?php
            echo form_label('Title', 'title');
            echo form_input('title', '');
            ?>
        </div>

        <div>
            <?php
            echo form_label('Message', 'message');
            echo form_input('message', '');
            ?>
        </div>

        <div>
            <?php echo form_submit('create', 'create new post'); ?>
        </div>
        <?php echo form_close(); ?>
    </div>

</div>

控制器:这是控制器中的部分,如果不是

,我将传递所有输入
 public function create_post() {
    if( !$this->session->userdata('username') ) {
        redirect('/'); // please login to continue
    }

    if( $this->input->post('create') ) {


        $this->forum->createpost(array(
          // $id= $this->uri->segment(3),
           'title' => $this->input->post('title'),
           'message' => $this->input->post('message'),
           'user_id'=> $this->session->userdata('id'),
           'username'=>$this->session->userdata('username'),

         ));

    }

    $this->load->view('templates/header');
    $this->load->view('forum/create_post');
    $this->load->view('templates/footer');
}

这是我将数据插入

的模型
public function createpost($data){
 $this->db->insert('post',$data);


}

3 个答案:

答案 0 :(得分:2)

根据您的网址index.php/forum/create_post/1,您的控制器功能应如下所示,以符合CI标准。

public function create_post($category_id) {

因此,您可以直接访问$category_id。无需获取网址段。

   $res =  $this->forum->createpost(array(
        $id= $category_id,
       'title' => $this->input->post('title'),
       'message' => $this->input->post('message'),
       'user_id'=> $this->session->userdata('id'),
       'username'=>$this->session->userdata('username'),

     ));
if($res)
{
 // show thanks msg
}
else
{
 // show error msg
}

在你的模特中:

您可以检查是否已插入数据

public function createpost($data)
{     
   $this->db->insert('post',$data);
   if($this->db->affected_rows()>0)
     return true;
   else
    return false;
}

答案 1 :(得分:0)

您没有再次向页面发送/ 1。您的表单必须从原始网址发送/ 1。

<?php echo form_open('forum/create_post'); ?>

create_post方法不会收到第3段,因为它不存在。将类别ID存储在隐藏的输入中,并通过$ this-&gt; input-&gt; post('category_id')访问它:

控制器

public function create_post() {
if( !$this->session->userdata('username') ) {
    redirect('/'); // please login to continue
}

if( $this->input->post('create') ) {
    $this->forum->createpost(array(
       'category_id' => $this->input->post('category_id'),
       'title'   => $this->input->post('title'),
       'message' => $this->input->post('message'),
       'user_id' => $this->session->userdata('id'),
       'username'=>$this->session->userdata('username')
     ));
}

$data['category_id'] = $this->uri->segment(3);

$this->load->view('templates/header');
$this->load->view('forum/create_post', $data);
$this->load->view('templates/footer');
}

视图

    <div id="container">
    <div class="module">
        <?php echo form_open('forum/create_post'); ?>
        <div>
            <?php
            echo form_label('Title', 'title');
            echo form_input('title', '');
            ?>
        </div>

        <div>
            <?php
            echo form_label('Message', 'message');
            echo form_input('message', '');
            ?>
        </div>

        <div>
            <?php echo form_submit('create', 'create new post'); ?>
        </div>

        <input type="hidden" name="category_id" value="<?php echo $category_id; ?>">
        <?php echo form_close(); ?>
    </div>
</div>

另外,问问自己是否需要存储用户ID和用户名。用户名是否附加了ID?只能从帖子中选择用户ID来检索它吗?

答案 2 :(得分:0)

我发现了我需要做的所有工作我必须将uri片段插入隐藏的输入论坛,以便将其插入正确的id框中,现在我可以连接正确的类别