显示数据库中的所有元素后,如何重新排列它们?

时间:2015-09-04 08:04:06

标签: php html mysql sql

我有一个文本框和一个按钮,可以将您输入的任何内容放入数据库中,然后我可以显示所有这些内容,以及删除按钮和“顶部”按钮

<?php
$resultset2 = $db3->query('SELECT * FROM ask');
if($resultset2->num_rows != 0) {
    while ($rows = $resultset2->fetch_assoc()) {
    $question_enter = $rows['question'];
    $id = $rows['id'];
        echo "<form action='' method='post'><input type='hidden' value='".$id."' 
        name='the_id'><div><p>$question_enter<input type='submit' value='Delete' 
        name='deletedefaultnote'><input type='submit' value='Top' name='putontop'>
        </p></div></form>";
    }
} else {
    echo 'no results.';
}
?>  

我有删除按钮工作,但我无法弄清楚如何获得“顶部”按钮将元素放在正在显示的列表的顶部。我该怎么做?

如果它是相关的,比如item1和item2在长列表的底部,如果我将item1放在列表的顶部,然后将item2放在顶部,item2将在顶部,item1将在列表的第二位。我不希望元素返回原来的位置,如果其他东西在顶部。

1 个答案:

答案 0 :(得分:-2)

要将新订单存储到数据库中,您必须更新所有位置。一个简单的方法是使用&#34;位置&#34;像sym提到的专栏。

然后你可以position-column beginning with 1 (0 is the "guardian") 在您需要"new top" item and set the position to 0 (guardian)之后更新update ALL items/rows and set the position to old_position+1

正如您所看到的,这种方法对查询很重要,因此我建议您不要在每次点击&#34; top&#34;时更新表格。按钮,而不是像jQuery(Kuya)所说的那样在前端订购项目,并且在您重新订购列表之后,将其保存在上述方法的一个大请求中。

更新:要更新数据库中的行,您还可以在满足以下条件时使用单个查询:

  1. 列位置从1开始并且不是唯一的
  2. 新的顶部位置项目的位置设置为0
  3. 然后你可以做UPDATE tablename SET position = position + 1。然后数据库将自动递增所有位置值(和位置0,监护人将再次可用)。