且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

显示用户在排行榜表php mysql中的排名?

更新时间:2022-12-25 17:58:48

注意:

  • 我删除了您的for loop(),而是使用while loop()进行查询.我知道您通过查询结果的数量来循环它,但是它只会得到第一行的值.如果您分配当前的循环号并将其作为数组附加到变量,也许是可行的.
  • 我使用了一个名为$ranking的计数器,该计数器将在每个循环中递增(已删除$num_results,因为您不再需要它了.)
  • 您正在以错误的方式混合使用PHP和HTML.在继续使用HTML之前,先用?>将PHP括起来.
  • 清理了一些代码.
  • 第二个给定代码的目的是什么?如果您已经在尝试在第一个代码中显示数据?但是我仍然尝试通过获取数据并使用while loop来显示数据(如果查询正确).
  • 确保查询正确(连接凭据,数据库名称,表名称,列名称等)
  • Note:

    • I removed your for loop() and instead use a while loop() for your query. I know you loop it by the number of results of the query, but it will only get the value of the first row. Maybe it is feasible if you assign the current number of the loop and attach it to the variable as array.
    • I used a counter named $ranking that will increment on every loop (removed the $num_results, for you don't need it anymore).
    • You are mixing PHP and HTML the wrong way. Enclosed PHP by ?> before proceeding with an HTML.
    • Cleaned up some of your codes.
    • What is the purpose of your second given code? If you are already trying to display the data in your first code? But I still try to display the data (if the query is correct) by fetching the data and using while loop.
    • Make sure that your queries are correct (credentials of your connection, database name, table name, column name, etc.)
    • 您的固定代码:

 <?php

   require_once 'header.php';
  // Send variables for the MySQL database class.
  $database = mysql_connect('localhost', 'root', 'password') or die('Could not connect: ' . mysql_error());
  mysql_select_db('robinsnest') or die('Could not select database');

  $query = "SELECT * FROM `members` ORDER by `quiz_score` DESC LIMIT 10";
  $result = mysql_query($query) or die('Query failed: ' . mysql_error());

  $num_results = mysql_num_rows($result);  
  $ranking = 1;

?>

  <div class="container marketing">
    <div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
      <table class="gradienttable">
        <tr>
          <th>Position</th>
          <th>User Name</th>      
         <th>Score</th>
        </tr>
  <?php
         while($row = mysql_fetch_array($result)){
           ?>
           <tr>
             <td><?php echo $ranking; ?></td>
             <td><?php echo $row['user']; ?></td>       
             <td><?php echo $row['quiz_score']; ?></td>
           <?php
             $ranking = $ranking + 1; /* INCREMENT RANKING BY 1 */
           ?>
           </tr>
       <?php
         } /* END OF WHILE LOOP */
       ?>

      </table>
    </div>
  </div>

<hr class="featurette-divider">
  <footer>
    <p class="pull-right"><a href="#">Back to top</a></p>
    <p>2015 Students-NCI, &middot; <a href="#">Privacy</a> &middot; <a href="#">Terms</a></p>
  </footer>

</body>
</html>

您输入的第二个代码:

<?php
  require_once 'header.php';
  $database = mysql_connect('localhost', 'root', 'password') or die('Could not connect: ' . mysql_error());
  mysql_select_db('robinsnest') or die('Could not select database');

  $query = "SELECT  user, quiz_score, FIND_IN_SET( quiz_score, (    
  SELECT GROUP_CONCAT( quiz_score
  ORDER BY quiz_score DESC ) 
  FROM members )
  ) AS rank
  FROM members
  WHERE user =  '$user';";

    $result = mysql_query($query) or die('Query failed: ' . mysql_error());

    $num_results = mysql_num_rows($result);  

    while($row = mysql_fetch_array($result)){
?>    
      <p><?php echo $row['user']." - ".$row['quiz_score']; ?></p>
  <?php
    } /* END OF WHILE LOOP */
  ?> 

  <hr class="featurette-divider">

  <footer>
    <p class="pull-right"><a href="#">Back to top</a></p>
    <p>2015 Students-NCI, &middot; <a href="#">Privacy</a> &middot; <a href="#">Terms</a></p>
  </footer>';

</body>
</html>

建议: