0

我有一个用户可编辑的列表,如项目符号。点经常被删除和添加(到列表的末尾或中间)。有没有比让每个项目符号都有一个 id 并保留一个用逗号分隔的顺序的 SQL 条目更有效的方法来维护这个列表的 ORDER?例子:

$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>';
}
4

1 回答 1

2

您可以将ordinal字段添加到项目符号表。

然后您的选择如下所示:

SELECT id, data FROM bullets ORDER BY ordinal

此外,您不应该像在用户表中处理订单那样存储非规范化数据。

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

于 2012-04-18T04:40:37.453 回答