【发布时间】: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 扩展的自动化代码。上面我添加了代码的排序部分。