• ベストアンサー

送信ボタンでカウントアップ

HTMLを表示して、ボタンを押すと数字がカウントされていく仕組みを作りたく悩んでいます。 <html> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <body> <?php $logfile = "./kinen.log"; if( $fn = @fopen($logfile, 'r') ) { $counter = trim(fgets($fn)); fclose($fn); } print( $counter . "本禁煙成功しました<br>"); print( ++$counter . "人目のお客様です<br>"); ?> <form> </form> <?php if( $fn = @fopen($logfile, 'w') ) { fwrite( $fn, $counter); fclose($fn); } ?> </body> </html> リロードで正常にカウントアップされていきますが、ボタンを押して動くようにはできないものでしょうか。 初心者なもので。。宜しくお願い致します。

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.3

ANo.2です。 >ボタンを押したときだけカウントアップするものでした。 であれば   <form action="" method="post">   <input type="submit" name="submit" value="更新">   </form> などとしておいて、スクリプト側で「if ($_POST)」でチェックすればGET(リロード)ではカウントしなくなります。

josephat
質問者

お礼

できました! ありがとうございます!! 念のため、スクリプト載せます <html> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <body> <?php $logfile = "./kinen.log"; if( $fn = @fopen($logfile, 'r') ) { $counter = trim(fgets($fn)); fclose($fn); } if ($_POST["submit"]){ print( $counter . "本禁煙成功しました<br>"); print( ++$counter . "人目のお客様です<br>"); } else { print( $counter . "本禁煙成功しました<br>"); } ?>   <form action="" method="post">   <input type="submit" name="submit" value="更新">   </form> <?php if( $fn = @fopen($logfile, 'w') ) { fwrite( $fn, $counter); fclose($fn); } ?> </body> </html> ちなみにページを表示した時に稀に文字化けするんですが、コレはサーバーの仕様で仕方ないものなんでしょうか。。

その他の回答 (3)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.4

>ちなみにページを表示した時に稀に文字化けするんですが、コレはサーバーの仕様で仕方ないものなんでしょうか。。 ブラウザはmetaタグよりもHTTPヘッダの方を優先します。スクリプトの最初に   header("Content-type: text/html; charset=euc-jp"); を入れてみては? #これでダメだとHTTPのリクエスト/レスポンスを見ないとわかりません(汗

josephat
質問者

お礼

有難うございます。 いろいろ勉強になりました。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

yambejpさん@ANo.1に追加で   <form action="" method="post"> の方がいいかもしれません。methodを省略するとGETになります。∴ URLの最後に「?」が付加されてしまうので。

josephat
質問者

お礼

お返事ありがとうございます。 下記に記載しましたが実現したいのが、ボタンを押したときだけカウントアップするものでした。 ページ更新だけするには、こちらの方が良いのかも知れません。 有難うございます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

<input type="submit" value="更新ボタン"> とすればよいのでは? ちなみにログファイルをロックしてないですが大丈夫?

josephat
質問者

お礼

お返事ありがとうございます すいません言葉が足らなかったみたいです。 実際には、ページを更新してカウントを増やしたいのではなく、ボタンの押した時にだけカウントを増やしたいです。 ページを更新した時もカウントが増えてしまうと何かと不都合がございまして。。。申し訳ありません。

関連するQ&A