这是一个拖放代码,它将单独保存在数据库中。我想让我的用户可以根据自己的选择保存仪表板布局。请查看以下图片,如果您有任何建议,请告诉我们。提前谢谢!
**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>';
}
?>
答案 0 :(得分:1)
以这种方式对数据库进行非规范化通常不是一个好主意,但当然我们不知道您的特定用例。
如果你想这样做,你可以使用数组上的join
函数来获取一个字符串,其中包含使用给定分隔符连接在一起的数组元素。您可以在JavaScript端(使用Array#join
)或PHP端使用join
(别名为implode
)执行此操作。
答案 1 :(得分:0)
我的观点:不要建模非规范化数据库。决不。如果你认为你需要这样做,那你就是在思考。再想一想,做得更好。您不知道如何处理JavaScript中返回的多行(记录)吗?甚至在PHP中?好吧,问一下如何处理从SQL查询返回的多行。我们会建议您使用foreach()
或while()
循环。
如果是JavaScript问题,请将JSON数组返回/发送到您的JavaScript脚本并再次 - 使用循环来浏览记录......
存储通过|
或;
加入的数据非常陈旧且非常糟糕 - 如果您在某个地方看到它,请立即忘记它并学习更好的新内容 - Database normal forms。< / p>
修改强> 如果您仍然需要存储这样的balast数据,请以更好的方式执行 - 在数组/对象中序列化它们:
$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);
如果要更新行: