【问题标题】:PHP database output not showing the correct wayPHP数据库输出未显示正确的方式
【发布时间】:2018-03-27 17:31:58
【问题描述】:

我正在用我的数据库中的主题创建一个论坛。我的网站是用 PHP (PDO) 构建的,问题是我无法将主题从数据库中取出以在每个不同的块中显示正确的方式。

<div class="col-md-6">
         <div class="well dash-box">
           <h2><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> Stel jezelf voor</h2>
           <h5><a href="https://tom.lbmedia.nl/onderwerp"> Laat wetn wie jij en je business zijn</a></h5>
   </div>
   </div>
  <div class="col-md-6">
  <div class="well dash-box">
  <h2><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> 12</h2>
  <?php
  $toppics = $app->get_topics();
  $i = 0;
  $j = 0;
  foreach ($toppics as $topic) {
  if($j >= 1) continue;
 echo '<a href="#section' . $i++ . '">' . $topic['onderwerp'] . '</a>';
  $j++;
  }
  ?>
  </div>
  </div>

功能:

  public function get_topics(){
        $getTopic = $this->database->query("SELECT * FROM topics ORDER BY id DESC LIMIT 1");
        $topics = $this->database->resultset();

        return $topics;

    }

我希望这也成为新块中的每条记录。在代码中,您可以看到我尝试了一些东西,但它不是正确的方法或它不起作用。我知道j++ 不好,但如果我删除它和LIMIT 1 函数它仍然不起作用

更新

如果我使用答案中的代码,因为它看起来像这样,而不是 2 个不同的块。

<?php
  $toppics = $app->get_topics();
  $i = 0;
  foreach($toppics as $topic){
     echo '<div>';
     echo '<h3>'.$topic['onderwerp'].'</h3><br>'; 
     echo '<a href="#section' . $i++ . '">'  .$topic['omschrijving'].'</a>';
     echo '</div><br>';
  }
 ?>

【问题讨论】:

  • 如果您请求多个主题,为什么要在查询中设置LIMIT 1
  • 正如我在问题中所说的,我可以把它放在一边,所以不要为此烦恼

标签: php html mysql foreach


【解决方案1】:

首先:由于您想从数据库中获取多个主题,因此您必须从查询中删除 LIMIT 1 并在 foreach 循环中删除 if($j &gt;= 1) continue;,因为它们都将您的输出限制为仅 1 个主题。

$toppics(正确拼写:主题;P)的 foreach 循环中,您目前只回显一个锚标记(链接),但您想要的是(在这里使用您的话)一个“块”。无论您希望该块看起来如何,定义它的位置都在该 foreach 循环中。

现在我不知道您使用/想要使用哪些元素、类或样式,所以我将制作一个由标题和链接组成的块的示例:

//rename $topic keys to the names of your DB columns
foreach($toppics as $topic){
    echo '<div>';
    echo '<h3>'.$topic['title'].'</h3><br>'; 
    echo '<a href="#section'.$topic['id'].'">'.$topic['link_text'].'</a>';
    echo '</div><br>';
}

我知道我的解决方案看起来与您给定的图像不完全相同,但它应该能够说明您可以如何以及在何处构建块。

我认为,当您了解 HTML 的基础知识时,这个问题应该很容易解决,所以我真的建议您在从事大型项目之前多学习一点 HTML。


编辑问题被编辑后:
正如我在回答中提到的,my solution will not look exactly like your given image 因为I don't know what elements, classes or stylings you use。现在剩下的问题是使用正确的 html 标签、类和样式。

生成的 div 的父元素的样式似乎与您希望单个块的外观相同。
所以你可以做的是删除父元素并将其用作生成的 div 的替换,如下所示:

<div class="col-md-6">
         <div class="well dash-box">
           <h2><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> Stel jezelf voor</h2>
           <h5><a href="https://tom.lbmedia.nl/onderwerp"> Laat wetn wie jij en je business zijn</a></h5>
   </div>
   </div>
  <div class="col-md-6">
  <!--<div class="well dash-box">-->
  <h2><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> 12</h2>
  <?php
  $toppics = $app->get_topics();
  $i = 0;
  foreach($toppics as $topic){
      echo '<div class="well dash-box">';
      echo '<h3>'.$topic['onderwerp'].'</h3><br>'; 
      echo '<a href="#section' . $i++ . '">'  .$topic['omschrijving'].'</a>';
      echo '</div><br>';
  }
  ?>
  <!--</div>-->
  </div>

旁注:我不同意您构建 href 属性 #section1。在构建这些部分时,您必须知道前一个 foreach 循环中的确切索引。相反,使用主题本身的一些属性,可能是它的 ID、标题或描述(就像我在第一个代码块中所做的那样)。这样,当您构建部分时,您可以轻松知道如何设置元素 id 属性。

【讨论】:

  • 谢谢!你能再看看这个问题吗?我更新了它还有一个小问题
  • 谢谢分配它的固定!您是否还知道如何使用表单制作弹出窗口以添加新主题?我知道如何制作表格,但在数据库中获取它的代码我不知道,它与POST 有关
  • 查看模式和 AJAX
猜你喜欢
  • 1970-01-01
  • 2017-02-09
  • 2017-04-04
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 2013-05-15
相关资源
最近更新 更多