2016-04-07 2 views
0

からのデータを含むテーブルのNON-SQLテーブル列のソート以下は、単純化したバージョンにコードを削除したものです。私はのためのSQL SELECTの結果を格納しています:SQLクエリ

  • 姓(dlname)
  • カテゴリ(カテゴリ)このデータはデータベースに追加された
  • 日(DATE_ADDED)
  • クライアント名(クライアント)

「days_on_list」というSQL SELECTの外に追加フィールドが追加されました。このフィールドには、データがデータベースに追加されてからの日数が表示され、テーブルにユーザーデータの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);

days_on_list
+0

days_on_list列を並べ替えると、空の表が返され、他の列のいずれかを並べ替えるとデータが返されます。私は、テーブルがjson出力内のすべてのデータにアクセスできる限り、days_on_listによるソートは他のカラムとまったく同じように動作すると考えました。 –

+0

私は4列(days_on_listから離れています)で作業する私の分類では、SQLクエリ内にORDER BY [column here]を追加するという奇妙な状況に陥っています。しかし、days_on_listがクエリの外に存在するので、私は空のテーブルを取得しています –

+0

WOW!出来た!とてもお友達にありがとう! –

答えて

0

は単に現在の日付にdate_addedを比較することによって算出されるので、days_on_listでソートするdate_addedによるソートと全く逆の効果を有していなければなりません。

つまり、実際にはdays_on_listでソートする必要はありません。ユーザーがdays_on_listをソート列として選択した場合は、逆方向ASC/DESCのORDER BY date_addedを使用します。