2016-09-06 3 views
2

В настоящее время у меня есть страница, похожая на приведенную ниже - abc.com/controller/action/23 Здесь 23 - Item id, который является динамическим. Я должен получить имя элемента, используя идентификатор из базы данных, и маршрут к новому URL-адресу, как показано ниже: abc.com/controller/p/23-itemname. Как я могу это сделать?Страница маршрута Codeigniter с использованием значения fetch из базы данных

ответ

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 
} 

МОДЕЛЬ

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

Просто комментарий, если вам нужно больше разъяснений.

Гудлак meyt

EDIT

Поскольку у вас есть действие и перенаправлять функционировать р, вот то, что будет происходить.

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); 
} 
+0

ok. Но у меня есть запрос. Я использую ваш код, где я должен использовать режим загрузки. В действии() или в p()? – SuUbha

+0

Всего лишь минуту я дам вам код для p() :) –

+0

, так что, вы загрузите его в p, так как это последнее, что вы загружаете, если вы попытаетесь загрузить в действии, оно будет отображаться только для короткого период времени до готовности p, затем огонь p: D –

0

Маршрутизация не требуется для этого. Вы можете создать ссылку на имя элемента

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

и теперь в контроллере взрываются это название, чтобы получить идентификатор элемента, а затем выполнить ваш запрос

$title = explode('-','23-item-name'); 
$id = trim($title[0]);//this is your item ID 
Смежные вопросы