2011-07-25 79 views
1

我有一個顯示使用回聲通過一個循環中運行幾個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> 

enter image description here

+1

你確定這個函數只被調用一次嗎? –

+0

您向我們展示的第一個回聲之前的代碼是什麼?鑑於HTML,輸出以及我所看到的,getTestRows()會在你發佈的代碼之前被調用。 –

+0

本文可能對您有用:[Flat PHP遇到Symfony時](http://symfony.com/doc/current/book/from_flat_php_to_symfony2.html) - 它顯示瞭如何分離每個數據管理和輸出其他容易,這將幫助你防止這樣的問題。 – hakre

回答

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; 
} 
+0

...或將其重命名爲'printTestRows()' –

+0

@Chris:仍然不會改變它的功能。 –

+0

是的,但它使它可讀。我強調它說「得到」,但顯然做了一個「印刷」。一致性,必須讓我覺得。 –

2

不要文本的回聲(或打印)輸出大塊。只需退出PHP模式(?>)並輸出原始HTML即可。如果您在PHP中使用大塊文本,至少應使用HEREDOC。它們的作用與雙引號字符串完全相同,但不要使用引號作爲分隔符,因此,如果不希望將它們視爲變量,則不必使用任何符號來標記$符號。

相關問題