2011-08-17 30 views
1

我正在使用CodeIgniter活動記錄類來生成表,我的代碼片段在下面。關於CI活動記錄類使用的SQL問題

我嘗試從DateBase表上生成TWO表; 和兩個名爲Table_2010和Table_2011的HTML表。

/////////////////// YEAR 2010 //////////////// 
// It works quite well to generate 2010 result table. 

$this->db->select('year, distance, gender, rank, name, chiptime, racenumber'); 

       $this->db->order_by("year", "desc"); 

       $this->db->order_by("distance, gender, rank", "asc"); 

       $topNum = 5; 
       $year = 2010;     
       $array = array('rank <=' => $topNum, 'year' => $year); 
       $this->db->where($array); 


       $this->load->model('eventmain_model'); 

       $data['results_2010'] = $this->eventmain_model->get_result_top5($city); 

       $tmpl = $this->common_model->html_table_config(); 

       $this->load->library('table'); 

       $this->table->set_template($tmpl); 

       $this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'ChipTime', 'RaceNo')); 



/////////////////// YEAR 2011 //////////////// 
// I need query several different fields from the same data base table. 
// such as I query 'lap', otherwise 'chiptime' 
// It doesn't work well, since it always included 2010 and 2011 data to my 2nd 2011 new table. 
// I want to remove 2010 rows from the 2011 table. How can I fix this? 
// Is ther an method to new the db select object and generate my 2011 table?  
//Thanks.     
       // load database class 

       $this->db->select('year, distance, gender, rank, name, lap, racenumber'); 

       $this->db->order_by("year", "desc"); 

       $this->db->order_by("distance, gender, rank", "asc"); 

       $topNum = 5; 
       $year = 2011; 
       $this->db->where('rank <=', $topNum); 
       $this->db->where('year', $year); 



       $this->load->model('eventmain_model'); 

       $data['results_2011'] = $this->eventmain_model->get_result_top5($city); 

       $tmpl = $this->common_model->html_table_config(); 

       $this->load->library('table'); 

       $this->table->set_template($tmpl); 

       $this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'Lap', 'RaceNo')); 
+0

我有點困惑:你究竟在哪種情況下實際執行查詢?我從技術上看不到get(),看起來你已經構建了一個大規模的查詢而沒有調用它。 –

+0

還有另一個模型文件('get_result_top5()')來執行查詢操作。它工作得很好。我發佈了'$ this-> db-> select();'和'$ this-> db-> where();'部分。我認爲這部分代碼需要修復。 –

+1

謝謝澄清。不幸的是,我和你一樣困惑。如果您在第二次查詢中將年份限制在2011年,我看不出2011年和2010年的數據。 –

回答

0

從CI官方論壇得到答案。

$this->table->clear(); 

而我通過將代碼添加到我的查看頁面來解決了問題。謝謝。

echo 'Table_2010<br>'; 

$this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'ChipTime', 'RaceNo')); 

echo $this->table->generate($results_2010); 
$this->table->clear(); 

echo '<br>'; 
echo 'Table_2011<br>'; 
$this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'Lap', 'RaceNo')); 
echo $this->table->generate($results_2011);