【问题标题】:Sorting Integer in MySQL-PHP在 MySQL-PHP 中对整数进行排序
【发布时间】:2015-03-10 20:09:26
【问题描述】:

我有一个网页http://skywateryachts.com/disp_new.php,在那里我毫无问题地格式化了货币。

但是,所列价格的排序似乎是按前几位而不是总价值的顺序排列的。例如,按降序排列时,$110,000 出现在 $110,900,000 之前。

MySQL 字段类型是 INT,我刚刚为货币符号格式化了 SELECT 语句。

我在 WYSISWYG Webbuilder 中使用 dataviewer 扩展并自定义格式化代码。但我是自定义 MySQL 的新手。

我认为消除排序功能并自己做会更好,但首先想知道数字排序可能存在什么问题。

谢谢

相关代码:

<script type="text/javascript">
$(document).ready(function()
{
   $.fn.alternateRowColors = function()
   {
      $('tbody tr:odd', this).removeClass('even').addClass('odd');
      $('tbody tr:even', this).removeClass('odd').addClass('even');
      return this;
   };
   $('table.sortable').each(function()
   {
      var $dataviewer = $(this);
      $dataviewer.alternateRowColors();
      $('th', $dataviewer).each(function(column)
      {
         var $header = $(this);
         var findSortKey;
         findSortKey = function($cell)
         {
            return $cell.find('.sort-key').text().toUpperCase() + ' ' + $cell.text().toUpperCase();
         };
         if (findSortKey)
         {
            $header.addClass('clickable').hover(function()
            {
               $header.addClass('hover');
            }, function()
            {
               $header.removeClass('hover');
            }).click(function()
            {
               var sortDirection = 1;
               if ($header.is('.sorted-asc'))
               {
                  sortDirection = -1;
               }
               var rows = $dataviewer.find('tbody > tr').get();
               $.each(rows, function(index, row)
               {
                  var $cell = $(row).children('td').eq(column);
                  row.sortKey = findSortKey($cell);
               });
               rows.sort(function(a, b)
               {
                  if (a.sortKey < b.sortKey) return -sortDirection;
                  if (a.sortKey > b.sortKey) return sortDirection;
                  return 0;
               });
               $.each(rows, function(index, row)
               {
                  $dataviewer.children('tbody').append(row);
                  row.sortKey = null;
               });
               $dataviewer.find('th').removeClass('sorted-asc').removeClass('sorted-desc');
               if (sortDirection == 1)
               {
                  $header.addClass('sorted-asc');
               }
               else
               {
                  $header.addClass('sorted-desc');
               }
               $dataviewer.find('td').removeClass('sorted').filter(':nth-child(' + (column + 1) + ')').addClass('sorted');
               $dataviewer.alternateRowColors();
            });
         }
      });
   });

<div id="dataviewer" style="position:absolute;overflow:auto;left:269px;top:390px;width:803px;height:980px;z-index:46">
<?php
$mysql_host = 'localhost';
$mysql_user = 'xxxx';
$mysql_password = 'xxxx';
$mysql_database = 'xxxx';
$mysql_table = 'boats';
$db = mysql_connect($mysql_host, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $db);
$sql = "SELECT Date_Listed, Est_DOM, LOA, Builder, Built, Currency, concat('$', format(Listing_Price, 0)), NFS_USA FROM ".$mysql_table;
$result = mysql_query($sql, $db);
?>
<table cellpadding="0" cellspacing="1" width="100%" class="sortable paginated">
<thead>
   <tr>
      <th>List Date</th>
      <th> Est DOM</th>
      <th> Length</th>
      <th> Builder</th>
      <th> Year Built</th>
      <th> Currency</th>
      <th> Listing Price</th>
      <th> NFS USA</th>
   </tr>
</thead>
<tbody>
<?php
while ($row = mysql_fetch_row($result))
{
   echo "   <tr>\n";
   foreach ($row as $cell)
   {
      echo "      <td>" . $cell . "</td>\n";
   }
   echo "   </tr>\n";
}
?>
</tbody>
</table>
</div>

【问题讨论】:

  • 请向我们展示您的查询。
  • 就在这里,看来彼得可能正在做某事。正如我所说,它是 WYSIWYG Webbuilder 设计器使用 dataview 扩展的自动化代码。上面我添加了代码的排序部分。

标签: php mysql sorting integer


【解决方案1】:

您可能正在按SELECT 的字段列表中的格式化列进行排序。相反,在您的 ORDER BY 中直接从您的表中引用整数列的名称。

如果你有这个:

SELECT FORMAT(foo, '$99,999,999.99')
FROM bar
ORDER BY 1

改为这样做

SELECT FORMAT(foo, '$99,999,999.99')
FROM bar
ORDER BY foo

(忽略格式化的实际语法——我总是需要查找这些东西以获得正确的函数和语法,我只是举个例子。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-23
    • 2016-11-27
    • 2012-04-09
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多