こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ボタンのクリック数を合計保存するPHPプログラム

サイト訪問者が任意でボタンをクリックしてくれた数をカウントし、合計にするPHPをどなたか教えていただけないでしょうか。

(PHPをはじめたばかりです、よろしくお願いいたします。)

index.phpのボタンをクリックすると、クリック回数をnumber.phpに上書き保存し、更にクリックされたら新しくクリックされた回数+number.phpの数の合計を上書きする、というスクリプトを書こうとしています。

index.php ここから----------------------------------------
<html>
<body>

<form action="index.php" method="get">

<input type="submit" value="クリック">

合計<input type="text" name="munber" value="<?php
$file = "munber.php";
@readfile($file);?> ">

</form>

</body>
</html>
index.php ここまで----------------------------------------


number.phpは単に数が一行あるだけです。(例として 5 )

上記のindex.phpでは、ただボタンがあり、ただnumber.phpの数(5)を表示しているだけで、足し算は行われません。(画像参照)

これをどのように書き換えると、ボタンをクリックしたらnumber.php + 1 を行い、number.phpの値も書き換える、というプログラムになるでしょうか。

※アクセス解析ではないので、IPやリファラなどは関係なく、(誰が何回でも)ボタンをクリックした回数を単純にカウントする数式が欲しいです。

どうぞよろしくお願いいたします。

投稿日時 - 2010-11-27 08:29:37

QNo.6346661

すぐに回答ほしいです

質問者が選んだベストアンサー

こんにちは。

ボタンをクリックしたらを完全に見落としてました。

リロード処理等も入れなくてはいけなくなってきますのでカウントするのは別ファイルにしたほうが良いと思います。

count.php>>

<?php
$file = "./number.php";
$fp = fopen ( $file,"r" );
$now = fgets ( $fp );
fclose ( $fp );
$now ++;
$fp = fopen ( $file, "w" );
fputs ( $fp, $now );
fclose ( $fp );
// "/test/index.php"は自分の環境に合わせる
header ( "Location: http://" . $_SERVER['HTTP_HOST'] . "/test/index.php" );
exit;
?>

>>count.php

index.php>>
<html>
<body>
<form action="count.php" method="get">
<input type="submit" value="クリック!<?php readfile("./number.php") ?>">
</form>
</body>
>>index.php

前回同様ロック処理やセキュリティの考慮は皆無ですので実運用するにはもうちょっと手を加えないといけませんがこんな感じで作ればよいと思います。

上記動作はボタンを押すとcount.phpへ飛び、カウント処理を実行後またボタンの表示されているページへ戻ります。
戻ってくるとボタンに表示されているカウントが加算されます。
更新ボタンを押した場合はカウントは変わりません。

投稿日時 - 2010-12-01 07:16:25

お礼

ありがとうございました。
長く教えてgooにログインできず、お返事が大変おそくなってしまい失礼いたしました。

投稿日時 - 2011-04-10 22:53:49

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.1

こんにちは。

単純(ファイルロックやセキュリティー等考慮せず)に作るのであれば以下のような感じで作れば動くと思います。
動きとしてはnumber.phpファイルを読み込んで加算し、その値を書き込むという動きです。

<?php

$file = "./number.php";
$fp = fopen ( $file,"r" );
$now = fgets ( $fp );
fclose ( $fp );
$now ++;
$fp = fopen ( $file, "w" );
fputs ( $fp, $now );
fclose ( $fp);
?>
<html>
<body>

<form action="index.php" method="get">

<input type="submit" value="クリック">

合計<input type="text" name="number" value="<?= $now ?>">

</form>

</body>
</html>

投稿日時 - 2010-11-29 08:25:53

お礼

こんばんは、こんな初歩の初心者の質問にお答えくださってありがとうございます。

教えていただいたコードで確かにカウントし、カウントした数字は別ファイルに上書きされるようになりました! (<input type="text" name="number" value="<?= $now ?>"> この部分がそのままでは動かなかったので、この部分はincludeでnumber.phpの内容を強制的に表示させました)

ただ、この状態で http://localhost/index.php として、index.phpに上記のタグを記入してブラウザでこのページを表示すると、ブラウザの表示やブラウザの更新ボタンをクリックした時も数をカウントしてしまいました。

できればブラウザの表示回数は計算に含めずに、ボタンをクリックした数だけをクリックできると嬉しいなと思いましたが、教えていただいた計算式さえ自分ではPHPがわからなくて、いずれにせよ、「PHP頑張ろう!!」とすごく思いました。

本当にありがとうございます!

投稿日時 - 2010-11-30 17:23:40

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-