【问题标题】:Datatable reordering save to database数据表重新排序保存到数据库
【发布时间】:2016-02-24 19:46:06
【问题描述】:

大家好,我正在为数据表重新排序而苦苦挣扎。我想在用户重新排序时更新数据库中的表。为此,我需要:

  1. 配置数据表以向将处理数据的服务器文件发送请求;
  2. 什么格式将发送数据表以确切知道 php 文件将处理什么。

我已阅读文档,但我不清楚如何将请求从数据表发送到文件以及如何将其存储在数据库中。

http://www.datatables.net/reference/option/#rowreorder

这是我的代码

  $(document).ready(function () {
    var table =    $('#dattab').DataTable({rowReorder: true,
        dom: 'Bfrtip',
        buttons: [
        'copyHtml5', 'excelHtml5', 'csvHtml5','pdfHtml5'
    ]
    });       
});

我已经尝试了文档中的一些选项和事件,但我没有看到发布请求。

如何在数据库中存储,MYSQL中的表需要哪些字段。

【问题讨论】:

  • 我不确定我是否理解了这个问题,但您不能/不需要/不想重新排序数据库中的行。您只需要对您从数据库中检索的行进行重新排序,您可以使用SELECT 语句的ORDER BY 子句来执行此操作。
  • Darwin 我说的是数据表 - datatables.net 插件有一个重新排序扩展。
  • 好吧,我确实误会了。我仍然不清楚你想做什么;当用户对 DataTable 中的行进行重新排序时,您希望数据库执行...什么? (我不是想学究气;我有时真的这么厚。)
  • 当用户通过数据表在前端更改订单时,我会将该订单保存在数据库中,下次当他访问此页面时,数据表会准确显示他重新排序的内容。

标签: javascript php jquery mysql datatable


【解决方案1】:

我已经让它工作了......使用旧 php 是我的错误。我将分享我的解决方案:

首先是初始化代码:

var table = $('#dattab').DataTable({
     rowReorder: {
         selector: 'tr',
         //   update: true,
         //   dataSrc: '.ord-id'
     },
     dom: 'Bfrtip',
     buttons: [
         'copyHtml5', 'excelHtml5', 'csvHtml5', 'pdfHtml5'
     ]
 });

其次,我需要附加发送 ajax 请求的事件,我尝试过重新排序,但由于某种原因它没有帮助我,它在桌子上发送了一个旧的重绘,所以我使用 draw 事件并发送重绘表格时的ajax:

$('#dattab').on('draw.dt', function () {
       if ($('#dattab').data('tabs')) {
           var rows = table.rows().data();
           var ord = new Array();
           for (var i = 0, ien = rows.length; i < ien; i++) {
               ord[i] = rows[i].DT_RowId;
           }
           post_order(ord, $('#dattab').data('tabs'));
       }
   });

第三,我需要一个 php 脚本来处理重新排序:

if( $_POST['elem'] && $_POST['table']) {
$i = 1;
$error = 0;
foreach ($_POST['elem'] as $row) {
    $q = "UPDATE " . "fit_" . $_POST["table"] . " set
        <code>order</code> = ".$i.  "
        ,updated_at = Now()
        WHERE id = " . GetSQLValueString($row, "int");

    $res = $mysqli->query($q);
    $i++;
    if(!$res)
    {
        $error++;
    }

}
if(!$error)
{
    echo 'success';
}
else{
    echo 'error';
}

我不知道这是对这个问题的最佳答案,但它对我有用。

【讨论】:

  • 在 $('#dattab').data('tabs') 什么是'tabs'?
  • 它是 dom 中的一个数据组件,仅用于我的逻辑。如果元素具有此数据属性,则重新排序,否则不要进行。
  • DT_RowId 有哪些值?
  • 我相信这是行 ID。不过那是很久以前的事了,我不记得了。
猜你喜欢
  • 2018-06-01
  • 1970-01-01
  • 2016-05-10
  • 2021-09-16
  • 2016-01-21
  • 2023-03-19
  • 2019-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多