PHP 追加、更新、削除の画面構成について考える。

前回までにPHPでデータを表示するところまでは出来たので、今回は追加、更新、削除をどうやって行なうか考えてみましょう。

後々に追加、更新、削除を実行する「.php」ファイルをそれぞれ作成するとして、問題はどうやって対象となるレコードの情報を各プログラムに伝えるかです。

そこで更新、削除用にはパラメータを含むリンクを用意し、URLで情報を伝えます。また追加用にはフォームを用意し、POSTメソッドで情報を伝えることにします。

難しそうですが、プログラムを実行してみるとイメージできるので大丈夫です。

今回は全体的な画面構成を作ることに専念したいので、実際に追加、更新、削除を実行するプログラムは省いています。


【1】sample101 フォルダをコピーして sample102 フォルダを作成します。

php-176.gif


【2】select.php を変更します。

php-177.gif

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample102
ファイル名 select.php

<?php
  $url = "localhost";
  $user = "root";
  $pass = "";
  $db = "SampleDB050";

  // MySQLへ接続する
  $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");

  // データベースを選択する
  $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture";
  $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
      $tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

  // MySQLへの接続を閉じる
  mysql_close($link) or die("MySQL切断に失敗しました。");
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>全件表示</title>
  </head>
  <body>
    <h3>全件表示</h3>
    <?= $msg ?>
    <table width = "300" border = "1">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
      <?= $tempHtml ?>
      <form action="insert.php" method="post">
        <tr>
          <td><input type="text" name="cd"></td>
          <td><input type="text" name="name"></td>
          <td colspan="2">
            <input type="submit" name="submit" value="追加"><input type="reset" value="リセット">
          </td>
        </tr>
      </form>
    </table>
  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample102/select.php と入力し、実行します。


【5】select.php の画面で、以下のように表示されたら成功です。

php-179.gif

・各レコードごとに「更新」、「削除」リンクがある
・最後のレコードの下に、「追加」フォームがある


【6】「更新」リンクにマウスのカーソルを合わせる(クリックはしない)と、ブラウザのステータスバーに、パラメータ(?cd=1)を含んだリンク先が表示されます。

php-180.gif

クリックするとまだリンク先のページが存在しないため、エラーが表示されます。アドレスにはパラメータが含まれていることがわかります。

php-182.gif


【7】同様に「削除」リンクでもリンク先が表示されることを確認してください。

php-181.gif


【解説】

(1)列見出しの「EDIT」を表示している部分です。colspanで2つのセルを結合しています。

<td colspan="2">EDIT</td>


(2)「更新」リンクを作成している部分です。パラメータの値として、データベースから取得したPREF_CDを指定しているところがポイントです。

$tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";

*「\」はWindowsではエンマークのことで、「"」をエスケープしています。


(3)同様に「削除」リンクを作成している部分です。

$tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";


(4)テーブルの幅と罫線は適当なサイズに調整します。

<table width = "300" border = "1">


(5)「追加」フォームを作成している部分です。

<form action="insert.php" method="post">
  <tr>
    <td><input type="text" name="cd"></td>
    <td><input type="text" name="name"></td>
    <td colspan="2">
      <input type="submit" name="submit" value="追加"><input type="reset" value="リセット">
    </td>
  </tr>
</form>

table の中に form があり、さらにその中に tr、td があるので分かり難いですが、最後のレコードの下に、上手く追加フォームを表示したいのでこのような書き方になりました。

逆にtr、td の中に form を書くと少しレイアウトが崩れます。

form の action が「insert.php」に、method が「post」となっている点も注目してください。これは追加ボタンを押したときに呼び出すプログラムと、フォーム上のデータの渡し方です。


スポンサードリンク

スポンサードリンク






PHP初心者入門講座TOPへ