使用从数据库中获取值的Codeigniter路由页面

时间:2016-09-06 07:57:32

标签: codeigniter routes

目前我有一个如下页面 - abc.com/controller/action/23 这里23是Item id,它是动态的。我必须使用数据库中的id获取项目的名称,并路由到新的URL,如下所示 - abc.com/controller/p/23-itemname。 我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

您可以做的是当用户访问此页面时:

abc.com/controller/action/23

您将此代码放入控制器

<强> CONTROLLER

function action()
{
    $id = $this->uri->segment(3); //id is now 23, this is the third uri
    $data['details'] = $this->YOUR_MODEL->get_details($id);
    foreach($data['details'] as $d)
    {
        $itemname = $d->YOUR_TABLE_COLUMN_NAME;
    }
    redirect(base_url(). 'controller/p/' . $id . '-' . $itemname);
    //line produces abc.com/controller/p/23-itemname
}

<强> MODEL

function get_details($id)
{
    $this->db->select('*');
    $this->db->from('YOUR_TABLE_NAME');
    $this->db->where('YOUR_ID_COLUMN_NAME',$id);
    $query = $this->db->get();
    return $query->result();
}

如果您需要更多说明,请发表评论。

Goodluck meyt

修改

由于你有动作并且你重定向到功能p,所以会发生这种情况。

function p()
{
    $explodethis = $this->uri->segment(3); //Contains "23-itemname"
    $pieces = explode("-", $explodethis); //Separate by the dash
    $id = $pieces[0];                     //Contains "23"
    $itemname = $pieces[1];               //Contains "itemname"

    $data['details'] = $this->YOUR_MODEL->YOUR_FUNCTION(YOUR_PARAMETERS)
    $this->load->view('YOUR_VIEW',$data);
}

答案 1 :(得分:0)

不要求路由执行此操作。您可以按项目名称生成

<a href="<?php echo  site_url('controller/action').'/'.$val['item_id'].'-'.$val['item_name']; ?>"

现在在控制器中展开此标题以获取该项的ID,然后执行您的查询

$title = explode('-','23-item-name');
$id = trim($title[0]);//this is your item ID