我是使用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 |
-----------------------
| | | |
| | | |
-----------------------
某人无法帮助我,或解释我怎么能这样做,或者有些人分享教程链接
答案 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>';
}
}
}