- ベストアンサー
送信ボタンでカウントアップ
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> リロードで正常にカウントアップされていきますが、ボタンを押して動くようにはできないものでしょうか。 初心者なもので。。宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ANo.2です。 >ボタンを押したときだけカウントアップするものでした。 であれば <form action="" method="post"> <input type="submit" name="submit" value="更新"> </form> などとしておいて、スクリプト側で「if ($_POST)」でチェックすればGET(リロード)ではカウントしなくなります。
その他の回答 (3)
- shimix
- ベストアンサー率54% (865/1590)
>ちなみにページを表示した時に稀に文字化けするんですが、コレはサーバーの仕様で仕方ないものなんでしょうか。。 ブラウザはmetaタグよりもHTTPヘッダの方を優先します。スクリプトの最初に header("Content-type: text/html; charset=euc-jp"); を入れてみては? #これでダメだとHTTPのリクエスト/レスポンスを見ないとわかりません(汗
お礼
有難うございます。 いろいろ勉強になりました。
- shimix
- ベストアンサー率54% (865/1590)
yambejpさん@ANo.1に追加で <form action="" method="post"> の方がいいかもしれません。methodを省略するとGETになります。∴ URLの最後に「?」が付加されてしまうので。
お礼
お返事ありがとうございます。 下記に記載しましたが実現したいのが、ボタンを押したときだけカウントアップするものでした。 ページ更新だけするには、こちらの方が良いのかも知れません。 有難うございます。
- yambejp
- ベストアンサー率51% (3827/7415)
<input type="submit" value="更新ボタン"> とすればよいのでは? ちなみにログファイルをロックしてないですが大丈夫?
お礼
お返事ありがとうございます すいません言葉が足らなかったみたいです。 実際には、ページを更新してカウントを増やしたいのではなく、ボタンの押した時にだけカウントを増やしたいです。 ページを更新した時もカウントが増えてしまうと何かと不都合がございまして。。。申し訳ありません。
お礼
できました! ありがとうございます!! 念のため、スクリプト載せます <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> ちなみにページを表示した時に稀に文字化けするんですが、コレはサーバーの仕様で仕方ないものなんでしょうか。。