ホームページ > バックエンド開発 > PHPチュートリアル > PHPとAjaxを組み合わせて投票機能を実装

PHPとAjaxを組み合わせて投票機能を実装

墨辰丷
リリース: 2023-03-30 11:36:02
オリジナル
1363 人が閲覧しました

この記事では主に PHP と Ajax を組み合わせた投票機能の実装について紹介します。興味のある方はぜひ参考にしてください。

この AJAX の例では、Web ページがリロードせずに結果を取得できるようにする投票プログラムを示します。

この例には 4 つの要素が含まれています:

① HTML フォーム
② JavaScript
③ PHP ページ
④ 結果を保存するテキスト ファイル

1. HTML フォーム

これは HTML ページです。これには、単純な HTML フォームと JavaScript ファイルへの接続が含まれています:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

<html>

<head>

<script src="poll.js"></script>

</head>

<body>

<p id="poll">

<h2>Do you like PHP and AJAX so far?</h2>

<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>

</p>

</body>

</html>

ログイン後にコピー

例の説明 - HTML フォーム

ご覧のとおり、上記の HTML ページには、

要素を持つ単純な HTML フォームが含まれています。 。

フォームは次のように機能します:

1. ユーザーが「はい」または「いいえ」を選択すると、イベントがトリガーされます
2. イベントがトリガーされると、getVote() 関数が実行されます
3. form は

の「poll」という名前のメッセージです。 getVote() 関数からデータが返されると、返されたデータがフォームを置き換えます。

2. テキスト ファイル

テキスト ファイル (poll_result.txt) には、投票プログラムからのデータが保存されます。

次のようになります:

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

注: このテキスト ファイルの編集は Web サーバーのみに許可してください。 Web サーバー (PHP) 以外にはアクセスを許可しないでください。

3. JavaScript

JavaScript コードは「poll.js」に保存され、HTML ドキュメントに接続されます:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

var xmlHttp

function getVote(int)

{

xmlHttp=GetXmlHttpObject()

if (xmlHttp==null)

{

 alert ("Browser does not support HTTP Request")

 return

}

var url="poll_vote.php"

url=url+"?vote="+int

url=url+"&sid="+Math.random()

xmlHttp.onreadystatechange=stateChanged

xmlHttp.open("GET",url,true)

xmlHttp.send(null)

}

function stateChanged()

{

 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")

 {

 document.getElementById("poll").

 innerHTML=xmlHttp.responseText;

 }

}

function GetXmlHttpObject()

{

var objXMLHttp=null

if (window.XMLHttpRequest)

{

 objXMLHttp=new XMLHttpRequest()

}

else if (window.ActiveXObject)

{

 objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")

}

return objXMLHttp

}

ログイン後にコピー

例の説明:

stateChanged() 関数と GetXmlHttpObject 関数は PHP および AJAX リクエストで使用されますセクションの例と同じです。

getVote()関数

この関数は、ユーザーがHTMLフォームで「はい」または「いいえ」を選択したときに実行されます。

1. サーバーに送信する URL (ファイル名) を定義します
2. 入力フィールドの内容を含むパラメーター (投票) を追加します
3. サーバーがキャッシュされたファイルを使用しないようにするための乱数を追加します
4 GetXmlHttpObject 関数を呼び出して XMLHTTP オブジェクトを作成し、変更がトリガーされたときに stateChanged 関数を実行するようにオブジェクトに指示します
5. 指定された URL を使用して XMLHTTP オブジェクトを開きます

6. 4. PHP ページ

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

<?php

$vote = $_REQUEST[&#39;vote&#39;];

//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=&#39;<?php echo(100*round($yes/($no+$yes),2)); ?>&#39;

height=&#39;20&#39;>

<?php echo(100*round($yes/($no+$yes),2)); ?>%

</td>

</tr>

<tr>

<td>No:</td>

<td>

<img src="poll.gif"

width=&#39;<?php echo(100*round($no/($no+$yes),2)); ?>&#39;

height=&#39;20&#39;>

<?php echo(100*round($no/($no+$yes),2)); ?>%

</td>

</tr>

</table>

ログイン後にコピー

例の説明:

選択された値が JavaScript から渡されると、次のことが起こります:

1. 「poll_result.txt」ファイルの内容を取得します

2. ファイルの内容を変数に入れて追加します。 1. 変数が蓄積されます
3. 結果を「poll_result.txt」ファイルに書き込みます
4. グラフの投票結果を出力します

概要: 以上がこの記事の内容です。みんなの学習に役立つでしょう。

関連推奨事項:

チェックイン機能のPHP実装(事例)

WeChatパブリックアカウントの記事ページの取得方法

WeChatパブリックアカウントの履歴メッセージの取得方法

以上がPHPとAjaxを組み合わせて投票機能を実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
PHP 拡張子 intl
から 1970-01-01 08:00:00
0
0
0
phpのデータ取得?
から 1970-01-01 08:00:00
0
0
0
PHP GET エラー レポート
から 1970-01-01 08:00:00
0
0
0
phpを上手に学ぶ方法
から 1970-01-01 08:00:00
0
0
0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート