• ベストアンサー

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

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> リロードで正常にカウントアップされていきますが、ボタンを押して動くようにはできないものでしょうか。 初心者なもので。。宜しくお願い致します。

  • PHP
  • 回答数4
  • ありがとう数6

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

  • ベストアンサー
  • 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

  • 戻りボタンについて

    過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 掲示板のページを戻る(やり直しが出来る)ボタンをつくりたいのですが、戻るとページの内容が既に書き込まれてしまい、戻りボタンが機能しません。機能させるにはどうしたらよいでしょうか? ソースは以下です。 <?php $title = $_REQUEST["title"]; $title = str_replace("\t", " ", $title); $namae = $_REQUEST["namae"]; $namae = str_replace("\t", " ", $namae); $body = $_REQUEST["body"]; $body = str_replace("\t", " ", $body); ?><html> <head> <title>Sample01</title> </head> <body> <?php $log = $title . "\t" . $namae . "\t" . $body . "\n"; $fp = fopen("../php/test1.txt","a"); fwrite($fp,$log); fclose($fp); echo "書込み確認画面", "<a href=\"./form.php\"></a>"; ?> <br><br> タイトル <table border="1" width="200" ><tr><td> <?= $title; ?> </td></tr></table> </font><br><br> 名前 <table border="1" width="200" ><tr><td> <?= $namae ?> </td></tr></table> </font><br><br> メッセージ <table border="1" width="350" ><tr><td> <?= $body; ?> </td></tr></table><br><br> <form name="form" action="./form.php" method="POST"> <input name="write" type="submit" value="書込"> </form> <form> <input type=button value="戻る" onClick='history.back();'> </form> <hr color="black" width="44%" align="left"> </form> <a href="form.php">掲示板へ</a> </body> </html> わかる方おりましたらご教授お願いします。

    • ベストアンサー
    • PHP
  • html テキストボックスに文字が残って困っています。

    html php 初心者ですよろしくお願いいたします。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Pragma" content="no-cache"> <title>ひとこと掲示板</title> </head> <body> <form method="get" action="bbs_form.php"> <input type="text" name="content" size="60"> <input type="submit" value="送信"> </form> <hr> <?php $contents = file_get_contents('aaaa.txt'); print($content); $content = htmlspecialchars($_GET['content']); if ($content) { $contents = "$content<hr>\n$contents"; $fp = fopen("aaaa.txt", "a"); @fwrite( $fp, "$content"."/"); fclose($fp); } $c=0; for($a = 0 ; $a != 10000 ; $a++){ $ss = mb_substr($contents,$c,1); if($ss == "/"){ print("<br><hr />"); } else{ print($ss); } $c++; } $content = ""; ?> </body> </html> このプログラムでテキストボックスに値を入力します。 そしてf5で更新を押すとキャッシュがのこってるせいなのか、 入力していないはずのテキストボックスに値がのこりつづけます。 その値を消してクリアにしたいのですが、 いい方法はありませんでしょうか? よろしくお願いいたします。

  • ボタン押したときだけカウント

    http://www.sic.shibaura-it.ac.jp/~p00050/ でホームページを作っています。 左下のほうにあるリンクをクリックしたときだけ、カウントが上がるようにしたいんです。 でも表示更新したときにもカウントが上がってしまいます。 左下の部分のフレームはcount.cgiで、ソースは次のとおり。 #!/usr/local/bin/perl $data = 'data.dat'; open(F, "$data"); $count = <F>; close(F); $count++; open(F, ">$data"); print F "$count"; close(F); print "content-type:text/html\n\n"; print "<body bgcolor=black topmargin=0 leftmargin=0 bottommargin=0 rightmargin=0>\n"; print "<font color=lightgrey size=2><p align=center>ポイント <b>$count</b><br>\n"; print "このページに共感した人は、<br>好きなだけ<a href=count.cgi target=count>ここ</a>を押してください。"; print "</p></font></body>\n";

    • 締切済み
    • CGI
  • a.phpにあるアクセスカウンターの数値を取得する

    質問を出すのは初めてでプログラム1年生です。 質問内容は a.phpにあるアクセスカウンターの数値をb.phpに呼び出したいのですが、可能なのでしょうか?? ちなみにb.phpではアクセスカウントを増やしたくありません。 <form>で括り$_GETで呼び出すなどしましたが、1度a.phpから飛ばないと表示されませんでした。 いろいろ類似する質問や記事を見て試行錯誤しましたが、どうしても表示されません。 どなたか教えていただけたら幸いです。 a.phpで記載している内容です。 <?php $counter_file = 'counter.txt'; $counter_lenght = 8; $fp = fopen($counter_file, 'r+'); if ($fp){ if (flock($fp, LOCK_EX)){ $counter = fgets($fp, $counter_lenght); $counter++; rewind($fp); if (fwrite($fp, $counter) === FALSE){ print('ファイル書き込みに失敗しました'); } flock($fp, LOCK_UN); } } fclose($fp); print('COUNT:'.$counter); ?> b.phpで記載している内容です。 <?php ob_start(); include("a.php"); ob_clean(); print $counter; ?> 私の取って付けたような知識では太刀打ちできませんでした。 どうかお助け願います。

    • ベストアンサー
    • PHP
  • PHPで投票カウンタの作成

    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>

    • ベストアンサー
    • PHP
  • PHPについて教えてください

    以下のコードでthanks.phpにemailとgoikenが表示されません なぜでしょうか? おそらくthanks.phpが間違えてると思いますが見直してもわかりません index.html <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <form method="POST" action="check.php"> ニックネームを入力してください<br> <input name="nickname" type="text" style="width:100px"><br> メールアドレスを入力してください<br> <input name="email" type="text" style="width:200px"><br> ご意見を一言でお聞かせください<br> <input name="goiken" type="text" style="width:300px"><br> <input type="submit" value="送信"> </form> </body> </html> check.php <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; if ($nickname==''){ print'ニックネームが入力されていません<br>'; } else { print'ようこそ'; print $nickname; print' 様'; print'<br>'; } if ($email==''){ print'メールアドレスが入力されていません<br>'; } else { print'メールアドレス:'; print $email; print'<br>'; } if ($goiken==''){ print'ご意見が入力されていません<br>'; } else { print'ご意見『'; print $goiken; print'』<br>'; } if($nickname=='' || $email='' || $goiken=''){ print'<form>'; print'<input type="button" onclick="history.back()" value="戻る">'; print'</form>'; } else { print'<form method="post" action="thanks.php">'; print'<input name="nickname" type="hidden" value="'.$nickname.'">'; print'<input name="email" type="hidden" value="'.$email.'">'; print'<input name="goiken" type="hidden" value="'.$goiken.'">'; print'<input type="button" onclick="history.back()" value="戻る">'; print'<input type="submit" value="OK">'; print'</form>'; } ?> </body> </html> thanks.php <DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <?php $nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken']; print $nickname; print'様<br>'; print'ご意見ありがとうございました<br>'; print'頂いたご意見『'; print $goiken; print '』<br>'; print $email; print'宛にメールを送信しました'; ?> </body> </html>

    • ベストアンサー
    • PHP
  • ?をつけて送信してもだめでしょうか

    ちゃんと表示されるのは これを実行したときで <?php $handle = fopen("jikken.csv", "r"); while (($data = fgetcsv($handle,1000, ",")) !== FALSE) { $num = count($data); if($data[0] == 9999999){ echo $data[1]."<br>\n"; } } fclose($handle); ?> しかし <?php $codex = $_POST['code']; $handle = fopen("jikken.csv", "r"); while (($data = fgetcsv($handle,1000, ",")) !== FALSE) { $num = count($data); if($data[0] == $codex){ echo $data[1]."<br>\n"; } } fclose($handle); ?> このように入れて ~~.php?code=9999999 としても うまくいかないのです 何がおかしいのでしょうか

    • 締切済み
    • PHP
  • フォームで作った送信ボタンが何も反応しないのですが

    お世話になります。 「いきなりはじめるPHPワクワク・ドキドキの入門教室 」という本に 従って、フォームの送信ボタンを作成したのですが、以下の症状が出ます。 ・送信ボタンはクリックすると色が一瞬変わりますが、何も 起きません。 ・フォームの枠内でenterを押すとcheck.phpに飛びますが、 表示されるのが、check.phpのHTMLが表示される。 (色々いじっている際、1、2度はcheck.phpの ブラウザ上の表示が出たことがありました。その際も送信ボタンでなく フォームの枠内でenterで表示) index.htmlの内容は以下の通りです。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>PHP基礎</title> </head> <body> <form method="post" action="check.php"> ニックネームを入力してください。<br /> <input name="nickname" type="text" style="width:100px"><br /> <br /> <input type="submit" value="送信"> </form> </body> </html> 環境は、 Mac OS X バージョン10.9.4 ブラウザは Google Chromeバージョン 35.0.1916.153 です。 ネットでも色々調べてみたのですが、 解決できなかったので質問させていただきます。 以上どうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • 【送信】ボタンが無反応!?

    いつも大変お世話になり誠にありがとうございます。 標記の件。 色々と試みましたが、何も反応しません。 MySQLに登録して、 「送信完了しました。ありがとうございます。」と出したいのですが、何も反応しません。 form.php <body> <div class="v_line_fix"> <h1>Blog K・T</h1> <h2><a href="index.html">トップページ</a></h2> <h2>ブログフォーム</h2> <form method="POST" action="blog_create.php">  ペンネーム<br> <input type="text" name="name" ><br>   ブログタイトル<br>   <input type="text" name="title" ><br>    カテゴリー<br> <input type="text" name="category" ><br> ブログ本文<br> <textarea name="content" id="content" cols="50" rows="80"></textarea><br> <input type="submit" value="確認画面へ"> </form> <p><a href="index.php">戻る</a></p> </body> </html> blog_create.php <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Blog</title> </head> <body> <?php $name = $_POST["name"]; $title = $_POST["title"]; $category = $_POST["category"]; $content = nl2br($_POST["content"]); //$post_at = $_POST["post_at"]; echo "ペンネーム{$name}"; echo "ブログタイトル{$title}"; echo "カテゴリー {$category}"; echo "本文 {$content}"; ?> <hr> <br> <input type="submit" action="/kanryou.php" value="送信する"> </main> </body> kanryou.php <body> <header> <h1>PHP</h1> </header> <main> <h2>登録結果!</h2> <?php <pre> <?php try{ $db = new PDO('mysql:dbname=blog_app;host=localhost;charset=utf8','root'); $count = $db->exec('INSERT blog (id ,name,title ,category ,content , post_at=timestamp()'); ( $_POST['id'] ,mb_substr(0,$name),mb_substr(0,$title),mb_substr(0,$category),mb_substr(0,$content), post_at=timestamp()'); echo $count . "件のデータを登録しました!"; } catch(PDOException $e){ echo 'DB接続エラー' . $e->getMessage(); } ?> </pre> </main> </body> echo "送信完了です。ありがとうございました。"; ?> すみません。 どうしても、無反応です。 困っています。 教えてください。 どうぞ宜しくお願い申し上げます。

    • ベストアンサー
    • MySQL
  • Submit(送信ボタン)を押した回数を数える方法。

    こんにちはPHP初心者なのですが、 submit.phpというフォームで好きなキャラクター名を 入力しSubmit(送信ボタン)を押して送信された 回数をカウントする事はできますでしょうか。 どのように記述をするか想像がつかず、質問させて頂きました。 カウントした数字は、count.phpに 合計 ○ 回の送信を受けました。 好きなキャラクター名(daisuki) データを受信した年/月/日 時間(jikan) という形で表示させたいです。HTMLの表示の仕方はしたに 記載しました。 データベースは id daisuki jikan で作成しています。 どたたかお力を貸してください。 ご教授お願い致します。 ///////////////////////////////////////////////////////////// submit.php <html"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>フォームから受け取ったデータの回数</title> </head> <body> <form id="form1" name="form1" method="post" action=""> <label>好きなキャラクター名を入力。<br /> <input name="textfield" type="text" id="textfield" size="60" maxlength="60" /> </label> <label> <br /> <br /> <input type="submit" name="button" id="button" value="送信ボタン" /> </label></form> </body> </html> ////////////////////////////////////////////////////////////// count.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <body> <p>合計 5 回送信を受けました。</p> <p>&nbsp;</p> <table width="100%" border="1" cellspacing="5" cellpadding="0"> <tr> <td width="48%">好きなキャラクター名 </td> <td width="52%">時間</td> </tr> <tr> <td>アンパンマン</td> <td>2008/10/23 12:24:2</td> </tr> <tr> <td>天丼マン</td> <td>2008/10/19 10:24:11</td> </tr> <tr> <td>ドキンちゃん</td> <td>2008/10/1 21:24:47</td> </tr> <tr> <td>釜飯どん</td> <td>2008/9/04 12:54:47</td> </tr> <tr> <td>シンジくん</td> <td>2008/5/22 12:24:30</td> </tr> </table> <p><br /> </p> </body> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう