【问题标题】:PHP Outputs Multiple HTML TablesPHP 输出多个 HTML 表格
【发布时间】:2014-04-10 01:23:48
【问题描述】:

我对 PHP 还很陌生,想知道如何将这些信息输出到一个表中。

<?php

$url='mysite.com';
$content = simplexml_load_file($url);

foreach ($content->children() as $alarm) {

$severity = $alarm['severity'];
$id = $alarm ['id'];


echo "<table boarder=1>";
echo "<tr><th>Header1</th><th>ID</th><th>Header2</th><th>Header3</th><th>Header4</th>      <th>Header5</th></tr>";

echo "<td style=\"text-align:center\" width=100px >";
echo $severity;
echo "</td><td style=\"text-align:center\" width=100px >";
echo $id;

echo "</td><td style=\"text-align:center\" width=100px >";
echo $alarm->nodeId;
echo "</td><td style=\"text-align:center\" width=100px >";
echo $alarm->nodeLabel;

echo "</td><td style=\"text-align:center\" width=100px >";

echo $alarm->lastEventTime;
echo "</td><td style=\"text-align:center\" width=500px >";
echo  $alarm->logMessage;
echo "</td>";
echo "</table>";
}

?>

这是输出...

标题 1 标题 2 标题 3 标题 4 标题 5** $severity $id $alarm->nodeID $alarm->$nodeLabel $$alarm->logmessage 标题 1 标题 2 标题 3 标题 4 标题 5 $severity $id $alarm->nodeID $alarm->$nodeLabel $$alarm->logmessage 标题 1 标题 2 标题 3 标题 4 标题 5 $severity $id $alarm->nodeID $alarm->$nodeLabel $$alarm->logmessage

html输出如下...

<table boarder="1">...</table>
<table boarder="1">...</table>
<table boarder="1">...</table>
<table boarder="1">...</table>

我只是想要它,所以它在一张表中,标题仅在顶部。

标题 1 标题 2 标题 3 标题 4 标题 5** $severity[0] $id $alarm->nodeID $alarm->$nodeLabel $$alarm->logmessage $severity[1] $id $alarm->nodeID $alarm->$nodeLabel $$alarm->logmessage $severity[2] $id $alarm->nodeID $alarm->$nodeLabel $$alarm->logmessage

任何关于如何将这些信息全部放入一个表格或最佳实践的建议都会很棒。

【问题讨论】:

  • 谁否决了这个问题?它有足够的信息,并显示了编码的尝试(只是对它在做什么的理解很差)。
  • 始终理解,如果您将table 放在for loop 内,则存在的元素数量将是迭代形成的表格数量。因此,您应该在 for 循环开始之前打印表标签及其表头,即第一个 tr 标签,并在 for 循环结束后关闭 table 标签,在 for 循环中,您应该只保留用于迭代的代码并打印每一行
  • 非常感谢您对此的澄清。我知道我已经接近了,但跳过了放置我的标题的地方。谢谢

标签: php html html-table echo


【解决方案1】:
<?php
    echo "<table boarder=1>";
    echo "<tr><th>Header1</th><th>ID</th><th>Header2</th><th>Header3</th><th>Header4</th>      <th>Header5</th></tr>";

    foreach ($content->children() as $alarm) {

        echo "<tr><td style=\"text-align:center\" width=100px >".$alarm->severity."</td><td style=\"text-align:center\" width=100px >".$alarm->id."</td><td style=\"text-align:center\" width=100px >".$alarm->nodeId."</td><td style=\"text-align:center\" width=100px >".$alarm->nodeLabel."</td><td style=\"text-align:center\" width=100px >".$alarm->lastEventTime."</td><td style=\"text-align:center\" width=500px >".$alarm->logMessage."</td></tr>";
    }

    echo "</table>";

    ?>

【讨论】:

    【解决方案2】:

    把你的

    echo "<table boarder=1>";
    echo "<tr><th>Header1</th><th>ID</th><th>Header2</th><th>Header3</th><th>Header4</th>      <th>Header5</th></tr>";
    

    在您的 foreach() 条件之前,而不是在里面

    【讨论】:

      【解决方案3】:

      只需打印&lt;table boarder=1&gt;foreach 循环之前的标题,然后在完成后打印出结束表标记。还可以将$content-&gt;children() 封装在表格行标签中,以便更好地衡量。

      <?php
      
      echo "<table boarder=1>";
      echo "<tr><th>Header1</th><th>ID</th><th>Header2</th><th>Header3</th><th>Header4</th>      <th>Header5</th></tr>";
      
      foreach ($content->children() as $alarm) {
          $severity = $alarm['severity'];
          $id = $alarm ['id'];
      
          echo "<tr><td style=\"text-align:center\" width=100px >";
          echo $severity;
          echo "</td><td style=\"text-align:center\" width=100px >";
          echo $id;
      
          echo "</td><td style=\"text-align:center\" width=100px >";
          echo $alarm->nodeId;
          echo "</td><td style=\"text-align:center\" width=100px >";
          echo $alarm->nodeLabel;
      
          echo "</td><td style=\"text-align:center\" width=100px >";
      
          echo $alarm->lastEventTime;
          echo "</td><td style=\"text-align:center\" width=500px >";
          echo  $alarm->logMessage;
          echo "</td></tr>";
      }
      
      echo "</table>";
      
      ?>
      

      【讨论】:

      • 你打败了我。很高兴看到你了解他失踪的
      • 太棒了!非常感谢您的快速响应。
      • 用户,请记住点击您使用的答案旁边的复选标记。总是这样做,这样人就可以获得信用
      • 谢谢布拉德!我试图投票,但没有足够的分数。刚刚更新。再次感谢您的帮助。
      猜你喜欢
      相关资源
      最近更新 更多
      热门标签