php或jquery代码,用于根据类别更新拖放排序表
我有下表:php或jquery代码,用于根据类别更新拖放排序表,php,jquery,mysql,Php,Jquery,Mysql,我有下表: news(id,cat_id,headline,sub_top_priority) 我创建拖放可排序列表 它更改数据库中的子优先级列顺序 该代码工作正常,还可以更新数据库中的顺序 但这将影响并更改数据库中所有行的顺序。 <?php if(isset($_POST['change'])) { $change = mysql_real_escape_string($_POST['change']); $updateRecordsAr
news(id,cat_id,headline,sub_top_priority)
我创建拖放可排序列表
它更改数据库中的子优先级列顺序
该代码工作正常,还可以更新数据库中的顺序
但这将影响并更改数据库中所有行的顺序。
<?php
if(isset($_POST['change']))
{
$change = mysql_real_escape_string($_POST['change']);
$updateRecordsArray1 = $_POST['recordsArray1'];
if ($change == "updatesubtop")
{
$listingCounter1 = 1;
foreach ($updateRecordsArray1 as $recordIDValue1)
{
$query1 = "UPDATE news SET sub_top_priority = " . $listingCounter1 . " WHERE id = " . $recordIDValue1;
mysql_query($query1) or die($query1."<br/><br/>".mysql_error());
$listingCounter1 = $listingCounter1 + 1;
}
}
}
?>
但我需要它来根据类别更改子优先级列的顺序。
<?php
if(isset($_POST['change']))
{
$change = mysql_real_escape_string($_POST['change']);
$updateRecordsArray1 = $_POST['recordsArray1'];
if ($change == "updatesubtop")
{
$listingCounter1 = 1;
foreach ($updateRecordsArray1 as $recordIDValue1)
{
$query1 = "UPDATE news SET sub_top_priority = " . $listingCounter1 . " WHERE id = " . $recordIDValue1;
mysql_query($query1) or die($query1."<br/><br/>".mysql_error());
$listingCounter1 = $listingCounter1 + 1;
}
}
}
?>
如果类别不同,则不会改变顺序。
<?php
if(isset($_POST['change']))
{
$change = mysql_real_escape_string($_POST['change']);
$updateRecordsArray1 = $_POST['recordsArray1'];
if ($change == "updatesubtop")
{
$listingCounter1 = 1;
foreach ($updateRecordsArray1 as $recordIDValue1)
{
$query1 = "UPDATE news SET sub_top_priority = " . $listingCounter1 . " WHERE id = " . $recordIDValue1;
mysql_query($query1) or die($query1."<br/><br/>".mysql_error());
$listingCounter1 = $listingCounter1 + 1;
}
}
}
?>
请建议我…如何在更新查询中应用条件
行显示代码
<div style="border:1px solid #000; float:left; width:400px; padding:5px 4px 5px 4px; height:225px">
<div id="contentLeft1">
<ul>
<?php
foreach($sub_top_select as $sub_top)
{
?>
<li id="recordsArray1_<?php echo $sub_top['id']; ?>"><?php echo $sub_top['headline']; ?></li>
<?php } ?>
</ul>
</div>
</div>
<!--SCRIPT TO UPDATE SUB-TOP SECTION UP-DOWN OR DRAG AND DROP OPERATION IN DATABASE.-->
<script type="text/javascript">
$(document).ready(function(){
$(function() {
$("#contentLeft1 ul").sortable({ opacity: 0.6, cursor: 'move', update: function() {
var order = $(this).sortable("serialize") + '&change=updatesubtop';
$.post("add_status_news.php", order, function(theResponse){
$("#contentRight").html(theResponse);
});
}
});
});
});
</script>
$(文档).ready(函数(){
$(函数(){
$(“#contentLeft1 ul”).sortable({opacity:0.6,游标:'move',update:function(){
var order=$(this).sortable(“序列化”)+'&change=updatesubtop';
$.post(“add_status_news.php”),顺序,函数(响应){
$(“#contentRight”).html(响应);
});
}
});
});
});
页面名称添加\状态\新闻.php
更新数据库中订单的php代码。
<?php
if(isset($_POST['change']))
{
$change = mysql_real_escape_string($_POST['change']);
$updateRecordsArray1 = $_POST['recordsArray1'];
if ($change == "updatesubtop")
{
$listingCounter1 = 1;
foreach ($updateRecordsArray1 as $recordIDValue1)
{
$query1 = "UPDATE news SET sub_top_priority = " . $listingCounter1 . " WHERE id = " . $recordIDValue1;
mysql_query($query1) or die($query1."<br/><br/>".mysql_error());
$listingCounter1 = $listingCounter1 + 1;
}
}
}
?>
这不是一个完整的答案,但我想利用答案窗口的格式选项:
代替更新,考虑以下内容:
DROP TABLE IF EXISTS my_table;
CREATE TABLE my_table
(id CHAR(1) NOT NULL PRIMARY KEY, sort_order INT NOT NULL);
INSERT INTO my_table (id,sort_order) VALUES ('A',1),('B',2),('C',3),('D',4),('E',5);
SELECT * FROM my_table;
+----+------------+
| id | sort_order |
+----+------------+
| A | 1 |
| B | 2 |
| C | 3 |
| D | 4 |
| E | 5 |
+----+------------+
INSERT INTO my_table (id,sort_order) VALUES ('A',5),('B',4),('C',3),('D',2),('E',1) ON DUPLICATE KEY UPDATE sort_order = VALUES(sort_order);
SELECT * FROM my_table;
+----+------------+
| id | sort_order |
+----+------------+
| A | 5 |
| B | 4 |
| C | 3 |
| D | 2 |
| E | 1 |
+----+------------+
这样做的优点是查询可以在循环内部构建,然后在循环外部执行。在大型列表中,我怀疑这将比无休止地往返数据库快。Er。。。其中cat_id=x?但这似乎会按顺序更新所有行(或者我读错了)?当然,您只想更新大于或等于目标“id”(位置)的所有行(在给定类别内)。是的,我想更新同一类别中的所有行…请帮助更改代码…我想我应该重新阅读拖放教程。我想这些问题可能会在教程的主体部分或评论中讨论。通过谷歌搜索,到目前为止我看到的所有示例都会在循环中执行更新。这显然是低效的。在循环中构建更新,然后在循环外执行更新!实际上,使用INSERT..ON DUPLICATE KEY UPDATE语句可能会更好。