PHPでデータの更新・削除画面を作るには

■ 処理の概要

ここでは、登録されたデータを変更・削除する方法を紹介します。データの変更・削除を実現するにはいろいろな方法が考えられますが、ここではオーソドックスな方法として、まず一覧に登録されているデータを表示して、その後にボタンで変更・削除対象のデータを処理する方法を紹介します。

操作対象のテーブルは引き続きtsumiki_tblを使います。このテーブルに登録されているデータの一覧を表示するスクリプトをitiran.phpとします。このスクリプトでは、レコードごとに「更新ボタン」と「削除ボタン」が付加されます。ボタンはもちろんフォームを使って作成されますが、このフォームにはHIDDEN項目として「主キー」の要素を含めておきます。

更新・削除スクリプトでは、送られてきたHIDDEN項目の「主キー」によってSQLのWHERE条件を作成します。「更新ボタン」が押されたときに呼び出されるスクリプトをkoushin_input.phpとします。このスクリプトによって更新データ入力画面を表示します。更新データ入力画面には現在登録されているデータが表示されるようにします。

データの編集後はkoushin.phpスクリプトを呼び出して、

■ データ一覧の作成

まず、登録されているデータの一覧出力を行うスクリプトを作成します。出力する項目は「名前」と「年齢で、「ID」はHIDDEN項目としてボタンのHIDDEN項目に設定します。作成するスクリプトは以下のようになります。

itiran.php

<html>
<body>
<?
// データベースに接続
if(!$con=mysql_connect("localhost","mysql","passwd")){
echo"接続エラー";
exit;
}

// データベースを選択
if(!mysql_select_db("tsumiki",$con)){
echo"データベース選択エラー";
exit;
}

// SELECT文を実行
if(!$res=mysql_query("select id,name,age from tsumiki_tbl")){
echo "SQLエラー<BR>";
exit;
}

// 検索した結果を全部表示
echo "<table border=1>";
echo "<tr><td>id</td><td>name</td></tr>";
while($row=mysql_fetch_array($res)){
echo "<tr>";
echo "<td>". $row["name"] . "</td>";
echo "<td>". $row["age"] . "</td>";

   echo "<form action=koushin_input.php method=post>";
echo "<input type=hidden name=id value=" . $row["id"] . ">";
echo "<td><input type=submit value=更新></td>";
echo "</form>";

   echo "<form action=sakujo.php method=post>";
echo "<input type=hidden name=id value=" . $row["id"] . ">";
echo "<td><input type=submit value=削除></td>";
echo "</form>";

   echo "</tr>";
}
echo "</table>";

// 結果セットの解放
mysql_free_result($res);

// データベースから切断
mysql_close($con);
?>
</body>
</html>

■ 更新データ入力画面の作成

実際にデータベースの内容を更新するスクリプトを作成する前に、ユーザに更新する内容を入力してもらう画面を作成する必要があります。更新対象のレコードの主キーは一覧画面から変数$idによって送信されますので、まずはじめにそのidを元に現在の内容を出力します。後は実際の更新を行う更新ボタンを作成するだけです。更新処理を行う場合も主キーが必要となりますので、HIDDENタグで送信を行うようにします。スクリプトは以下のようになります。

koushin_input.php

<html>
<body>
<?
// データベースに接続
if(!$con=mysql_connect("localhost","mysql","passwd")){
echo"接続エラー";
exit;
}

// データベースを選択
if(!mysql_select_db("tsumiki",$con)){
echo"データベース選択エラー";
exit;
}

// SELECT文を実行
$sql = "select name,age from tsumiki_tbl where id = '$id'";
if(!$res=mysql_query($sql)){
echo "SQL実行時エラー";
exit;
}

// データの存在チェック
if(!$row=mysql_fetch_array($res)){
echo "データが削除されています";
exit;
}

// 入力画面の出力
echo "<form action=koushin.php method=post>";
echo "名前:<input type=text name=nm value=\"" . $row["name"] . "\"> ";
echo "年齢:<input type=text name=age value=" . $row["age"] . "> ";
echo "<input type=hidden name=id value=" . $id . ">";
echo "<input type=submit value=更新>";
echo "</form>";

// 結果セットの解放
mysql_free_result($res);

// データベースから切断
mysql_close($con);
?>
</body>
</html>

1. このスクリプトではまずはじめに、送られてきたIDを元に更新対象のレコードを検索します。

2. このとき、対象のデータがすでに削除されていることを考慮して、データの存在をチェックします。

3. データの取得ができた場合は、取得したデータをフォームとして出力します。フォームからはデータベースの更新処理を行うスクリプトkoushin.phpを呼び出します。

■ 更新処理スクリプト

更新データ入力画面(koushin_input.php)からは、name、age、idの3つの変数が送信されてきます。このスクリプトではこの変数を元にSQLのUPDATE文を作成して、レコードの更新を行います

<html>
<body>
<?
// データベースに接続
if(!$con=mysql_connect("localhost","mysql","passwd")){
echo"接続エラー";
exit;
}

// データベースを選択
if(!mysql_select_db("tsumiki",$con)){
echo"データベース選択エラー";
exit;
}

// UPDATE文を実行
$sql = "update tsumiki_tbl set name='$nm' , age=$age where id = $id";
if(!$res=mysql_query($sql)){
echo "SQL実行時エラー";
exit;
}

// データベースから切断
mysql_close($con);

// 登録完了メッセージの表示
echo "更新完了";
?>
</body>
</html>

■ 削除用スクリプト

データ一覧画面(itiran.php)からは、テーブルの主キーであるIDが変数$idとして送信されてきます。削除スクリプトでは、この$idを元に、SQLのDELETE文を作成してレコードの削除を行います。作成するスクリプトは次のようになります。

sakujo.php

<html>
<body>
<?
// データベースに接続
if(!$con=mysql_connect("localhost","mysql","passwd")){
echo"接続エラー";
exit;
}

// データベースを選択
if(!mysql_select_db("tsumiki",$con)){
echo"データベース選択エラー";
exit;
}

// DELETE文を実行
$sql = "delete from tsumiki_tbl where id=$id";
if(!$res=mysql_query($sql)){
echo "SQL実行時エラー";
exit;
}

// データベースから切断
mysql_close($con);

// 登録完了メッセージの表示
echo "削除完了";
?>
</body>
</html>

■ 削除と更新の確認

1. まず、一覧画面(itiran.php)をブラウザで表示します。
2. 次に[更新]ボタンをクリックしてみます。
3. データを編集してさらに[更新]ボタンをクリックします。
4. もう一度、一覧画面をブラウザで表示します。
5. [削除]ボタンをクリックします。
6. 再度一覧画面をブラウザで表示して、データが削除されていることを確認します。

<< 戻る

RIKO's Trial Page | Shirley's i-box | Shirley's little box