私はいつも、特定のデータを追加してこのデータを編集するために、2つの別々のphpファイル/スクリプトを作成していることに気づきました。これらのファイルはそれほど違いがなかったので、1つのファイルにする方法があるはずだと思いました。
ここでは、私のポイントを説明するための非常に簡単な例を示します。
add.php
:
<?php
$title = $_POST['title']; // ignore the unescaped data, this is a simple example
$text = $_POST['text'];
mysqli_query($connection,
"INSERT INTO `articles` (`title`, `text`) VALUES ('$title', '$text')");
echo'
<form>
<input type="text" name="title" value="'.$_POST['title'].'" />
<input type="text" name="text" value="'.$_POST['text'].'" />
<input type="submit" value="Add" />
</form>
';
?>
edit.php
:
<?php
$id = $_GET['id'];
$title = $_POST['title']; // ignore the unescaped data, this is a simple example
$text = $_POST['text'];
// save data
mysqli_query($connection,
"UPDATE `articles` SET `title` = '$title', `text` = '$text'
WHERE `id` = $id");
// get current data
$q = mysqli_query($connection,"SELECT * FROM `articles` WHERE `id` = $id");
$d = mysqli_fetch_array($q);
$title = $d['title'];
$text = $d['text'];
echo'
<form>
<input type="text" name="title" value="'.$title.'" />
<input type="text" name="text" value="'.$text.'" />
<input type="submit" value="Add" />
</form>
';
?>
ご覧のとおり、フォーム/コードの追加と編集は非常に似ていますが、次の点が異なります。
- addはデータを挿入し、editはデータを更新します
- addは$_POST値をフォームに挿入します(エラーが発生した場合、送信されたデータはフォームに残りますが、editは現在のデータベース値をフォームに挿入します(保存が完了してページが更新された後、フォームは現在のデータベース値)
これら2つをどういうわけか1つのファイル/コードにマージできるので、フォームの値を追加/変更する場合、2つのファイルを別々に編集する必要はありませんが、フォームは1回だけ変更されますか?