2016-04-07 67 views
0

下面我已將我的代碼簡化爲簡化版本。我存儲SQL SELECT結果:在包含來自SQL查詢的數據的表中對非SQL表列進行排序

  • 姓氏(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);

+0

當我對days_on_list列進行排序時,它將返回一個空表格,並在我對其他列中的一個進行排序時返回數據。我認爲只要表可以訪問json輸出中的所有數據,那麼按days_on_list排序的行爲將與其他列完全相同。 –

+0

我處於奇怪的情況下,我的排序工作的4列(除days_on_list以外),我在SQL查詢中添加一個ORDER BY [列在這裏]。但是因爲days_on_list存在於查詢之外,所以我得到一個空表 –

+0

WOW!有效!非常感謝你的朋友! –

回答

0

由於days_on_list通過簡單地比較date_added爲當前日期,由days_on_list排序應該具有完全一樣date_added排序相反的效果進行計算。

換句話說,您實際上並不需要按days_on_list排序。如果用戶選擇days_on_list作爲排序列,則只需使用ORDER BY date_added(與ASC/DESC相反的方向)。

相關問題