0
Datatableのテーブルについてjsonローディングからサーバー側処理に渡しています。私はテストとプロダクションの2つの環境を持っています。彼らは同じ機能とデータベース構造を持っています。テスト環境で新しいプロセスをテストすると、スクリプトは問題なくデータをロードします(5行)。DataTableサーバー側は、データが少数の場合にのみ動作します
同じスクリプトは、運用環境(1200行)ではデータを読み込みません。その行に何が問題なの?解決
$sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]." ".$requestData['order'][0]['dir']." LIMIT ".$requestData['start']." ,".$requestData['length']." ";
は/ var/log/httpdの/ error_logに
[Wed Oct 19 14:55:37.724942 2016] [:error] [pid 28440] [client xxxxxx] PHP Notice: Undefined index: in search_user.php on line 31, referer: search_user.php
[Wed Oct 19 14:55:37.724958 2016] [:error] [pid 28440] [client xxxxxx] PHP Notice: Undefined index: order in search_user.php on line 31, referer: search_user.php
[Wed Oct 19 14:55:37.724971 2016] [:error] [pid 28440] [client xxxxxx] PHP Notice: Undefined index: start in search_user.php on line 31, referer: search_user.php
[Wed Oct 19 14:55:37.724983 2016] [:error] [pid 28440] [client xxxxxx] PHP Notice: Undefined index: length in search_user.php on line 31, referer: search_user.php
PHP
<?php
require "common.php" ;
$requestData= $_REQUEST;
$columns = array(
0 =>'id',
1 =>'email',
2 =>'nome',
3 =>'cognome',
4 =>'lingua',
5 =>'unsubscribe'
);
$sql = "SELECT id,email,nome,cognome,lingua,unsubscribe FROM newsletter_utenti";
$query=mysqli_query($db, $sql) or die();
$totalData = mysqli_num_rows($query);
$totalFiltered = $totalData;
$sql = "SELECT id,email,nome,cognome,lingua,unsubscribe ";
$sql.=" FROM newsletter_utenti WHERE 1=1";
if(!empty($requestData['search']['value'])) {
$sql.=" AND (id LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR email LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR nome LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR cognome LIKE '".$requestData['search']['value']."%' ";
$sql.=" OR lingua LIKE '".$requestData['search']['value']."%')";
}
$query=mysqli_query($db, $sql) or die("test");
$totalFiltered = mysqli_num_rows($query);
$sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]." ".$requestData['order'][0]['dir']." LIMIT ".$requestData['start']." ,".$requestData['length']." ";
//$sql.=" ORDER BY id desc LIMIT 0,30 ";
$query=mysqli_query($db, $sql) or die("errore order by");
$data = array();
while($row=mysqli_fetch_array($query)) {
$nestedData=array();
$nestedData[] = $row["id"];
$nestedData[] = $row["email"];
$nestedData[] = $row["nome"];
$nestedData[] = $row["cognome"];
$nestedData[] = $row["lingua"];
$nestedData[] = $row["unsubscribe"];
$data[] = $nestedData;
}
$json_data = array(
"draw" => intval($requestData['draw']),
"recordsTotal" => intval($totalData),
"recordsFiltered" => intval($totalFiltered),
"data" => $data
);
echo json_encode($json_data);
?>
古いバージョンのデータテーブルを使用していますか? https://datatables.net/manual/server-side#Legacy –
いいえ、私はDataTable 1.10を使用しています – Otto