【问题标题】:How to sort and restrain PHP/HTML/MySQL tables如何对 PHP/HTML/MySQL 表进行排序和约束
【发布时间】:2014-06-28 07:45:33
【问题描述】:

我有两个问题,不知道如何解决。我的一个网站上有以下 PHP/MySQL 表:

   <table>
     <thead>
       <tr>
         <th>1</th>
         <th>2</th>
         <th>Coins</th>
         </tr>
       </thead>
     <tbody>
    <?php
    error_reporting(E_ALL);
    define ( 'MYSQL_HOST',      'localhost' );
    define ( 'MYSQL_BENUTZER',  'USER' );
    define ( 'MYSQL_KENNWORT',  'PASSWORD' );
    define ( 'MYSQL_DATENBANK', 'DATABASE' );
    $db_link = mysqli_connect (
                         MYSQL_HOST, 
                         MYSQL_BENUTZER, 
                         MYSQL_KENNWORT, 
                         MYSQL_DATENBANK
                        );

    $sql = "SELECT * FROM TABLE";
    $db_erg = mysqli_query( $db_link, $sql );
    if ( ! $db_erg )
    {
      die('Ungültige Abfrage: ' . mysqli_error());
    }
    while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))  
    {
           echo "<tr>";
           echo "<td>". $zeile['1'] . "</td>";
           echo "<td>". $zeile['2'] . "</td>";
           echo "<td>". $zeile['coins'] . "</td>";
           echo "</tr>";
           }
           mysqli_free_result( $db_erg );
           ?>
  </tbody>
 </table>

第 3 行仅包含数字。我如何制作桌子:

  1. 将列硬币中的数字从大到小排序[按大小]
  2. 获得“最佳”行后仅显示 20 行?

【问题讨论】:

  • 将查询修改为SELECT * FROM TABLE ORDER BY `&lt;colname&gt;` LIMIT 20
  • 这似乎是在数字的1个字母之后排序,但我希望它在大小之后排序[从最大到最小]。不过谢谢你的回答。
  • 如果您不愿意在您的网站上放置更多的 javascript,您可以随时使用插件。 Sortable 就是其中之一,还有很多其他插件具有一些非常酷的表格功能。

标签: php mysql html-table row


【解决方案1】:

从此更改您的 MySQL 代码:

$sql = "SELECT * FROM TABLE";

到这里:

$sql = "SELECT * FROM TABLE ORDER BY the_name_of_the_column_name_to_sort LIMIT 0,20";

问题在于,当您说“将数据库中的最大数字排序为第一个数字”时,您并没有说明哪个列名将对此进行排序。哪一栏有这些数字?更改上面的查询示例并将the_name_of_the_column_name_to_sort 替换为您要排序的列的实际名称。

读取LIMIT 0,20的部分将从第一项开始返回20项;又名:0。因此您可以通过将列表更改为 LIMIT 20,20LIMIT 40,20 等来增加/分页列表。

编辑:来自原发帖人留下的评论:

它只包含数字。似乎这是在数字的 1 个字母之后对其进行排序。

进入数据库并确保该列是 INT 值,而不是文本或 VARCHAR 列。如果它是一个数字,它应该使用我提供的示例进行数字排序。

【讨论】:

  • 抱歉,该列位于数据库 Coins、表 TABLE 中,名为 coin。它只包含数字。似乎这是在数字的 1 个字母之后对其进行排序。但是我希望它根据大小[从最大到最小]进行排序。谢谢你的回答。
  • 刚刚在 w3schools 上找到了一个几乎类似的更简单的解决方案:ORDER BY CAST(coins AS SIGNED) 感谢您的回答。塞拉斯
  • 很高兴让您走上正轨。但是在CAST(coins AS SIGNED) 的同时,仍然想一想:如果所有的值都是数字,那为什么要跳过那个额外的圈呢?只需更正coins 的存储,使其成为正确的INT 设置。
猜你喜欢
  • 2019-03-28
  • 2012-10-10
  • 2019-04-23
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
  • 2010-10-19
  • 1970-01-01
  • 2011-03-30
相关资源
最近更新 更多