PHP /数据表:数字排序为文本


PHP / Datatables: numbers getting sorted as text

我正在使用数据表样式表,我用PHP填充。

除了包含amount的列外,一切正常。如果我点击这一列的datatable列标题为了按这一列对表进行排序它会排序,但只以文本而不是数字,这样20就会出现在3之前,等等。

在PHP中是否可以通过改变格式来防止这种情况?

示例单元格:

<td class="colAmount ralign"><?php echo number_format(doubleval($requests->amount), 2, ".", ","); ?></td>

如果我的数据库中的金额($requests->amount)是100000,那么上面将把它格式化为100,000.00,因为我需要用千位和小数分隔符来显示它——这可能被解释为文本。

提前谢谢你,蒂姆。

您可以在SQL查询中添加以下内容:

ORDER BY YourField + 0

这将按数字顺序输出

您可以使用数据表的正交数据特性。这样,您就可以使用不同的格式进行显示和排序。这里有两种方法,我选择HTML 5样式,它使用data属性(来自那里的示例):

<tr>
    <td data-search="Tiger Nixon">T. Nixon</td>
    <td>System Architect</td>
    <td>Edinburgh</td>
    <td>61</td>
    <td data-order="1303682400">Mon 25th Apr 11</td>
    <td data-order="3120">$3,120/m</td>
</tr>

在本例中,最后两列的数据将使用data-order属性进行排序。不需要进一步的配置,Datatables应该自动检测这些属性