下面我将我的代码简化为简化版本。我正在存储SQL SELECT结果:
我在SQL SELECT之外添加了一个名为'days_on_list'的附加字段。此字段显示自数据添加到数据库以来的天数,使表格输出5列用户数据。所有5个栏目都很便宜。
我正在使用服务器端JSON并且已经成功地将其显示在表中并对5列中的4列执行排序。 问题是我无法对'days_on_list'字段进行排序,因为包含SQL代码的PHP文件只允许我对选择查询中的4个字段进行排序。有没有办法让'days_on_list'列在表格中可以排序?我知道我可以将这个字段添加到sql表中,但是我必须在服务器上运行一个预定的事件来每天更新一次(我不熟悉)。
是否有其他方法可以进行这种灵活的表格排序?
对于问题标题感到抱歉(可能会令人困惑),我无法将其置于问题中。
/*SQL CODE ABOVE HERE STORES SELECT RETURNS IN $result*/
$cart = array();
$i = 0; //index the entries
// get variables from sql result.
if ($num_rows > 0) { //if table is populated...
while ($row = mysqli_fetch_assoc($result)) {
//calculate days on list by getting the number of days from
//the 'date_added' to today
$date1 = date_create($row['date_added']);
$today = date_create(date("d-m-Y"));
$interval = date_diff($date1, $today);
$doty = $interval - > format("%a");
$cart[$i] = array(
"dlname" => htmlspecialchars($row['dlname']),
"category" => htmlspecialchars($row['category']),
"date_added" => htmlspecialchars($row['date_added']),
"client" => htmlspecialchars($row['client']),
"days_on_list" => $doty, //date_added to now
);
$i = $i + 1; //add next row
}
//encoding the PHP array
$json_server_pagination_data = array(
"total" => intval($num_rows),
"rows" => $cart, //array data
);
}
echo json_encode($json_server_pagination_data);
答案 0 :(得分:0)
由于days_on_list
只是通过简单地将date_added
与当前日期进行比较来计算,因此按days_on_list
排序应与date_added
排序完全相反。
换句话说,您实际上并不需要按days_on_list
排序。如果用户选择days_on_list
作为排序列,只需使用ORDER BY date_added
(在ASC / DESC的相反方向)。