【问题标题】:PHP Increment number, each time a new div is createdPHP增量数,每次创建一个新的div
【发布时间】:2011-09-04 10:32:06
【问题描述】:

基本上我有一个 PHP 脚本,它为数据库中的每个项目创建一个 div,但我希望在创建的每个 div 中都有一个“排名”数字,即:

-----------------
Rank: 1      < div 1
-----------------
Rank: 2      < div 2
-----------------
Rank: 3      < div 3
-----------------

等等..

这是我当前的代码...

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

    $name = stripslashes($row['name']);
    $description = stripslashes($row['description']);
    $votes = stripslashes($row['votes']);
    $id = ($row['id']);
    $link = ($row['link']);
    $rank = 0;
    ?>

    <div class="site" id="site">
    <u><center>
    <strong><a href="<?php echo $link ?>" target="_blank"><?php echo $name; ?></a></strong></u>
    </font></center>
    <p>Rank:<?php echo $rank++ ; ?></p>
    <p><b><?php echo $description; ?></b><br />
    Votes:<b> <?php echo $votes; ?></b><br />
    </p>
    </div>

   <center>
    <?php
}
?>

但这不起作用,任何帮助将不胜感激。 (此外,div 会在多个页面上继续)。

【问题讨论】:

  • 您在每次循环时都将 $rank 设置为 0。另外,您可能必须在 echo 之外执行 $rank++ - 我不确定 $rank++ 是否真的返回新数字(但不要引用我的话)
  • 无需将其放在回声之外,但实际上初始化应该发生在循环之外。仅供参考:$var++ 返回预增量值,++$var 返回后增量值。
  • 那么回显 $rank++ 每次循环都会回显 0
  • 你也有一个孤立的关闭标签
  • 好吧,这行得通,但是现在我遇到了这个问题,当用户转到下一页时,它又从一个开始(点击底部的下一步:aviatex14.co.uk/webmash/top.php

标签: php mysql html increment ranking


【解决方案1】:

$rank = 0; 放在循环之外。否则它将始终为 0。

【讨论】:

    【解决方案2】:

    您在循环中定义了$rank-变量,因此在每个循环中它都使用值0 定义。在循环外定义反变量,在循环内增加。

    【讨论】:

      【解决方案3】:

      排名需要在循环之外,否则您每次都会将其重置为 0

      $rank = 0;
      while($row = mysql_fetch_array($result)) {
      
          $name = stripslashes($row['name']);
          $description = stripslashes($row['description']);
          $votes = stripslashes($row['votes']);
          $id = ($row['id']);
          $link = ($row['link']);
          ?>
      
          <div class="site" id="site">
          <u><center>
          <strong><a href="<?php echo $link ?>" target="_blank"><?php echo $name; ?></a></strong></u>
          </font></center>
          <p>Rank:<?php echo $rank ; ?></p>
          <p><b><?php echo $description; ?></b><br />
          Votes:<b> <?php echo $votes; ?></b><br />
          </p>
          </div>
      
         <center>
          <?php
           $rank++;
      }
      ?>
      

      补充意见:

      为此使用偏移量,例如

      $result_per_page = 5; // this is the number of result you show per page
      $offset = isset($_GET['id'])? (int)$_GET['id'] : 1;
      $rank = $offset * $result_per_page;
      

      【讨论】:

      • 谢谢,发挥了魅力,但现在我遇到了这个问题......aviatex14.co.uk/webmash/top.php(点击下一步,看看排名会发生什么)
      • 我为我的答案添加了更新。这将帮助您抵消每一页
      • 对不起,如果我变得很痛苦,但我不知道在哪里使用该代码,因为我认为它与其他一些代码相矛盾,这是用于整个事情(矛盾的位就在 SQL 连接的下方)pastebin.com/5Q62Zv1N
      • 只需像这样替换它:$rank = ($page-1) * $site_number 你已经有了其余的代码 :) 没有痛苦!
      【解决方案4】:

      $rank 需要在while 语句之外定义。每次循环它都会重置为零。此外,在其他地方增加 $rank - 它会使代码更加健壮和易懂。

      【讨论】:

        猜你喜欢
        • 2013-08-11
        • 2018-10-29
        • 2019-01-19
        • 2021-12-16
        • 2020-06-12
        • 1970-01-01
        • 2017-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多