2017-06-14 38 views
1

我正在显示带有以下代码的表记录。记录显示的顺序不正确(asc/desc)。显示表记录按时间顺序降序

// storing request (ie, get/post) global array to a variable 
$requestData= $_REQUEST; 


$columns = array( 
// datatable column index => database column name 
    0 =>'***', 
    1 => '***', 
    2=> '***', 
     3=> 'time', 
     4=> '***' 
); 

// getting total number records without any search 
$sql = "SELECT * "; 
$sql.=" FROM details where account_id=".$_SESSION['admin_id']; 

$query=mysqli_query($conn, $sql) or die("server_response.php: get details"); 
$totalData = mysqli_num_rows($query); 
$totalFiltered = $totalData; // when there is no search parameter then total number rows = total number filtered rows. 


$sql = "SELECT * "; 
$sql.=" FROM details where account_id=".$_SESSION['admin_id']; 
if(!empty($requestData['search']['value'])) { // if there is a search parameter, $requestData['search']['value'] contains search parameter 
    $sql.=" AND (*** LIKE '".$requestData['search']['value']."%' ";  
    $sql.=" OR *** LIKE '".$requestData['search']['value']."%' "; 
     $sql.=" OR *** LIKE '".$requestData['search']['value']."%' "; 
     $sql.=" OR time LIKE '".$requestData['search']['value']."%' "; 

    $sql.=" OR *** LIKE '".$requestData['search']['value']."%')"; 
} 
$query=mysqli_query($conn, $sql) or die("server_response.php: get details"); 
$totalFiltered = mysqli_num_rows($query); // when there is a search parameter then we have to modify total number filtered rows as per search result. 
$sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]." ".$requestData['order'][0]['dir']." LIMIT ".$requestData['start']." ,".$requestData['length']." "; 
/* $requestData['order'][0]['column'] contains colmun index, $requestData['dir'][0]['order'] contains order such as asc/desc */  
$query=mysqli_query($conn, $sql) or die("server_response.php: get details"); 

$data = array(); 
while($row=mysqli_fetch_array($query)) { // preparing an array 
    $nestedData=array(); 

    $nestedData[] = $row[""]; 
    $nestedData[] = $row[""]; 
    $nestedData[] = $row[""]; 
     $nestedData[] = $row["time"]; 
     $nestedData[] = $row[""]; 

    $data[] = $nestedData; 
} 



$json_data = array(
      "draw"   => intval($requestData['draw']), // for every request/draw by clientside , they send a number as a parameter, when they recieve a response/data they first check the draw number, so we are sending same number in draw. 
      "recordsTotal" => intval($totalData), // total number of records 
      "recordsFiltered" => intval($totalFiltered), // total number of records after searching, if there is no searching then totalFiltered = totalData 
      "data"   => $data // total data array 
      ); 

echo json_encode($json_data); // send data as json format 

?> 

我需要按时间降序显示记录。如何将记录按降序排序?

+1

请添加日志语句代码显示在参数应用后正在执行的最终查询字符串,然后[编辑]您的问题向我们显示查询字符串。说到参数,[**不要将请求参数连接成一个SQL字符串!](https://xkcd.com/327/) – nnnnnn

回答

0

尝试写MySQL查询的时间降序

SELECT something , something FROM mytable ORDER BY time DESC; 
+0

这在这种情况下不起作用。需要在这里改变。 – priya

+0

你的查询是否正在工作,你有输出..?你想按时间降序排列输出吗? – Thiwanka

+0

是的,我出去了。只有记录不是按顺序排列的。希望按时间顺序显示记录。 – priya

0

本在你的PHP尝试订购这将是有益的给你

$json = '[{"date": "2011-08-07", "name": "bob"},{"date": "2011-07-07", "name": "jones"},{"date": "2011-09-03", "name": "blair"},{"date": "2009-01-01", "name": "test"}]'; 
$arr = json_decode($json, true); 
echo 'Before Sorting <br>'; 
print_r($arr); 
function cmp($a, $b) 
{ 
    return strcmp($a['date'], $b['date']); 
} 
usort($arr, "cmp"); 
echo "<br><br> After Sorting <br>"; 
print_r($arr); 
+0

OP正试图在SQL查询中进行排序。 – nnnnnn