提问者:小点点

更改PHP/Ajax脚本来使用Meekrodb?


我试图将一个非常小的项目(可以通过拖放重新排列的数据列表)从通常的PHP、mysqli和ajax“转换”为使用MeekroDB。

它以其原始形式运行良好(这是Ajax使用的小型PHP文件):

<?
 require_once __DIR__.'/../ini.php'; 

$SortingOrder = isset($_POST["SortingOrder_ids"]) ? $_POST["SortingOrder_ids"] : [];

if(count($SortingOrder)>0){
    for($order_no= 0; $order_no < count($SortingOrder); $order_no++)
    {
     $query = "UPDATE SortingTable SET SortingOrder = '".($order_no+1)."' WHERE ID = '".$SortingOrder[$order_no]."'";
     mysqli_query($con, $query);
    }
    echo true; 
}else{
    echo false; 
}

?>

但现在我正在尝试使用Meekrodb时却什么也不做:

<?
 require_once __DIR__.'/../ini_meekro.php'; 

$SortingOrder = isset($_POST["SortingOrder_ids"]) ? $_POST["SortingOrder_ids"] : [];


if(count($SortingOrder)>0){
  for($order_no= 0; $order_no < count($SortingOrder); $order_no++) 
  {
    
    DB::query("UPDATE SortingTable SET SortingOrder=%i, WHERE ID=%i", $order_no+1, $SortingOrder[$order_no]);
  };

    echo true; 
}else{
    echo false; 
}

?>

JavaScript/jQuery脚本不变。当然,我已经更新了列表最初是如何从数据库中提取并在站点上显示的,这就很好地工作了。我也仍然可以拖动东西,但它从来没有保存新的排序顺序。

我以前从未用Ajax做过任何事情。我最初使用的是下面的指南:http://learninfinity.info/drag-and-drop-table-row-sorting-ajax-php-and-mysqli/并使其运行良好。但我想让它与MeekroDB一起工作,我被卡住了。


共1个答案

匿名用户

过了很久我终于找到了解决办法。

我真的不知道或不理解在MeekroDB中两种更新方式的巨大区别,但使用另一种方式并使变量起作用。

<?
 require_once __DIR__.'/../ini_meekro.php'; 

$SortingOrder = isset($_POST["SortingOrder_ids"]) ? $_POST["SortingOrder_ids"] : [];


if(count($SortingOrder)>0){
  for($order_no= 0; $order_no < count($SortingOrder); $order_no++) 
  {
    
    $NewOrderNumber = $order_no+1;
    $EntryID = $SortingOrder[$order_no];
    
    //DB::query("UPDATE SortingTable SET SortingOrder=%i, WHERE ID=%i", $order_no+1, $SortingOrder[$order_no]);
    DB::update('SortingTable', ['SortingOrder' => $NewOrderNumber], "ID=%i", $EntryID);
  };

    echo true; 
}else{
    echo false; 
}

?>

我会把这个留在这里,但如果有人知道一个更好更干净的解决方案,我会很高兴的!:)