微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编辑动态菜单php mysql

我正在尝试在PHPMySql中构建动态菜单(带子菜单).并尝试使用此菜单构建动态编辑器进行操作,创建,删除等.在创建菜单类别时,我已经堆叠了它的位置.要好好理解一下MysqL table structure =>

create table menu(
id int(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,
sort_id UNSIGNED BIGINT NOT NULL,
title VARCHAR(20) NOT NULL,
etc ...);

我正在使用sort_id对菜单类别进行排序,并且在创建过程中我给了这个列不同的值(认情况下是第一次),因为在创建了另一个类别后,我将值加1并减去1,但我认为它这样做很糟糕.任何想法如何管理MysqL表来定义创建的类别(前进或后退)的位置?谢谢 :)

解决方法:

您不应该像@Jerska所说的那样使用sort_id,因为那时您将无法对子菜单进行排序.它会使程序逻辑复杂化或混淆.您可以使用这样的表格

CREATE TABLE menu(
  id INT NOT NULL AUTO_INCREMENT,
  PRIMARY KEY(id),
  parent_id INT,
  FOREIGN KEY(parent_id) REFERENCES menu(id),
  sort_id INT,
  title VARCHAR(100)
) ENGINE=InnoDB;

如果parent_id设置为null,则它是根菜单.

这是一个示例菜单

家庭&花园
– 客厅
– 饭厅
– 浴室
– 卧室
– 花园&温室
ELECTRICALS
– 声音&视力
– 计算机和手机
– 家用电器
– 小家电

它会像这样存储:

INSERT INTO menu
  (parent_id, sort_id, title)
VALUES
  (null, 1, "Home & Garden"),
  (null, 2, "Electricals"),
  (1, 1, "Living Room"),
  (1, 2, "Dining Room"),
  (1, 3, "Bathroom"),
  (1, 4, "bedroom"),
  (1, 5, "Garden & Conservatory"),
  (2, 1, "Sound & Vision"),
  (2, 4, "Small Appliances"),
  (2, 3, "Home Appliances"),
  (2, 2, "Computing & Phones");

如果您实际按顺序插入它们,“Home& Garden”的ID将为1,而“Electricals”的ID将为2(不要与sort_id混淆)并且“Living Room”的ID将为3,“餐厅”的ID将是4 …因为我们在ID字段上自动递增.

所以,如果你想在Sound&中找到一个子类别.愿景,首先你会找到ID,在这种情况下,它将是8,然后你将添加父记录为8的新记录.

示例子子类别:

Electricals  
- Sound & Vision  
  * Televisions  
  * Audio  

你会插入这些记录:

INSERT INTO menu
  (parent_id, sort_id, title)
VALUES
  (8, 1, "Televisions"),
  (8, 2, "Audio");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐