我有一个函数,显示使用echo在循环中运行的几个div,但是当我把函数放入其中时,在表格单元格中显示我想要的信息,但也在表格旁边
这是我的代码
function getTestRows($appName)
{
$implodeArray =array();
$testsql = "SELECT DISTINCT app_instance_name FROM application_instances WHERE application_name ='$appName' AND environment = 'test' ";
$testres = mysql_query($testsql);
if(mysql_num_rows($testres) >=1)
{
while($test = mysql_fetch_array($testres))
{
echo("<div>".$test['app_instance_name']."</div>");
}
}
else
{
echo("<span>No results found</span>");
}
}
和显示它的回声......
echo("<table id='ver-zebra' style='display: inline-table;'>
<colgroup>
<col class='vzebra-odd' />
<col class='vzebra-even'/>
</colgroup>
<thead>
<th id='appNameHead' OnMouseOver=\"this.style.cursor='pointer';\" onclick=\"openIndiv('$tmp[0]');\">
$tmp[0]
</th>
</thead>
<tbody>
<tr>
<th scope='col' id='test'>
Test
</th>
</tr>
<tr>
<td>
<div style='width: 300px; height: 100px; overflow: auto;'>");
getTestRows($tmp[0]);
echo("</div>
</td>
</tr>
答案 0 :(得分:2)
当你调用echo时,会立即将其放入响应中。让getTestRows()
返回一个代替您的HTML的字符串:
function getTestRows($appName)
{
$ret = '';
$implodeArray =array();
$testsql = "SELECT DISTINCT app_instance_name FROM application_instances WHERE application_name ='$appName' AND environment = 'test' ";
$testres = mysql_query($testsql);
if(mysql_num_rows($testres) >=1)
{
while($test = mysql_fetch_array($testres))
{
$ret .= "<div>".$test['app_instance_name']."</div>";
}
}
else
{
$ret .= "<span>No results found</span>";
}
return $ret;
}
答案 1 :(得分:2)
不要使用echo(或print)输出大块文本。退出PHP模式(?>
)并输出原始HTML要容易得多。如果你必须在PHP中做大块文本,至少使用HEREDOC。它们的行为与双引号字符串完全相同,但不要使用引号作为分隔符,因此当您不希望它们被视为变量时,您不必转义任何除$
符号外的任何内容。