while循环中的打印文本无法按预期运行

时间:2013-09-18 09:25:16

标签: php

此代码:

while ($row = mysql_fetch_assoc($result)) {

    $username=$row["username"];
    $currentroles[$username]=$row["role"];

    print "abc";

    echo "<tr><td>$username</td>";

    echo "def";

    echo "<td><select name=\"role[$username]\">";

    if($row["role"]=='admin')
    {
        echo "<option value=\"admin\">admin</option>";
        echo "<option value=\"user\">user</option>";
    }
    else if($row["role"]=='user')
    {
        echo "<option value=\"user\">user</option>";
        echo "<option value=\"admin\">admin</option>";
    }

   echo "</select></td></tr><br/>";
}

制作此页面:

page produced by the code

(这只是页面的一部分,有很多用户的下拉列表为“abcdef”)

我不知道为什么页面顶部的“abc”,“def”字符串。如果我把它们拿出来,页面中有空行(而不是“abcdef”),即使我从未打印<br>。这是怎么回事?

2 个答案:

答案 0 :(得分:4)

这是因为它们打印在表格中,但在标记<tr><td>之间。此文本显示在表格之前。例如:

<table>
  <tr>
    <td>a</td>
  </tr>
  b
  <tr>
    <td>c</td>
  </tr>
</table>

会像

一样

B'/ P>

C

答案 1 :(得分:3)

字符串abcdef会在页面顶部呈现,因为它们不在您的表格中。将它们放入某个单元格<td>中它将解决您的问题 - 文本将在表格中。