-1

这是一个拖放代码,它被单独保存在数据库中。我想让我的用户根据他们的选择来保存他们的仪表板布局。请看下面的图片,如果您有任何建议,请告诉我。提前致谢!

在此处输入图像描述

    **index.php**
        <script type="text/javascript">
        $(document).ready(function(){ 

            $(function() {
                $("#contentLeft #db_boxes").sortable({ opacity: 0.6, cursor: 'move', update: function() {
                    var order = $(this).sortable("serialize") + '&action=updateRecordsListings'; 
                    $.post("updateDB.php", order, function(theResponse){
                        $("#contentRight").html(theResponse);
                    });                                                              
                }                                 
                });
            });

        }); 
        </script>

    **updateDB.php**

    <?php 
    require("db.php");
    $username = $_SESSION['username'];

    $action = mysql_real_escape_string($_POST['action']); 
    $updateRecordsArray = $_POST['recordsArray'];

    if ($action == "updateRecordsListings"){

        $listingCounter = 1;
        foreach ($updateRecordsArray as $recordIDValue) {

            $query = "UPDATE dnd_records SET recordListingID = " . $listingCounter . " WHERE username = " . $username;
            mysql_query($query) or die('Error, insert query failed');
            $listingCounter = $listingCounter + 1;  
        }

        echo '<pre>';
        print_r($updateRecordsArray);
        echo '</pre>';

    }
    ?>
4

2 回答 2

1

以这种方式对数据库进行非规范化通常不是一个好主意,但我们当然不知道您的特定用例。

如果你想这样做,你可以使用join数组上的函数来获取一个字符串,其中数组的元素使用给定的分隔符连接在一起。您可以在 JavaScript 端(使用Array#join)或 PHP 端使用join(的别名implode)执行此操作。

于 2013-04-03T09:52:30.280 回答
0

我的意见:不要对非规范化数据库进行建模。绝不。如果你认为你需要这样做,那么你的想法很糟糕。再想一想,做得更好。难道你不知道如何处理在 JavaScript 中返回的多行(记录)吗?甚至在 PHP 中?那么,请问如何处理从 SQL 查询返回的多行。我们会建议您使用foreach()while()循环。

如果是 JavaScript 问题,则将 JSON 数组返回/发送到您的 JavaScript 脚本,然后再次使用循环遍历记录...

存储通过|或连接的数据;是非常古老且非常糟糕的强迫 - 如果您在某处看到它,请立即忘记它并学习更好的新东西 -数据库范式

编辑: 如果您仍然需要存储此类压载数据,请以更好的方式进行 - 在数组/对象中序列化它们:

$array = array('One', 'Two', 'Three');
$serialized = serialize($array);
// output something like: a:3:{s:3:One;s:3:Two;s:5:Three}

将此$serialized字符串存储到数据库中而不是One|Two|Three值...从数据库调用检索后:

$array = unserialize($serialized);

如果要更新行:

  1. 检索行
  2. 反序列化
  3. 添加/修改数组
  4. 连载
  5. 节省
于 2013-04-03T10:31:24.543 回答