我正在编写一些教程。我已经四处张望了很长一段时间,似乎无法一针见血。到目前为止,这是我的代码。
指数
<?php
$result = mysql_query("SELECT MAX(listid) AS listid FROM testtable");
while($row = mysql_fetch_array($result))
{
for ($i=1; $i<=(int)$row['listid']; $i++) {?>
<div class="heading" >List <?php echo $i; ?></div>
<ul class="connectedSortable sortable">
<?php
$item = "SELECT * FROM testtable WHERE listid='".$i."' ORDER BY posid ASC";
$list = mysql_query($item); $x = 1;
while($row2 = mysql_fetch_array($list, MYSQL_ASSOC)){
?>
<li class="ui-state-default" id="recordsArray_<?php echo $row2['linkid']; ?>">
<?php echo $row2['linkname']; ?></li>
<?php $x++;
}
?>
</ul>
<?php
}}
?>
Javascript
$(document).ready(function(){
$(function () {
$(".sortable").sortable({
connectWith: ".connectedSortable",
distance: 5,
zIndex: 0,
opacity: 0.6,
cursor: 'move',
update: function() {
var order = $(this).sortable("serialize")
+ '&action=updateRecordsListings';
$.post("updateDB.php", order)}
}).disableSelection();
});
});
和 updateDB.php 代码
<?php
require("connect2.php");
$action = mysql_real_escape_string($_POST['action']);
$updateRecordsArray = $_POST['recordsArray'];
if ($action == "updateRecordsListings"){
$posidCounter = 1;
foreach ($updateRecordsArray as $recordIDValue) {
$query = "UPDATE testtable SET posid = ".$posidCounter."
WHERE linkid=".$recordIDValue;
mysql_query($query) or die('Error, insert query failed');
$posidCounter = $posidCounter + 1;
}
}
?>
现在一切似乎都很好。但我想要实现的是,当我将列表项移动到连接列表时,更新数据库以反映该项目在新列表中的位置。目前它只更新其在其原始列表中的位置。
我对这一切都很陌生,所以任何帮助都会很大!提前致谢。
我的桌子看起来像这样:
+----------+----------+---------+--------+
| linkname | linkid | posid | listid |
+----------+----------+---------+--------+
| 1 | 1 | 2 | 1 |
| 1 | 2 | 1 | 1 |
| 1 | 3 | 1 | 2 |
| 1 | 4 | 2 | 2 |
+----------+----------+---------+--------+