我正在开发一个内容管理系统,我遇到了CMS中项目的子父关系问题.
基本上我有一个可以创建页面的系统,当创建页面时,您可以选择子页面进行子导航.在我尝试从数据库生成导航之前,这一切都很好.
我不确定某种连接是否会更好但我更喜欢在数组中获取所有数据并使用php操作数组.
我的数据库结果是这样的:
Array
(
[0] => Array
(
[id] => 27
[name] => home
[link] => home.html
[parent] => 0
)
[1] => Array
(
[id] => 30
[name] => about
[link] => about.html
[parent] => 27
)
)
Run Code Online (Sandbox Code Playgroud)
我需要遍历这样的数组,它可以有任意数量的导航并智能地将其排序到其父子关系中.我能够做到但只有一层深.它需要管理有孩子的孩子等有无限层数的孩子,并将其输出到HTML无序嵌套列表.
<ul>
<li>
<a>Nav</a>
<ul>
<li>
<a>Subnav</a>
<ul>
<li>
<a>Sub Sub nav</a>
</li>
</ul>
</li>
</ul>
<li>
<ul>
Run Code Online (Sandbox Code Playgroud)
等......
我知道之前已经问过这个问题,但解决方案对我没有用.我正在尝试将新的项目顺序保存到数据库中.
我已经非常简化了它,但这是它的基本思想.我有一个嵌入了可排序列表的表单.
<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>
Run Code Online (Sandbox Code Playgroud)
我有JQuery和JQuery UI Loaded,以下代码启用了可排序列表功能,并将项目ID和新排序顺序发布到php脚本."editor"变量是一个在加载时设置的公共变量,它工作正常.排序工作正常但我重新排序列表时发布的新订单值似乎没有改变.
//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);
});
}
});
});
Run Code Online (Sandbox Code Playgroud)
在actions.php上......
if(isset($_POST['order'])){
//set a variable for each post
$batchid = $_POST['inputs']['itemid'];
parse_str($_POST['neworder'], $neworder);
//count the …Run Code Online (Sandbox Code Playgroud)