【问题标题】:PHP leaderboard not showing the correct wayPHP排行榜没有显示正确的方式
【发布时间】:2018-09-05 11:37:56
【问题描述】:

我正在与数据库中的人员创建leaderboard。我的网站是用 PHP (PDO) 构建的,问题是我无法将用户从数据库中取出来显示彼此的正确方式。

我用来从数据库中获取信息的函数是:

public function get_klanten(){
    $getKlant = $this->database->query("SELECT * FROM klanten ORDER BY id ASC LIMIT 1");
    $klanten = $this->database->resultset();

    return $klanten;
}

How it is now

我遇到的问题是,它将每条记录一个接一个地放置,而不是放在一个新行上,这就是我添加 LIMIT 1 的原因,但我希望在这种情况下第二个用户 Amet 也可以从数据库中删除。

带有这个的 HTML 是一个不同的文件,是下面的代码。

<thead>
    <tr>
        <th>#</th>
        <th>Lid</th>
        <th><span class="glyphicon glyphicon-sort-by-attributes" aria-hidden="true"></span></th>
        <th><span class="glyphicon glyphicon-ok" aria-hidden="true"></span></th>
    </tr>
</thead>
<tbody>
    <tr>

        <?php
        $klantten = $app->get_klanten();

        foreach ($klantten as $klant) {
            echo '<td>' . $klant['id'] . ' </td>';
            echo '<td>' . $klant['voornaam'] . ' ' . $klant['achternaam'] . ' </td>';
            echo '<td>' . $klant['punten'] . ' </td>';
            echo '<td>' . $klant['punten'] . ' </td>';
        }
        ?>
    </tr> 

    <tr>
        <td>2</td>
        <td>amet</td>
        <td>456</td>
        <td>52</td>
    </tr>

奖金

<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 '<a href="#section' . $i++ . '">' . $topic['onderwerp'] . '</a>';
  }
  ?>
  </div>
  </div>

功能:

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

        return $topics;

    }

我希望这也成为新块中的每条记录。所以每个topic 都是一个新块。您现在可以看到 2 个块我希望每个块从数据库中获取不同的记录

1:https://i.stack.imgur.com/lH8oz.png

【问题讨论】:

  • 建议不要在查询中使用select * from
  • 让我们继续这个评论部分;)我不知道 90 分钟的限制。您编辑了一条评论,说主题出现在同一行。好吧,是的,当您链接多个锚标签(链接)时会发生这种情况。在每个锚点后添加换行符会有所帮助:&lt;br&gt;
  • mm 我不确定你是否得到了我真正想要的东西让我解释一下:你看到了这 2 个区块在同一个街区。但我希望数据库中的每条记录都位于不同的块中。 @Cashbee
  • 所以每个 klant 都属于一个主题?并在每个主题下显示其所有 klanten?
  • 请使用您在 cmets 中编写的所有新信息编辑您的问题,我认为这将有助于使其更易于理解。您对“奖金”的表述方式根本不清楚您想要什么。

标签: php html css mysql foreach


【解决方案1】:

从查询中删除限制 1,然后移动您的 TR 标签,使其位于您的 foreach 循环内。

   <?php
   $klantten = $app->get_klanten();

foreach ($klantten as $klant) {
  echo '<tr>';
  echo '<td>' . $klant['id'] . ' </td>';
  echo '<td>' . $klant['voornaam'] . ' ' . $klant['achternaam'] . ' </td>';
  echo '<td>' . $klant['punten'] . ' </td>';
  echo '<td>' . $klant['punten'] . ' </td>'; 
  echo '</tr>';
   }

   ?>

【讨论】:

  • 谢谢!这解决了它!我有一个小问题,我知道这不是问题的一部分,但也许你可以帮忙,我想让它按punten 列中的最高数字排序,你知道如何排序吗?这样punten 最高的记录就在上面@Darloz
  • @Tomisnnotdumbmb ... ORDER BY punten DESC 而不是 ... ORDER BY id ASC
  • @Cashbee 你可以看看奖金部分吗?
  • @Tomisnnotdumbmb 再次从 sql 中删除 LIMIT 1,并删除行 if($j &gt;= 1) continue;。你也不需要$j var
  • @Cashbee 然后呢?因为它仍然没有做我想要的,而不是我会在同一行而不是在不同的街区
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 2015-06-23
  • 2018-07-18
  • 2023-03-16
  • 2013-10-31
  • 2016-02-08
  • 1970-01-01
相关资源
最近更新 更多