在包含来自SQL查询

时间:2016-04-07 21:16:20

标签: php mysql json sorting

下面我将我的代码简化为简化版本。我正在存储SQL SELECT结果:

  • 姓氏(dlname)
  • 类别(类别)
  • 将此数据添加到数据库(date_added)
  • 的日期
  • 客户名称(客户端)

我在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);

1 个答案:

答案 0 :(得分:0)

由于days_on_list只是通过简单地将date_added与当前日期进行比较来计算,因此按days_on_list排序应与date_added排序完全相反。

换句话说,您实际上并不需要按days_on_list排序。如果用户选择days_on_list作为排序列,只需使用ORDER BY date_added(在ASC / DESC的相反方向)。