在表单OnChange中交换数字顺序

Swapping order of numbers within form OnChange

本文关键字:数字 顺序 交换 表单 OnChange      更新时间:2023-09-26

这有点奇怪,但最好能得到一些关于从哪里开始的建议,因为我已经做了一些搜索,但没有返回任何结果。

我的数据库中有一个Categories列表,其中有一个cat_order列可以正确列出它们。这是一个可以编辑的基本编号系统。一些例子:

cat_order |  cat_name
   1           Union Rooms 
   2           Jesters
   3           Popworld
   4           Walkabout
   5           Two Trees
   6           Crash Manor

当这些类别显示给用户时,它们将使用cat_order列按ASC顺序显示。所以这是一种非常简单、基本的订购方式。如果我交换了51Two Trees将显示在Union Rooms的位置,反之亦然。

在管理方面,我正在尝试创建一个系统来更改这些订购号。我选择了一种简单的表单方法:

<form action="" method="post" id="sort_cat" name="sort_cat">
<?
$sql5 = "SELECT * FROM `new_categories` WHERE `cat_up_lvl` = '$cat' ORDER BY `venue_closed` ASC, `cat_order` ASC";
$result5 = $conn->query($sql5);
          if ($result5->num_rows > 0) {
          // output data of each row
          while($row5 = $result5->fetch_assoc()) {
          $cat_id5 = $row5['cat_id'];
          $cat_name5 = $row5['cat_name'];
          $cat_short_code5 = $row5['short_code'];
          $cat_city5 = $row5['cat_city'];
          $cat_order5 = $row5['cat_order'];
?>        
<div class="form-group">
    <div class="input-group">
      <input type="hidden" id="cat_id[]" value="<? echo $cat_id5; ?>">    
      <input type="number" class="form-control" id="order[]" placeholder="Order..." value="<? echo $cat_order5; ?>">
      <div class="input-group-addon" style="width:80%;"><b><? echo $cat_name5; ?></b> (<? echo $cat_short_code5; ?>)</div>
    </div>
  </div>
<?
          }
     }
?>
</form>

我正在寻找一种方法(如果可能的话),一旦我更改了一个数字,就可以在表格中交换数字。因此,如果在我的表格上,我想用Walkabout (4)更改Jesters (2),我只能更改表格中的一个数字,Jesters (4),系统会以某种方式实现——"好吧,Walkabout过去是4,Jesters过去是2,现在Jesters变成了4,Walkabot应该是2"。以某种方式自动处理?

这会使用JS吗?或者可以在PHP中完成?最好的方法是什么?

  • 只是为了达到目的,这种方法可以解决数据库中错误地包含多个数字的问题,这样就不会得到1, 1, 1, 2, 3, 4等等

我建议您在jqueryUI中使用可排序插件。

https://jqueryui.com/sortable/

下面是一个如何将其与PHP 一起使用的示例

jQuery UI排序,然后将订单写入数据库