2010-04-24 16 views
0

我有一個包含博客條目的數據庫。我試圖達到的期望輸出是3個使用css3多段顯示的entrys,然後是另一個3(或更多)使用codeigniter Character_limiter格式化的輸出。所以我需要3個顯示格式一種方式和3 +格式另一種方式在同一頁面上。與Codeigniter的CRUD問題

到目前爲止,這是我的,但我不知道如何格式化sql來實現我想要的。我可以叫降序排列像我想要的所有帖子,但不知道如何將代碼分開,實現我的輸出 控制器:

$this->db->order_by('id', 'DESC'); 
$this->db->limit('2'); 
$query = $this->db->get('posts'); 
if($query->result()) 
$data = array(); 
{ 
$data['blog'] = $query->result(); 
} 
$data['title'] = 'LemonRose'; 
$data['content'] = 'home/home_content'; 
$this->load->view('template1', $data); 

查看:

<?php if (isset($blog)): foreach ($blog as $row): ?> 
<span class="title"><?php echo $row->title; ?> </span> 
<?php echo $row->date; ?> 
<div class="split"><?php echo $row->post =$this->typography->auto_typography($row->post); ?></div> 
<?php echo 'Post #',$row->id; ?> 
<p> Trackback URL: <? echo base_url()."trackbacks/track/$row->id";?></p>  
<hr /> 
<?php endforeach; 
endif; 
?> 

分割類是多列。我嘗試了2個不同的querys,但不知道如何分離所有的帖子顯示。另外一個查詢總是覆蓋第二個查詢併產生所有分割或全部字符限定的段落。

我在這裏失去了大聲笑。謝謝

回答

1

我需要3個顯示格式化單向和3+格式化另一種方式在同一頁上。

這聽起來像顯示邏輯,這意味着它是你的觀點的工作。您的控制器可以簡單地執行一個查詢,獲取全部或部分條目(比如最近的10條)並將其傳遞給視圖以決定如何顯示數據。

在您的觀點中,您可以簡單地使用foreach()循環中的條件邏輯來確定如何輸出發佈數據。



$limit = 3; // how many posts should we show in full? 
$i  = 1; // count 

foreach ($blog as $row): 

if($i < $limit) // we are under our limit 
{ 
    echo $row->post; // show full post 
} 
else // we are over our limit 
{ 
    echo $this->typography->auto_typography($row->post); // show truncated post 
} 

$i++; // increase count 

endforeach; 
unset($limit,$i,$row) 


這意味着你的控制器可以在完整的數據傳送到任意數量的視圖,每個都具有自己的方式來顯示數據,並認爲以上可以由任何控制器來調用,並忠實地顯示傳遞給它的帖子按照規定的方式。

如果不跟你坐好,然後你可以操縱你的控制器或模型中的數據(或創建一個輔助功能)與使用array_walk()和一個輔助函數:

 // user function for array_walk 
    function truncate_post(&$value,$key,$limit) 
    { 
     if($key >= $limit) 
     { 
      $value->post = $this->typography->auto_typography($value->post); 
     } 
    } 

    $query = $this->db->get('posts', 10); // get 10 posts 
    $results = $query->result(); 
    array_walk($results, 'truncate_post', 3); // truncate all but top 3 posts 
     $data['blog'] = $results; 
     $this->load->view('template1', $data); 
+0

我我會在早上嘗試這個,這兩條路看起來都非常棒 – Brad 2010-04-25 04:08:55

+0

natbot,有一點樣式,最好的答案做了我想要的。我相信第二個也會有。我將這兩個代碼添加到我的phpdesigner代碼片段中供將來參考。非常感謝你 – Brad 2010-04-25 15:24:37