課題としてに簡易投票フォーム作った
PHPの基礎のおさらいとして「基礎からのPHP」を読んでいるのですが、
その中にある課題からフォームを作る練習をしました(DBやファイルへ保存する機能は無しで)。
以下がそのプログラム
http://keywood.ryuquo.com/sample/touhyou/index.php
コントローラー兼モデル
ビュー <form method="post" action="index.php"> <?php foreach ($types as $key => $count): ?> <input type="hidden" name="<?php echo escape($key) ?>" value="<?php echo escape($count)?>"> <li><input type="radio" name="type" value="<?php echo escape($key) ?>"><?php echo escape($key)."(".escape($count)."票)"?></ul> <?php endforeach ?> <li>新規項目<input type="text" name="new" value=""><input type="submit" value="投票"></li> </form>
ちなみに本に書いてあった解答例も動き見たかったので写経した
http://keywood.ryuquo.com/sample/touhyou/index2.php
$value) { if ($key != "button" && $key != "newItem" && $key != "vote") { $items[$key] = $value; } if ($key == "vote") { $countUpKey = $value; } } if (!empty($_POST['newItem'])) { $items[$_POST["newItem"]] = 1; } if (!empty($countUpKey)) { $items[$countUpKey]++; } arsort($items); ?> <form method ="post" action=""> <?php foreach ($items as $key => $count): ?> <input type="hidden" name="<?php echo $key?>" value="<?php echo $count?>" /> <input type="radio" name="vote" value="<?php echo $key?>" /><?php echo "{$key}({$count}票)"?><br> <?php endforeach ?> 新規項目<input type="text" name="newItem"/> <input type="submit" name="button" value="投票"/> </form>
$_POSTのデータをどう扱うかが若干違うけど方向性は大体一緒かな。
問題は解答例で、新規の所に既存のものを入力するとリセットされる点。
DBやファイル保存、セッションでも使わない限りまだこれだけではほかのユーザーと共有することはできませんね。
とりあえず簡単なフォームを作るという上では勉強になりました。後は機能拡張すればいいかな。
追記:
おっと、忘れちゃいけないエスケープ処理!