php while循环回显循环内容之外的元素

时间:2017-02-16 15:57:10

标签: php html loops html-table anchor

我网站上的论坛页面使用PHP创建一个表,然后使用while循环从数据库中填充它。这样可以正常工作,但我已经尝试移动锚点,从帖子的标题周围标记链接到表格中帖子的整个第一部分。为此,它将执行以下步骤:

  1. 打开表格标签[OUTSIDE OF LOOP]
  2. 回声标题[外循环]
  3. 启动WHILE循环,为每个找到的帖子创建另一个帖子部分。
  4. 创建表格行
  5. 创建表格数据
  6. 回声内容
  7. 关闭表格数据
  8. 重复步骤5-7更多关于发布日期部分
  9. 关闭表格行
  10. 关闭表[OUSTIDE OF LOOP]
  11. 它应该使所有第一部分的链接都可以点击,它们应该在这样的表格内:

    <table>  <--- *THIS IS BEFORE THE LOOP, IT GETS RUN ONCE ONLY* -->
        <WHILE *do this like 5 times or something*>
          <tr>
            <a *category link*>
              <td>
                *content for the 'td' which is taken from the DB*
              </td>
              <td>
                *content for the 'td' which is taken from the DB*
              </td>
            </a>
          </tr>
          <ENDWHILE>
    </table>
    

    然而,在实践中,它们最终会出现在桌面之外,如屏幕截图所示:

    preview showing anchors outside of table.

    有人可以解释一下这个以及如何解决它吗?

    echo '<table class="forumTable">
      <tr>
      <th>Category</th>
      <th>Last topic</th>
      </tr>';
    
    while($row = mysqli_fetch_assoc($catResult)){
      echo '<tr>';
      echo '<a href="category.php?id=' . htmlspecialchars($row['catID']) . '"><td class="catDesc">';
      echo '<h3>' . $row['catName'] . '</h3>' . $row['catDesc'];
      echo '</td>';
      echo '<td class="catTime">';
      $getTops = "SELECT topicID, topicSubject, topicDate, topicCat FROM topics WHERE topicCat = " . $row['catID'] . " ORDER BY topicDate DESC LIMIT 1";
      $topResult = mysqli_query($connect, $getTops);
      if(!$topResult){
        echo '<p style="margin-top: 75px;">The last topic could not be displayed, please try again later.</p>';
      }
      else{
        if(mysqli_num_rows($topResult) == 0){
          echo '<p>No topics</p>';
        }
        else{
          while($topRow = mysqli_fetch_assoc($topResult)){
            echo '<a href="topic.php?id=' . $topRow['topicID'] . '">' . $topRow['topicSubject'] . '</a> at ' . $topRow['topicDate'];
          }
        }
      }
      echo '</td></a>';
      echo '</tr>';
    }
    echo '</table>';
    

2 个答案:

答案 0 :(得分:1)

由于源页面确认锚点位于您放置它们的位置,但浏览器会移动它们,您可以: - 包含td表格单元格内的链接 - 使用替代方法将链接添加到您想要的位置html - table row like a link

答案 1 :(得分:-1)

您是否尝试从浏览器获取页面?看起来怎么样? 我认为浏览器不允许您在没有<a>的情况下直接将<table>放入<tr><td> </td></tr>