とあるセクシーなデータ分析官

を目指す渋谷で働くソーシャルゲーム分析者の卵

課題としてに簡易投票フォーム作った

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やファイル保存、セッションでも使わない限りまだこれだけではほかのユーザーと共有することはできませんね。
とりあえず簡単なフォームを作るという上では勉強になりました。後は機能拡張すればいいかな。



追記:
おっと、忘れちゃいけないエスケープ処理!