首页 文章

codeigniter中的链接表

提问于
浏览
0

我是使用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....


}

我的目标是:

  • 如何简单地使用我的代码

  • 如何在一个页面上显示/查看并为每个要显示的表创建一个链接

这是我要展示的:

clik to show : table1|tabel2|table3|......|

-----------------------
|itemA | itemB |itemC |
-----------------------
|      |       |      |
|      |       |      |
-----------------------

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

2 回答

  • 0

    您可以将要显示的表传递给控制器参数 . 然后创建一个功能来创建菜单 . 如果只使用$ this-> db-> get('');则不需要模型 .

    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>';
            } 
        }
    }
    
  • 0

    我不是百分百肯定我正确理解这个问题,但是这里有 .

    我会为此使用Routes,它可以通过几个函数完成 . 打开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>
    

相关问题