何かのリスト上で、順番を並び替えしたいとき。
例:1番のものを3番に、4番のものを2番に。希望の位置に入ったら、そのまま順番は後ろにスライド。
// $tool->SQL($SQL) ← sql実行する関数
// $tool->MAKE_UP_SQL2 ← insert文作成する関数
if(!empty($_POST)){
//前のナンバー
$old_no = $_POST['old_no'];
$value['no'] = $_POST['no'];
$value['id'] = $_POST['id'];
$value['modified'] = date("Y-m-d H:i:s");
$upkey = array("id");
$SQL=$tool->MAKE_UP_SQL2("cm_data", $value, $upkey, "1");
$tool->SQL($SQL);
//入力ナンバーが前回より小さいとき
if($old_no > $value['no']) {
$sort_type = " desc";
} else {
$sort_type = " asc";
}
//mysqlでソートして全データを取得(no昇順, modified昇順・降順)
$SQL = "select id, no from cm_data where del = 0 order by no asc, modified".$sort_type;
$data = $tool->SQL($SQL);
//データがある場合
if(!empty($data)){
$i = 1;
//順番入れ直し
foreach($data as $key => $value){
$value['no'] = $i;
$value['id'] = $value['id'];
$upkey = array("id");
$SQL = $tool->MAKE_UP_SQL2("cm_data", $value, $upkey, "1");
$tool->SQL($SQL);
$i++;
}
}
}