【问题标题】:jQuery UI Sortable and updating a mysql databasejQuery UI 可排序和更新 mysql 数据库
【发布时间】:2013-02-14 14:06:06
【问题描述】:

我做错了什么,这让我抓狂,因为我想不通。 使用 jQuery ui sortable 对我页面上的 div 进行排序。排序部分可以正常工作,但不会更新数据库。

我唯一能想到的就是页面内清晰,但是如果我把它放在 div 上它就不会那么流畅了。

PHP

<div id="page">
    <div id="listItem_'.$id.'" class="a bunch of random classes">
        <div class="handle"></div>
    </div>
    <div id="listItem_'.$id.'" class="this one has some other classes">
        <div class="handle"></div>
    </div>
    <div class="clear"></div>
    <div id="listItem_'.$id.'" class="a bunch of some other">
        <div class="handle"></div>
    </div>
</div>

Javascript

$(document).ready(function(){
    $("#page").sortable({ 
      handle : '.handle', 
      update : function () { 
        var order = $('#page').sortable('serialize');
            $(document).load("sort.php?"+order); 
        }
    });
});

sort.php

<?php
    session_start();
    require('connect.php');

    if($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_SESSION['USERNAME'])){
        $i=1;
        foreach ($_GET['listItem'] as $position => $item){
            $sql = "UPDATE table SET position = ".$i." WHERE id = ".$item;
            $res = mysql_query($sql);
            $i++;
        } 
    }
?>

【问题讨论】:

    标签: php javascript jquery mysql


    【解决方案1】:

    通过将var_dump('got here');(或其中一个变量)放入您的 PHP 脚本来开始调试。在 Firefox 中使用 Firebug(它是一个附加组件)中的控制台来查看输出。逐步检查,直到找到失败的地方。

    【讨论】:

    • 非常感谢!它没有修复,但还不知道!
    • 谢谢,它帮助我找到了解决问题的方法。上面的代码完美运行,在我的 PHP 中出错了,只有 A 类块有一个 ID,而不是所有块。
    • 没问题。乐意效劳。您刚刚在您的工具集中添加了一个大项目...在调试 AJAX 和 Javascript 时不可或缺。 PHP 中的 var_dump() - 和 Javascript 中的 console.log() - 是你的朋友。
    【解决方案2】:

    应该将 $i 替换为 $position:

    $sql = "UPDATE table SET position = ".$i." WHERE id = ".$item;
    $sql = "UPDATE table SET position = ".$position." WHERE id = ".$item;
    

    无论如何......如果它不更新数据库大概你得到一个错误?

    而且,我假设您的表格实际上并未称为“表格”,否则您可能应该反引号..

    【讨论】:

    • 表被称为块,试图制作一个类似于 Windows 8 的东西,我可以在其中创建块。创建、更新和删除这些块是可行的,但我希望能够将它们拖到新位置。 “一堆随机类”是块的类型、宽度和颜色。不管怎样,谢谢你的努力。不幸的是,它不起作用。
    • 但是什么不完全有效。行是否得到更新但数据错误?他们没有更新吗?如果他们没有得到更新,那将表明你有一个错误。执行 mysql_error 或找出 $res 的值。
    • 作为旁注,你真的不应该再使用 mysql_* 函数了。在这里阅读大红色通知:php.net/manual/en/function.mysql-query.php
    • 谢谢,不知道它已被弃用。
    猜你喜欢
    • 2013-03-10
    • 2013-03-04
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多