PHPで投票カウンタを作成したいと思います。
構造としてはラジオボタンが3つ並んでいて、そのどれかを選び
下にあるOK(ひとつだけ)ボタンをクリックすると、ラジオボタンの横に数値がカウントされるという簡易的なものです。
下記のコードに足りないところやいらないところを教えてください。
ド素人のためご教授願います。
<?php
if(isset($_COOKIE["tohyo"])){
$tohyo = $_COOKIE["tohyo"];
$tohyo++;
}else{
$tohyo = 0;
}
setcookie("tohyo", $tohyo, time()+60);
?>
<html>
<head>
<title>投票カウンター</title>
</head>
<body>
<form action="count2.php">
<p>
<input type="radio" name="tohyo" value="1"><?php print $value["$kekka"][1]; ?><br>
<input type="radio" name="tohyo" value="2"><?php print $value["$kekka"][2]; ?><br>
<input type="radio" name="tohyo" value="3"><?php print $value["$kekka"][3]; ?>
</p>
<input name="submit" type="submit" value="投票">
</form>
</body>
</html>
No.2ベストアンサー
- 回答日時:
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>
ご回答ありがとうございます。
この問題は練習のためのものですので、投票するのは自分のPCからだけです。
ですので、自分が書いたコードを少し発展させた形にしたいのです。
unserializeや$_SERVERなどを使用しないで作成することはできないでしょうか?
無理いってすみません。
No.3
- 回答日時:
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?> とも書けます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP php ログイン 1 2022/11/01 00:24
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPで画像の渡しが上手く行きま...
-
DBの値をチェックボックスに反...
-
<input type="hidden" >で配列...
-
PHP ボタンが押されたら処理を...
-
フォームへの前回入力値をクリ...
-
PHPのページ間による配列の受け...
-
チェックボックスの必須項目指定
-
演算子について教えてください。
-
auサイトで変数のついた同一URL...
-
PHPで動的URLを静的URLに変換す...
-
パラメーターを隠す
-
swich文を使ったメールフォーム...
-
phpの掲示板で新しい順に表...
-
HTMLで前の画面に戻る時、入力...
-
PHPで郵便番号を検索し、住所を...
-
同じページでフォームデータを...
-
PHP DBの登録情報をラジオボタ...
-
検索時の選択内容を保持する方法 2
-
チェックボックスについて
-
PHPで、ボタンを押すと同じペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
PHP ボタンが押されたら処理を...
-
検索時の選択内容を保持する方法
-
PHPで画像の渡しが上手く行きま...
-
フォームでのリセットを使う方法
-
入力フォーム→確認画面→送信画...
-
PHPでユーザー情報を入力して簡...
-
syntax error, unexpected '}' ...
-
PHPで、ボタンを押すと同じペー...
-
フォームへの前回入力値をクリ...
-
フォームボタンを押すたびに数...
-
Javascript→PHPに...
-
PHPとHTML+Xamppの掲示板で画像...
-
チェックボックスによる検索
-
PHPでCookieを使った訪問回数に...
-
PHPの関数実行
-
DBの値をチェックボックスに反...
-
ラジオボタンをsessionで使いたい
-
【HTML(PHP?)】複数のフォーム...
おすすめ情報