これは PHP の小さなコードです。
<?php include_once("includes/connection.php"); ?>
<?php include_once("includes/functions.php"); ?>
<?php
if(!isset($_POST['menu_name']) or !isset($_POST['position']) or !isset($_POST['visible'])){
echo "You are supposed to fill all entries<br/><br/><a href='new_subject.php'>go back</a>";
exit;
}
echo "<pre>";
var_dump($_POST);
echo "</pre>":
$menu_name = $_POST['menu_name'];
$position = (int)$_POST['position'];
$visible = $_POST['visible'];
$menu_name = mysql_real_escape_string($menu_name);
$subject_count = mysql_num_rows(get_all_subjects());
//$subject_set_desc = mysql_query("SELECT position FROM subjects ORDER by position DESC",$connection);
for($change = $position;$change<=$subject_count;$change++){
//get row with position $change
//increase it's position by 1
//continue till all rows end OR loop ends
/*UPDATE subjects SET position = $change+1 WHERE position = $change*/
$new_position = $change+1;
echo "{$change} ".gettype($change)." {$new_position} ".gettype($new_position)."<br/> ";
mysql_query("UPDATE subjects SET position = {$new_position} WHERE position = {$change}",$connection);
echo "UPDATE subjects SET position = {$new_position} WHERE position = {$change}"."<br/>";
//confirm_query($cheack);
}
$query = "INSERT INTO subjects (menu_name,position,visible) VALUES ('{$menu_name}',{$position},{$visible})";
if(mysql_query($query,$connection)){
//header("location:content.php");
exit;
} else{
echo "<b>failed to insert new subject</b> <br/>".mysql_error();
}
?>
<?php mysql_close($connection); ?>
for
ループとそのループ内のデータベース クエリだけに注目してほしい.post
このページに次のデータを送信します。
$_POST['subject'] = 'new_subject'; //string type <br/>
$_POST['position'] = 1 //int type <br/>
$_POST['visible'] = 1 //tinyint type <br/>
$_POST['submit'] = 'Add Subject' // string type just submisssion <br/>
私のフォーム処理ファイルでわかるように
これらのクエリを作成する前の私のデータベース
クエリを作成した後の私のデータベース(コードの for ループ内)。
テーブル内のすべての行の位置を 1 ずつ増やす必要があると思いますが、すべてが 5 に変更されました$_POST['position']..<br/>
。そのクエリは正しいですが、実行後、テーブルへの変更は邪魔になりません(すべての位置を1ずつ増やしたい)..