
count.txt
<?php
$dis123=0;
$dis001=0;
$hoge01=0;
?>
___________
counter.php
<?php
$vote = $_GET[vote];
$fp = fopen("count.txt", "r+");
include("count.txt");
@flock($fp,LOCK_EX);
//今現在(カウント前)の値を書き込む
fputs($fp,"<?php \$dis123=$dis123; ?>\n");
fputs($fp,"<?php \$dis001=$dis001; ?>\n");
fputs($fp,"<?php \$hoge01=$hoge01; ?>\n");
//GETで得た情報からカウントした物に+1して書き込む
if ($vote===dis123){
++$dis123;
fputs($fp,"<?php $$vote=$dis123; ?>\n");
}
if ($vote===dis001){
++$dis001;
fputs($fp,"<?php $$vote=$dis001; ?>\n");
}
if ($vote===hoge01){
++$hoge01;
fputs($fp,"<?php $$vote=$hoge01; ?>\n");
}
flock($fp,LOCK_UN);
fclose($fp);
echo "dis123は".$dis123."点<br>";
echo "dis001は".$dis001."点<br>";
echo "hoge01は".$hoge01."点<br>";
?>
_________________________________
処理:
counter.php?vote=dis123ときたらif処理して$dis123に+1する
________________________
今は三つだからまだ大丈夫ですが、これが増えてくると手間が多いです
そこで上記の今現在の値の書き込みとIF処理の部分を代入など、なんらかの形で簡略化できませんでしょうか?大改編になっても結構です。
よろしくお願いします。
備考:PHP暦三日目です、ここまでなんだかんだがんばったと思う。

No.5ベストアンサー
- 回答日時:
flockについてだけど、個人的な主観として必要を感じていません
なぜなら、それだけアクセスが集中されるほど注目を浴びている
ページは少ないと思うので・・・(悪意はありませんよ!)
人間が連打したところ秒速何回?
PHP側で1秒あれば何回処理を終えるか?
なので、ファイルのオープン時間をできるだけ短くするだけ
良いと考えてます。
プロにつっこまれるかな?
他人が書いたプログラムを理解するのは難儀でしょうが
勉強になると思います。(俺のは微妙?)
がんばってください!
逆ポイントプレゼントしておきました!^^;
わ、昨日の間に解決していたのにわざわざ書き込んでいただきありがとうございます!あちらに書いたのですが、削除しちゃったのかな?。
ここのシステムですと、投稿後に解決した場合などに修正が効かないうえに、回答がないと新しく経過報告もできないのが不便ですよね・・・
このせいで過去に何度かすれ違いがありました。
ちなみにもともとPHP覚えるつもりなかったんですけどね!(ぇ
使ってみて結構便利だなって思ったのですが、PHPを使える無料サーバーってまだまだ少ないです・・・。
いやぁ、ほんと、ありがとうございました~!

No.4
- 回答日時:
<?php
$f=fopen('num.dat','r');if(!$f) exit;
$data=split(',',fgets($f));fclose($f);
echo 'Click counter List.<br>';
for($i=0;$i<100;$i++) echo 'No.'.$i.'='.$data[$i].'<br>';
ということで、そろそろ上達したかな?
PHP側で行うと「画面の更新」をしなと変化がおきない
Ajaxを利用するとリアルタイムでカウントしていくのがわかる!
たとえばJavascript側で5秒おきにチェックさせるとか!?
まぁPHPでJavascriptを含むコードをかけばPHPは強大だけどね。
この回答への補足
せっかくなのでできたものを記念に投稿。
counter.php by pipi様
<?php
$f=fopen('num.dat','r');if(!$f) exit;
$data=split(',',fgets($f));fclose($f);//カンマで区切って配列にいれる。
$no=$_GET['no'];
switch( $_GET['m']){
case '0':
if(strlen($no)==0) exit;
echo ($data[$no]!=null)?$data[$no]:0;
break;
case '1':
$data[$no]+=1;
$wd = '';
for($i=0;$i<100;$i++) $wd.=(($data[$i]!=null)?$data[$i]:0).',';
$f=fopen('num.dat','w');fputs($f, $wd);fclose($f);
echo ($data[$no]!=null)?$data[$no]:0;
}
?>
test.php
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=shift_jis">
<title>クリックカウント</title>
<script type="text/javascript" src="xmlhttp.js"></script>
<script type="text/javascript"><!--
var flag={};
function activate(i,num){
if (flag[i]==false||flag[i]==undefined){
flag[i]=1;
dataSave(i,num);
}
else {
dataSave(i,num);
}
function dataSave(i,num)
{
if(flag[i]<=5){++flag[i];
httpObj = createXMLHttpRequest(displayData);
if (httpObj)
{
httpObj.open("POST","counter.php?m=1&no="+num,true);//ここのつっこみはなしでお願いしますw
httpObj.send(null);
}
}}
function displayData()
{
if ((httpObj.readyState == 4) && (httpObj.status == 200))
{
$(i).innerHTML = httpObj.responseText;
}else{
$(i).innerHTML = "<b>Wait...</b>";
}
}}
// --></script>
<?php
$f=fopen('num.dat','r');if(!$f) exit;
$data=split(',',fgets($f));fclose($f);
?>
</head>
<body>
<span onclick="activate('cut0','0')" style="cursor: pointer;text-decoration:underline;">ボタン0</span>を
<span id="cut0"><?php echo ($data[0]!=null)?$data[0]:0;; ?></span>回おしました。<br>
<span onclick="activate('cut1','1')" style="cursor: pointer;text-decoration:underline;">ボタン1</span>を
<span id="cut1"><?php echo ($data[1]!=null)?$data[1]:0; ?></span>回おしました。<br>
<span onclick="activate('cut2','2')" style="cursor: pointer;text-decoration:underline;">ボタン2</span>を
<span id="cut2"><?php echo ($data[2]!=null)?$data[2]:0; ?></span>回おしました。<br>
</body>
</html>
xmlhttp.js
// HTTP通信用、共通関数
function createXMLHttpRequest(cbFunc)
{
var XMLhttpObject = null;
try{
XMLhttpObject = new XMLHttpRequest();
}catch(e){
try{
XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
return null;
}
}
}
if (XMLhttpObject) XMLhttpObject.onreadystatechange = cbFunc;
return XMLhttpObject;
}
// document.getElementById
function $(tagId)
{
return document.getElementById(tagId);
}
num.dat
空のファイル

No.2
- 回答日時:
>Ajax使ってるいから気にしなくてもよい!
だったので、あれで良いと思ってた^^;
それから、PHP側をちょこっと変更しました
書き込んだ後、その数値を返すようにしました。
Ajax側でそれを受け取って表示します
というかこれはAjax板の話題では?
<html>
<head>
<script type="text/javascript" src="prototype.js"></script>
</head>
<body>
<form>
<p>
NSX <input type="button" value="投票する" id="c0"> / <span id="t0">?</span> 票<br>
S2000<input type="button" value="投票する" id="c1"> / <span id="t1">?</span> 票<br>
CIVIC<input type="button" value="投票する" id="c2"> / <span id="t2">?</span> 票<br>
</p>
</form>
<script>
window.onload=function(){
document.body.onclick = chk;
}
function chk(e){
var o=e?e.target:event.srcElement,n;
var n=o.id.match(/c(\d+)$/);
if(!n||n>2) return;
var dmy = (new Date).getTime();
new Ajax.Request('test.php', {
onSuccess: function(o){document.getElementById('t'+n[1]).innerHTML=+o.responseText;},
method:'get',
parameters:'m=1&no='+n[1]+'&dmy='+dmy
});
}
</script>
----------------
test.php
<?php
$f=fopen('num.dat','r');if(!$f) exit;
$data=split(',',fgets($f));fclose($f);
$no=$_GET['no'];
switch( $_GET['m']){
case '0':
if(strlen($no)==0) exit;
echo ($data[$no]!=null)?$data[$no]:0;
break;
case '1':
$data[$no]+=1;
$wd = '';
for($i=0;$i<100;$i++) $wd.=(($data[$i]!=null)?$data[$i]:0).',';
$f=fopen('num.dat','w');fputs($f, $wd);fclose($f);
echo $data[$no];
}

No.1
- 回答日時:
ありがとうございます。
noの数字がそのまま参照する場所になるのか・・・ふむふむ
とりあえずカウンタ100個分ということですね。
すごく申し訳ないのですが、カウンタ数を表示させるスクリプトはどのように書けばいいのでしょうか?
index.php カウンタ数を表示する場所
counter.php 書いていただいたカウンター
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP ファイルの書き込みについて教えて下さい。 1 2023/03/20 12:01
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP PHP ページング データベース 1 2022/06/16 10:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpのswitch文のcaseで
-
連想配列の可変変数
-
半角数字で入力されているかチ...
-
FTPコマンドでディレクトリごと...
-
php.iniって。。
-
ファイル一覧表(LAN内の別PC)
-
フォントの色を変えるには?
-
「旭日中綬賞 」とはどんな賞で...
-
PHPのif文でその処理を途中で抜...
-
PHP postgres でロールバック...
-
phpのプログラムエラー
-
mod_phpとcgi版phpはなにがどう...
-
mb_send_mail関数が利用出来ない
-
PDOとmysql_real_escape_str
-
require_once で読み込まれたか?
-
CakePHP2のCronでのShellを使う...
-
APIで出てきたXMLをPHPで表示さ...
-
PHPで吐き出した画像にリンクを...
-
複数ページのセッションの送り方
-
PHPでの別のサーバーのテキスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPのタイムアウトについて
-
「include()」関数の使い方につ...
-
php で C言語のdefineマクロの...
-
echo "あいう"; としても ブラ...
-
検索結果を2列で表示させたい
-
PHP Mysql SELECTであいまい検...
-
同じような処理を一つにまとめたい
-
PHP MySql ページング
-
phpのurlパラメータで取得した...
-
phpの改行コードについて
-
atomのフィードをphpで出力したい
-
yahooAPIを使って表示させた文...
-
cakephpのサブタイトルはどこで...
-
echoの出力がうまくできない
-
array文について!
-
BASIC認証のユーザー名をPHPで...
-
訪問回数が素数の場合、違うメ...
-
php rss取得方法
-
PEAR::AUTHにて情報の引き継ぎ
-
index.phpで外部PHPファイルを...
おすすめ情報