如何在输出模板中包含先前生成的WHILE内容

时间:2014-10-02 21:12:27

标签: php

我从这样的数据库中生成动态内容:

$sql_select_items = $db->query("SELECT * FROM table WHERE ...);

然后它拉出结果,可能是一个或多个,如下所示:

while ($item_details = $db->fetch_array($sql_select_items))
            {

                $items_content = 
                    '<table><tr> '.
                    '<td>RETRIEVED CONTENT HERE</td> '.
                    '</tr></table>';
            }

然后,再往下,我输出生成的内容如下:

   if ($section == 'summary_main')
    {
        $summary_page_content['content'] = 

            $summary_page_content['details'] . 
            $items_content .  
            $summary_page_content['messaging_received'] .
            $summary_page_content['footer']
            ;

        $template->set('members_area_page_content', $summary_page_content['content']);

    }

除了$ items_content生成的内容外,一切都有效,无论是否有1或20,它只显示1个项目。我试图做一个

$items_content . = 

而不是

$items_content = 

但这似乎也没有用,只是给了我一个错误。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

在while循环之前(之前):

$items_content = '';

在while循环中:

$items_content .= '...';

这将确保您的$items_content变量在循环之前存在,然后.=会将您的字符串连接到$items_content的结尾。

“我做错了什么?”

由于你没有发布错误,我只能假设你有一个未定义的变量通知,这是通过在循环之前放置$items_content = '';来解决的,或者你得到一个语法错误,因为你应该是运算符使用是.=而不是. =(请注意空格不对。)

答案 1 :(得分:0)

它不是$db->fetch_array($sql_select_items)它的$sql_selected_items->fetch_array()。以下是我将如何做到这一点:

$table_rows = $db->query("SELECT * FROM table WHERE ...");
if($table_rows->num_rows > 0){
  $table = '<table><tbody>';
  while($row = $table_rows->fetch_object()){
    $table .= "<tr><th>{$row->title_column_name}</th><td>{$row->other_column_name}</td></tr>";
  }
  $table .= '</tbody></table>';
}
else{
  $table = '';
  // no results
}
echo $table;
$table_rows->free(); $db->close();