2015-04-29 63 views
0

我的foreach循環不循環數據庫中的所有結果。只顯示最後一個,而這是否XX倍(行的總數)PHP Foreach循環只顯示1個值而不是所有不同的值

我的代碼:

db screenshot http://i60.tinypic.com/2ytsfig.jpg result screenshot http://i59.tinypic.com/29f6r14.jpg

$query = db_query('SELECT * FROM push_notifications_messages WHERE msg_appID = :app_id', array(':app_id' => $id)); 
$qCount = db_query('SELECT * FROM push_notifications_messages WHERE msg_appID = :app_id', array(':app_id' => $id))->rowCount(); 

$form['table'] = array(
    '#theme' => 'table', 
    '#header' => array(t('Message'), t('Device'), t('Date')), 
    'rows' => array(), 
    ); 

foreach($query as $result) { 
    for($i = 1; $i <= $qCount; $i++) { 
    $form['table']["#rows"]["'r$i'"] = array(
     'c1' => array(
      'data' => array('#type' => 'item', '#markup' => t('@message', array('@message' => $result->msg_message))), 
     ), 
     'c2' => array(
      'data' => array('#type' => 'item', '#markup' => t('@message', array('@message' => $result->msg_device))), 
     ), 
     'c3' => array(
      'data' => array('#type' => 'item', '#markup' => t('@message', array('@message' => date("d F Y H:i:s", $result->msg_timestamp)))), 
     ),  
    ); 
    } 
} 

數據庫和foreach循環的結果的屏幕截圖

提前致謝!

+0

爲什麼你有foreach和for循環迭代?不僅僅是單純的習慣會是合適的嗎? – flauntster

+0

$ form如何知道要呈現多少行?它現在說的部分:「r $ i」 – user3428971

+1

@ user3428971'foreach'將循環遍歷所有記錄。 –

回答

2

您正在爲從數據庫中提取的每一行運行for循環$qCount時間。所以它將最後的row分配給所有的鍵。這可以在沒有for循環的情況下完成。嘗試 -

foreach($query as $key => $result) { 
$form['table']["#rows"]["r".$key] = array(
    'c1' => array(
     'data' => array('#type' => 'item', '#markup' => t('@message', array('@message' => $result->msg_message))), 
    ), 
    'c2' => array(
     'data' => array('#type' => 'item', '#markup' => t('@message', array('@message' => $result->msg_device))), 
    ), 
    'c3' => array(
     'data' => array('#type' => 'item', '#markup' => t('@message', array('@message' => date("d F Y H:i:s", $result->msg_timestamp)))), 
    ),  
); 
} 
+0

OP爲什麼要「嘗試這個」?請添加一個解釋,你做了什麼,爲什麼你這樣做,不僅是爲了OP,而是爲了將來的訪問者SO。 – Rizier123

+0

更新了答案。 @ Rizier123 –

+0

感謝您的答覆和完美。現在很清楚:) – user3428971

相關問題