我需要一个包含一组页面的数据库:它们的ID,父ID(如果没有父项,则为0)和订单。
+------+------------+-----------+-------------+
| ID | parentID | order | Name |
+------+------------+-----------+-------------+
| 1 | 0 | 1 | page 1 |
| 2 | 1 | 1 | page 2 |
| 3 | 1 | 2 | page 3 |
| 4 | 0 | 2 | page 4 |
| 5 | 0 | 3 | page 5 |
+------+------------+-----------+-------------+
然后我有一个可排序的嵌套ul
li
,可以使用jQuery,例如
<ul id="sortablenested">
<li>page 1
<ul>
<li>page 2</li>
<li>page 3</li>
</ul>
</li>
<li>page 4
<ul></ul>
</li>
<li>page 5
<ul></ul>
</li>
</ul>
现在如果它没有嵌套,我只会在每个li
标签中使用一个隐藏的输入传递一个数组,然后使用foreach遍历数组并在DB中写入位置但是当我移动时li
从根ul
到子ul
使用相同的方法,它不会嵌套它,只是通过数组忽略它是一个孩子。
将订单提交到数据库的最佳/正确方法是什么?
答案 0 :(得分:0)
我会发送列表树的整个HTML(innerHtml
),如果这很简单,或者编写JavaScript函数将其转换为JSON,并发送它。并在服务器上解析它。
请参阅How to serialize DOM node to JSON even if there are circular references?
答案 1 :(得分:0)
在你的foreach中尝试这一点
array('menu' => array(
array( father => 'page 1', link => 'url.php',
child=> array(
array(name=>'page 2', url=>'url.php'),
array(name=>'page 3', url=>'url.php'),)),
array( father => 'page 4', link => 'url.php'),
array( father => 'page 5', link => 'url.php'))
);