2013-07-13 45 views
0

我是php + Zend編程的新手,所以需要您的寶貴意見。 1.我在mysql(phpmyadmin)中有一個表,表中的屬性是〜user_id,expense_id,日期月,年,費用。 2.我在View文件夾(Zend 2.2)中有.phtml文件(index.phtml)。它可以通過Controller頁面中的indexAction()來訪問。代碼:在Zend 2.2的VIEW結構中從mysql數據庫獲取數據?

回報視圖模型(返回數組=>( '年'=> $這個 - > getExpenseTable() - >使用fetchall($ user_ID的);)),

[對不起,如果它是沒有以適當的格式]。當我用foreach把它放到表中時,這個函數是爲了返回db中的所有值。在index.phtml的代碼如下:

escapeHtml($ expense->費用);> .....等等......

現在我的問題是什麼? : a)我不能在另一個表中使用變量'years'與另一個foreach循環在同一個index.phtml文件中。它說,「這是一個前瞻性的結果集。」我試着實現unset()和rewind(),兩者都不起作用。 b)我想從表中獲取屬性「年」的唯一的值(如表頭所示),並將每年的費用總和。

回答

0

你有這或許應該被包裹在多個問題多的問題,但無論如何,這裏有雲:

迭代多次在單個ResultSet

一些驅動程序允許緩衝。 $years的值是一個Zend ResultSet對象。您可以撥打$years->buffer()你循環之前,使內部緩衝區,所以你可以重複兩次:

// $set is ResultSet 
$set->buffer(); 

foreach ($set as $result) {} // first time 
foreach ($set as $result) {} // second time 

解壓年

您可以使用簡單的觀點的邏輯爲:

// example resultset 
$result = array(
    array('year' => '2012', 'value' => 'foo'), 
    array('year' => '2012', 'value' => 'bar'), 
    array('year' => '2013', 'value' => 'baz'), 
); 

// store year for check 
$year = null; 
foreach ($result as $item) { 
    if ($item['year']) !== $year) { 
     $year = $item['year']; 
     echo $year; 
    } 

    echo $item['value']; 
} 
+0

嗨,我試過這個解決方案,但是每當我運行這段代碼時,它說「buffer()是一個受保護的屬性,並且它不能被訪問。」 :(有沒有補救辦法? – Miki24