TECH I.S.

PHP の例 - AJAX投票


AJAX投票

次の例は、リロードせずに結果が表示されるポーリングを示しています。

これまでのところ、PHPとAJAXは気に入っていますか?

はい: いいえ:

例の説明 - HTMLページ

ユーザーが上記のオプションを選択すると、「getVote()」という関数が実行されます。関数は「onclick」イベントによってトリガーされます。

<html> <head> <script> function getVote(int){   var xmlhttp=new XMLHttpRequest();  xmlhttp.onreadystatechange=function() {    if (this.readyState==4 && this.status==200) {     document.getElementById("poll").innerHTML=this.responseText;     }   }  xmlhttp.open("GET","poll_vote.php?vote="+int,true);  xmlhttp.send(); } </script> </head> <body> <div id="poll"> <h3>Do you like PHP and AJAX so far?</h3> <form> Yes:<input type="radio" name="vote"value="0" onclick="getVote(this.value)"><br> No:<input type="radio" name="vote"value="1" onclick="getVote(this.value)"> </form> </div> </body> </html>

getVote()関数は次のことを行います。

  • XMLHttpRequestオブジェクトを作成する。
  • サーバーの応答が準備できたときに実行する関数を作成する。
  • サーバー上のファイルにリクエストを送信する。
  • パラメーター(投票)がURLに追加されていることに注意してください(yesまたはnoオプションの値を使用)。

PHPファイル

上記のJavaScriptによって呼び出されるサーバー上のページは、「poll_vote.php」という名前のPHP ファイルです。

<?php $vote = $_REQUEST['vote']; //get content of textfile $filename = "poll_result.txt"; $content = file($filename); //put content in array $array = explode("||", $content[0]); $yes = $array[0]; $no = $array[1]; if ($vote == 0) {   $yes = $yes + 1; } if ($vote == 1) {   $no = $no + 1; } //insert votes to txt file $insertvote = $yes."||".$no; $fp = fopen($filename,"w"); fputs($fp,$insertvote); fclose($fp); ?> <h2>Result:</h2> <table> <tr> <td>Yes:</td> <td><img src="poll.gif" width='<?php echo(100*round($yes/($no+$yes),2)); ?>' height='20'> <?php echo(100*round($yes/($no+$yes),2)); ?>% </td> </tr> <tr> <td>No:</td> <td><img src="poll.gif" width='<?php echo(100*round($no/($no+$yes),2)); ?>' height='20'> <?php echo(100*round($no/($no+$yes),2)); ?>% </td> </tr> </table>

値はJavaScriptから送信され、次のことが起こります。

  1. 「poll_result.txt」ファイルの内容を取得する。
  2. ファイルの内容を変数に入れ、選択した変数に1つ追加します。
  3. 結果を「poll_result.txt」ファイルに書き込みます。
  4. 投票結果のグラフ表示を出力する。

テキストファイル

テキストファイル(poll_result.txt)は、投票のデータを保存する場所です。

次のように保存されます。

<div>0||0</div>

最初の数字は「はい」の票を表し、2番目の数字は「いいえ」の票を表します。

注:Webサーバーがテキストファイルを編集できるようにしてください。Webサーバー(PHP)だけが、アクセス出来るように許可して下さい。



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細