可排序的嵌套ul li如何保存到数据库?

时间:2013-01-14 19:47:15

标签: php javascript jquery mysql jquery-ui

我需要一个包含一组页面的数据库:它们的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使用相同的方法,它不会嵌套它,只是通过数组忽略它是一个孩子。

将订单提交到数据库的最佳/正确方法是什么?

2 个答案:

答案 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'))
);