codeigniter中的链接表

时间:2014-06-24 07:47:57

标签: mysql codeigniter

我是使用codeigniter的新手,我正在学习为我的学校项目开发基于mysql数据库的应用程序,我有10table(table1,table2,.... table10),我正在创建我的模型就像这样

class Show_model extends CI_Model{

    function __construct()
    {
        parent ::__construct();
    }

    function table1()
    {
        $query1 = $this->db->get('table1');
        return $query1->result();        
    }

    function table2()
    {
        $query2 = $this->db->get('table2');
        return $query2->result();        
    }
    bla....bla......................



    function table10()
    {
        $query10 = $this->db->get('table10');
        return $query10->result();        
    }
}

和我的控制器就像这样

class Show extends CI_Controller{

    function __construct(){
        $this->load->model('show_model');
    }

    function show_table1()
    {
        $data['show_table1']   = $this->show_model->table1();        
        $this->load->view('v_page_1',$data);
    }

    function show_table2()
    {
        $data['show_table2']   = $this->show_model->table2();        
        $this->load->view('v_page_2',$data);
    }

    bla....bla....


}

我的目标是:

  1. 如何简单地使用我的代码

  2. 如何在一个页面上显示/查看并为每个表格创建链接以显示

  3. 这是我要展示的:

    clik to show : table1|tabel2|table3|......|
    
    -----------------------
    |itemA | itemB |itemC |
    -----------------------
    |      |       |      |
    |      |       |      |
    -----------------------
    

    某人无法帮助我,或解释我怎么能这样做,或者有些人分享教程链接

2 个答案:

答案 0 :(得分:0)

我不是百分百肯定我正确理解这个问题,但这里就是这样;

我会使用路由,这可以通过几个功能来完成。打开routes.php文件(./application/config/routes.php),然后添加;

$route['show/(:any)'] = 'show/table/$1';

这将重新路由访问" / show / table1"到你的" show / table / table1"功能

在您的控制器中,您可以删除所有" show_table#"功能,并用它替换它们;

function table($table)
{
    if ( ! $table )
    {
        show_404();
    }

    $data['table'] = $this->show_model->get_table($table);
    $this->load->view('table_page', $data);
}

这是您的路径文件向用户显示的功能,非常简单。首先我们要检查$ table,如果没有找到,我们会显示404.如果我们找到一个,我们就会去模型。

现在,在您的模型中,您还可以删除所有的表#函数,使用它;

public function get_table($table)
{
    $query = $this->db->get($table);
    return ($query->num_rows() > 0) ? $query->result() : false;                    
}

那就是它。您现在可以在视图中显示每个表格的链接。

<ul>
    <li><a href="<?php echo site_url('show/table1'); ?>">Table 1</a></li>
    <li><a href="<?php echo site_url('show/table2'); ?>">Table 2</a></li>
    <li><a href="<?php echo site_url('show/table3'); ?>">Table 3</a></li>
    <li><a href="<?php echo site_url('show/table4'); ?>">Table 4</a></li>
    <li><a href="<?php echo site_url('show/table5'); ?>">Table 5</a></li>
    <li><a href="<?php echo site_url('show/table6'); ?>">Table 6</a></li>
    <li><a href="<?php echo site_url('show/table7'); ?>">Table 7</a></li>
    <li><a href="<?php echo site_url('show/table8'); ?>">Table 8</a></li>
    <li><a href="<?php echo site_url('show/table9'); ?>">Table 9</a></li>
    <li><a href="<?php echo site_url('show/table10'); ?>">Table 10</a></li>
</ul>

答案 1 :(得分:0)

您可以将要显示的表传递给controller参数。然后创建一个功能来创建菜单。如果您只使用$ this-&gt; db-&gt; get(&#39;&#39;);。

,则不需要模型
class Show extends CI_Controller
{
    private $tables = array('table1', 'table2', 'table3' ....);

    public function show_table($table)
    {
        if (! in_array($table, $this->tables))
        {
            show_404();
        }

        $data['table'] = $this->db->get($table)->result();
        $menu = $this->get_menu();

        $this->load->view('show_table', array(
            'table' => $this->load->view('v_table_'. $table, $data, TRUE),
            'menu'  => $menu,
    }

    private function get_menu()
    {
        $menu = '';
        foreach ($this->tables as $table)
        {
            $menu .= '<a href="'. base_url('show/show_table/'. $table) .'">'. $table .'</a>';
        } 
    }
}