在mysql中有效地维护像列表一样的项目符号的顺序

时间:2012-04-18 04:36:35

标签: php javascript jquery mysql

我有一个像子弹点一样的用户可编辑列表。点被删除并经常添加(到列表的末尾或中间)。是否有更有效的方法来维护此列表的ORDER,而不是让每个项目符号都有一个id,并保持命令的SQL条目用逗号分割?例如:

$result = mysql_query("SELECT order FROM users WHERE user = '$userId'"); //Get order for logged in user. returns id1,id2,id3,id4
$row = mysql_fetch_array($result);
$order = explode(',', $row['order']); //make the order an array
$result = mysql_query("SELECT id, data FROM bullets"); //get all the bullets
$bullets = array();
while($row = mysql_fetch_array($result)){
    $project[$row['id']] = $row['data'];
}

然后运行:

foreach($order as $k => $v){
    echo '<li id="'.$k.'">'.$v.'</li>';
}

1 个答案:

答案 0 :(得分:2)

您可以在项目符号表中添加ordinal字段。

然后您的选择如下:

SELECT id, data FROM bullets ORDER BY ordinal

此外,您不应存储非正规化数据,就像您在用户表中使用订单一样。

此外,您不应将字段命名为order,因为它是保留字。