- ベストアンサー
PHPで投票カウンタの作成
- PHPを使用して投票カウンタを作成する方法について教えてください。
- ラジオボタン3つを配置し、選択した項目のカウントを表示する投票カウンタをPHPで実装したいです。
- フォームを作成し、OKボタンを押すと選択した項目のカウントが増える投票カウンタをPHPで作成したいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1さんの言うようにcookieに保存する意味はまるでないですが、 まぁ練習ということで。しかし60秒で消えるのは早すぎなので、 30分にしました。各関数についてはマニュアルを参照。 <?php $value = unserialize($_COOKIE['value']); for ($i = 1; $i <= 3; $i++) { // やっとかないと何も表示されなかったりする if ($value[$i] == '') { $value[$i] = 0; } } if ($_SERVER['REQUEST_METHOD'] == 'POST') { $value[$_POST['tohyo']]++; } setcookie('value', serialize($value), time() + 1800); ?> <html> <head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP" /> <title>投票カウンター</title> </head> <body> <form action="count2.php" method="post"> <p> <?php for ($i = 1; $i <= 3; $i++) { echo "<input type=\"radio\" name=\"tohyo\" value=\"$i\" />$i ($value[$i])\n"; } ?> </p> <input name="submit" type="submit" value="投票" /> </form> </body> </html>
その他の回答 (2)
- ulmo
- ベストアンサー率43% (197/454)
ANo.2 ulmoです。 練習なら、なおさら自分でやりましょう。 私のコードは、たぶんあなたの希望通りに動作してると思います。 しっかり解析して下さい。 ヒントとして、 ・$value を表示してますが、元のコードでは何もセットされてないことに気づいてますか? フォームから送信される変数は、method="post" なら $_POSTに、 でなければ $_GET に保存されます。この場合、$_GET['tohyo'] に値がセットされます。 ・$_SERVER['REQUEST_METHOD'] をチェックしないで外部変数を取り込むには、 $_POST と $_GET の両方をチェックする必要があります。 素直に $_SERVER['REQUEST_METHOD'] を使うべきでしょう。 ・serialize()を用いずに cookie に配列を保存するには、 要素を一つずつ setcookie() しなくてはなりません。 ・ちなみに <?php print $foo; ?> は <?=$foo?> とも書けます。
- memphis140
- ベストアンサー率34% (100/288)
結果はCOOKIEに保存するのですか? それだとPC毎にカウンタが違いますが・・・その仕様でいい?
お礼
>結果はCOOKIEに保存するのですか? はい。結果はCOOKIEに保存します。
お礼
ご回答ありがとうございます。 この問題は練習のためのものですので、投票するのは自分のPCからだけです。 ですので、自分が書いたコードを少し発展させた形にしたいのです。 unserializeや$_SERVERなどを使用しないで作成することはできないでしょうか? 無理いってすみません。