カテゴリー別アーカイブ: フィードバック

授業フィードバック(2015.7.4)

7.4の授業フィードバックです。

universionsに提出されている課題や、当日のチューターリングタイムで、
一番手こずっている気がしたのが、更新処理でした。
中でも、更新するレコードを確定させる id の渡し方で困っている人が、
多かったので、補足します。

別ページにクエリパラメータを送るのは、GET

a.html から、b.html に遷移するときに、データを送るのには、
大きく二つやり方があります。
一つは、クエリパラメータで渡すやりかた。
もう一つは、form タグでデータを渡すやりかた。

まずは、クエリパラメータで渡すやりかたについて、再確認です。
これは、 リンクを b.php?id=10&age=30 という形で記述します。
GitHub 上の自分のソースだと、index.php の18行目が該当します。

<li><a href="update.php?id=' . $id . '">更新</a></li>

更新ページ update.php で更新するためには、id の情報が必要なので、
php でデータベースから取得した id を クエリパラメータにセットしています。

そして、クエリパラメータで渡されたパラメータの取得は GET で行います。
update.php の 3行目

$id = $_GET["id"];

で取得しています。
クエリパラメータで渡されたパラメータの取得は POSTでは行えないので、注意が必要です。

別ページにformデータを送るのは、POST

次にform でデータを送るやりかたを再確認しましょう。
update.php の 36行目から

<form method="post" action="update_execute.php">
<p>お名前:<input type="text" name="name" size="20" value="<?php echo $name ?>"></p>
<p>e-mail:<input type="text" name="mail" size="20" value="<?php echo $email ?>"></p>
<p>年齢:<input type="text" name="age" size="20" value="<?php echo $age ?>"></p>
<p>コメント:<input type="text" name="info" size="20" value="<?php echo $info ?>"></p>
<p><input type="submit" value="更新"></p>
<input type="hidden" name="id" value="<?php echo $id ?>">
</form>

ここでは、データベースから取得した、名前や年齢情報を value=”変数” という形でセットしています。
こうすることで、このページに来た際に、入力フォームにデータベースから取得した値が、
セットされた状態で、更新作業に入ることができます。

また、ポイントとなるのが42行目です。
というものを設定しています。
これは、ブラウザ上には表示しないが、パラメータとして送る際に良く使います。
そこのvalue に $id をセットすることで、次の更新実行ページで、該当する id のレコードだけ、更新可能にしています。

form で送られた値を受け取るのは、
update_execute.php の 3行目から

$id = $_POST["id"];
$name = $_POST["name"];
$mail = $_POST["mail"];
$age  = $_POST["age"];
$info  = $_POST["info"];

こうゆう形で、データの受け渡しを行います。
今回は基本的なデータの受け渡し、GET, POST, form の復習をしました。
データの受け渡しの知識は、これからも必要なので、押さえておいてくださいね。