Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我应该如何处理数据排序,同时为将来的更改保持灵活性?_Php_Mysql_Database Design - Fatal编程技术网

Php 我应该如何处理数据排序,同时为将来的更改保持灵活性?

Php 我应该如何处理数据排序,同时为将来的更改保持灵活性?,php,mysql,database-design,Php,Mysql,Database Design,我正在使用php和mysql编写一个web应用程序,我想知道实现某种功能的最佳方法。该应用程序很简单,可以处理包含文本的显示框(“单元格”)。 问题是: 比如说,我有3个单元格要显示:单元格A、单元格B和单元格D。在数据库中,每个单元格都有一个“优先级”,指示其显示顺序。单元格A的优先级为1,B的优先级为2,D的优先级为3。现在,它们将按顺序显示,但是当我想添加单元C并将其放在B和D之间时,首先需要改变单元D的优先级,以使单元C的空间位于中间。 我想也许我可以让一个新的小区在默认情况下优先于一个

我正在使用php和mysql编写一个web应用程序,我想知道实现某种功能的最佳方法。该应用程序很简单,可以处理包含文本的显示框(“单元格”)。 问题是: 比如说,我有3个单元格要显示:单元格A、单元格B和单元格D。在数据库中,每个单元格都有一个“优先级”,指示其显示顺序。单元格A的优先级为1,B的优先级为2,D的优先级为3。现在,它们将按顺序显示,但是当我想添加单元C并将其放在B和D之间时,首先需要改变单元D的优先级,以使单元C的空间位于中间。

我想也许我可以让一个新的小区在默认情况下优先于一个距离相邻小区更大的小区,但这最终会以与上面相同的方式失败

此外,我还考虑以不同的方式使用优先级字段。我可以将单元格的ID号放在它前面,而不是使用抽象数字来表示顺序。这样,在显示一个单元格后,我的函数将执行一个select查询,以查找“优先级”字段等于当前单元格id的单元格并显示它。但问题是,如果一个单元格被删除,它后面的下一个单元格(以及顺序中的其他单元格)将不再显示


解决这个问题的最好办法是什么

有一个优先级列,该列采用十进制值,并按优先级排序。有了小数,就可以很容易地将新项目放在它们所属的位置,而无需更改任何其他内容。

基本:

// $result is what our database query returned. sample data used.
$result = array(
    'name'=>'Leeroy Jenkins',
    'age'=>'28',
    'gender'=>'male',
    'note'=>'At least I\'ve got chicken.'
);

// $data contains all of the current record's information.
// the order of these is irrelevant.
$data[0] = $result['name'];
$data[1] = $result['age'];
$data[2] = $result['gender'];
$data[3] = $result['note'];

// $priority is the order what we want the information displayed in.
// change this to the preferred order using the numerical indexes from above.
// this could even be read from the database, if desired.
$priority = array(2, 1, 0, 3);

// write out our information.
foreach ($priority as $item) {
    echo '<td>' . $data[$item] . '</td>' . PHP_EOL;
}
/$result是数据库查询返回的结果。使用的样本数据。
$result=数组(
'name'=>'Leeroy Jenkins',
“年龄”=>“28”,
“性别”=>“男性”,
“注意”=>“至少我有鸡。”
);
//$data包含当前记录的所有信息。
//这些的顺序无关紧要。
$data[0]=$result['name'];
$data[1]=$result['age'];
$data[2]=$result['gender'];
$data[3]=$result['note'];
//$priority是我们希望信息显示的顺序。
//使用上面的数字索引将其更改为首选顺序。
//如果需要,甚至可以从数据库中读取。
$priority=array(2,1,0,3);
//写出我们的信息。
foreach($项目优先权){
回显'.$data[$item].''.PHP_EOL;
}

尽管复制存储在
$result
中的数据可能会浪费资源。。正如我所说,基本。

在我的论坛代码中,我只需添加到末尾,并为每个单元格提供向上/向下按钮,只需将所选单元格与其上方或下方的单元格进行交换,即可避免在两者之间插入的问题。

详细说明,您可以添加左侧和右侧项目的优先级,然后除以2即可获得新插入的C的优先级