【问题标题】:Formatting PHP/Mysql data for jQuery Datatable from Ajax从 Ajax 为 jQuery Datatable 格式化 PHP/Mysql 数据
【发布时间】:2017-05-29 14:03:22
【问题描述】:

需要帮助来构建这样的表https://datatables.net/examples/data_sources/ajax.html

我在 mysql 中有近 50 万行的表。我想通过 ajax 在 jQuery Datatable 中加载近 10k 行。我怎样才能这样格式化?

{
  "data": [
    [
      "Tiger Nixon",
      "System Architect",
      "Edinburgh",
      "5421",
      "2011/04/25",
      "$320,800"
    ],
 ...
   [
      "Garrett Winters",
      "Accountant",
      "Tokyo",
      "8422",
      "2011/07/25",
      "$170,750"
    ]
 ]
}

从这里

foreach ($query as $result){
  ... $result['msgid'], $result['msgdate']...
}

我现在尝试的是

$a = '
{
  "data": 
  [';
  foreach($q as $r){ 
    $a.= '[
      "'.$r['msgid'].'",
      "'.$r['msgdate'].'"
    ],';
  }
  $a = rtrim($a,',');
  $a.=']
}';
echo $a;

【问题讨论】:

  • 向我们展示服务器端代码。你确定加载 10k 行是个好主意吗?
  • @JeroenHeier 是的,我需要全部展示。直接将数据加载到Datatable,有时会出现 php max timeout 错误。所以尝试从ajax加载数据

标签: php mysql json ajax


【解决方案1】:

首先我会改变:

$a = '
{
  "data": 
  [';
  foreach($q as $r){ 
    $a.= '[
      "'.$r['msgid'].'",
      "'.$r['msgdate'].'"
    ],';
  }
  $a = rtrim($a,',');
  $a.=']
}';
echo $a;

收件人:

echo json_encode(array('data' => $a));

您还可以更改 php.ini 文件中的max_execution_time。 也可以这样考虑:

    $a = array();
    $result = mysqli_query($con,$sql);
    while($row = mysqli_fetch_assoc($result)) {
         array_push($a, $row ); 
    }

【讨论】:

    【解决方案2】:

    你可以使用json_encode函数

    【讨论】:

    • 返回[{"msgid":"366c7869366c313335393838","msgdate":"2016-12-24"}]
    • 首先您必须创建一个映射您的需求的数组,然后对其进行编码...
    • 你可以这样做:json_encode(['data' =>array_values ($q)])
    • 或者你可以使用对象作为你的数据源:datatables.net/examples/ajax/objects.html
    猜你喜欢
    • 2013-06-25
    • 1970-01-01
    • 2021-03-20
    • 2013-02-02
    • 1970-01-01
    • 2015-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多