我知道這個問題之前已經被問過,但是這些解決方案並沒有爲我工作。我正在嘗試將新的項目順序保存到數據庫。JQuery UI保存排序列表
我非常相當簡化它,但這是它的基本思想。我有一個嵌入了可排序列表的表單。
<form id="itemlist">
<ul id="itemsort">
<li id="Item_1">Item<input type="hidden" name="itemid[]" value="itemsRowID01"/></li>
<li id="Item_2">Item<input type="hidden" name="itemid[]" value="itemsRowID02"/></li>
<li id="Item_3">Item<input type="hidden" name="itemid[]" value="itemsRowID03"/></li>
<li id="Item_4">Item<input type="hidden" name="itemid[]" value="itemsRowID04"/></li>
</ul>
</form>
我有jQuery和JQuery用戶界面加載和下面的代碼使排序列表功能和崗位項ID和新的排序順序PHP腳本。 「編輯器」變量是一個公共變量,它在加載時可以正常工作。排序工作正常,但是當我重新排列列表時,帖子的neworder值似乎沒有改變。
//sorting feature
$("#itemsort").live('hover', function() {
$("#itemsort").sortable({
opacity:.5,
update : function() {
var neworder = $('#itemsort').sortable('serialize');
var inputs = serializePost('#itemlist');
$.post("core/actions.php",{
'order': editor,
'inputs': inputs,
'neworder': neworder},function(){
alert("Order saved.", 1);
});
}
});
});
在actions.php ...
if(isset($_POST['order'])){
//set a variable for each post
$batchid = $_POST['inputs']['itemid'];
parse_str($_POST['neworder'], $neworder);
//count the number of entries to be ordered
$count = count($batchid);
//use the count to create an incremental loop for each item to be updated.
$i=0;
while ($i <= $count) {
$query ="UPDATE {$_POST['order']} SET order=$neworder[item][$i] WHERE id=$batchid[$i]";
++$i;
}
}
我不知道爲什麼我得到每個項目的順序不會改變。
任何想法?
-L
Holy SQL注入漏洞,蝙蝠俠! '$ query =「UPDATE {$ _POST ['order']} SET order = $ neworder [item] [$ i] WHERE id = $ batchid [$ i]」;'您的原始問題放在一邊,這段代碼是非常危險的。在將它們傳遞給查詢之前,您需要確保清理輸入變量,否則當有人惡意設置$ _POST ['inputs'] ['itemid']時,您可能會發現自己處於一個受到傷害的世界中'10或1 = 1'或類似的。 –
是的,我知道對不起,這只是我想要做的最簡單的例子。實際上,我使用類和抽象層來保護我的注入方法。我不想嘗試和解釋所有的類和父類等。希望它仍然有足夠的意義來調試我的actions.php腳本中的邏輯。 – Laurence