PHP AJAX 投票应用

我们已经学习了 HTML 如何使用 AJAX 与 PHP 进行数据交换,接下来作为这个主题的最后一篇课程,我们来学习一下如何使用 PHP 与 AJAX 做一个投票的应用程序

这个投票应用主要功能就是展示一个投票选项,然后通过 AJAX 在不刷新页面的情况下显示结果

投票程序

你喜欢 PHP 和 AJAX 吗?

是:
否:

开发这个投票程序

1. 先准备前端 HTML 页面

在这个页面中,当用户选择某个选项时,会触发 onclick 事件执行名为 "getVote()" 的函数

php_ajax_vote_form.php

<!DOCTYPE html>
<meta charset="utf-8">
<title>投票小程序 | 简单编程(www.twle.cn)</title>
<script>
function getVote(int)
{
  if (window.XMLHttpRequest)
  {// IE7+, Firefox, Chrome, Opera, Safari 执行代码
    xmlhttp=new XMLHttpRequest();
  }
  else
  {// IE6, IE5 执行代码
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function()
  {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
      document.getElementById("poll").innerHTML=xmlhttp.responseText;
    }
  }
  xmlhttp.open("GET","/php_ajax_vote.php?vote="+int,true);
  xmlhttp.send();
}
</script>
<div id="poll" style="border:1px solid #dddddd;padding:5px;height:140px">
<p>你喜欢 PHP 和 AJAX 吗?</p>
<form id="form">
是: 
<input type="radio" name="vote" value="0" onclick="getVote(this.value)">
<br>
否: 
<input type="radio" name="vote" value="1" onclick="getVote(this.value)">
</form>
</div>

getVote() 函数会执行以下步骤

  1. 创建 XMLHttpRequest 对象
  2. 创建在服务器响应就绪时执行的函数
  3. 向服务器上的文件发送请求
  4. 请注意添加到 URL 末端的参数(q)(包含下拉列表的内容)

2. 接收和处理投票

我们的 php_ajax_vote_form.php 会通过 JavaScript 调用的服务器页面是名为 "php_ajax_vote.php" 的 PHP 文件

<?php
$vote = htmlspecialchars($_REQUEST['vote']);

// 获取文件中存储的数据
$filename = "poll_result.csv";

if  ( ! is_file($filename))
{
    touch($filename);
}

$fp = fopen($filename,'r');

$content = trim(fread($fp,4096));

$array = array(0,0);
if ( !empty($content))
{
  // 将数据分割到数组中
  $array = explode(",", $content);
}
$yes = intval($array[0]);
$no = intval($array[1]);

if ($vote == 0)
{
  $yes = $yes + 1;
}

if ($vote == 1)
{
  $no = $no + 1;
}

// 插入投票数据
$insertvote = $yes.",".$no;
$fp = fopen($filename,'w');
fputs($fp,$insertvote);
fclose($fp);
?>

<p>结果:</p>
<p>是: <span style="display: inline-block; background-color:green;
      width:<?php echo intval(300 * $yes / ($no+$yes)); ?>px;
      height:20px;" ></span>
  <?php echo $yes; ?>
</p>
<p>否: <span style="display: inline-block; background-color:red;
      width:<?php echo intval(300*$no/($no+$yes)); ?>px;
      height:20px;"></span>
  <?php echo $no; ?>
</p>

当所选的值从 JavaScript 发送到 PHP 文件时

  • 获取 "poll_result.csv" 文件的内容
  • 把文件内容放入变量,并向被选变量累加 1
  • 把结果写入 "poll_result.csv" 文件
  • 输出图形化的投票结果

3. 存储投票结果

我们使用文件来存储投票结果

在你的数据目录下创建一个文件名为 poll_result.csv 文件存储来自投票程序的数据

数据格式如下

3,4
  1. 第一个数字表示 "Yes" 的投票数
  2. 第二个数字表示 "No" 的投票数。

为了安全起见,只允许你的 Web 服务器来编辑该文本文件 不要 让其他人获得访问权,除了 Web 服务器 (PHP)

这个投票小程序演示如下

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.