用PHP来制作调查

  有什么问题请与我联系:http://www.webjx.com web@webjx.com
 转载请注明出处

  今天给大家讲一个如何用PHP做调查的例子,通过这个例子你可以学会如何用PHP和MYSQL来实现编程,这个例子不难,希望您能有收获。

  首先创建一个MYSQ
数据库的表,表中具体包括的字段及设置如下:

# Table structure for table poll_data
#
CREATE TABLE poll_data (
ID tinyint(4) NOT NULL auto_increment,
Option1 tinyint(4) NOT NULL default '0',
Option2 tinyint(4) NOT NULL default '0',
Option3 tinyint(4) NOT NULL default '0',
Votes tinyint(4) NOT NULL default '0',
Title varchar(25) NOT NULL default '',
Question varchar(50) NOT NULL default '',
PRIMARY KEY (ID)
) TYPE=MyISAM;
  建立好了数据库表之后,我们就要开始写代码来解决这个问题了。通常我们解决一个问题,愿意把这个问题分解,从而可以各个击破,以至于整个问题得到解决。下面我们就利用这种方法来编写程序代码。
  这个调查的主要功能是:
  1.显示调查的标题和调查的问题。
  2.显示每个投票项目的标题, 总投票的百分数, 每个项目的投票的百分数。
  3.创建一个允许在调查中投票的程序文件。
  下面我们把问题分解一下:
  1.显示调查的标题和调查的问题。
    a. 连接数据库代码
    b. 从数据库中选择最新的记录。
  2.显示每个投票项目的标题, 总投票的百分数, 每个项目的投票的百分数。
    a. 为每个项目能选择投票数,并且能在调查中显示总的投票数。
    b. 投票数和总数相除能够得出百分数。
  3.创建一个允许在调查中投票的程序文件。
    a. 用户投票之后结果要更新

  我们使用一些变量来帮助我们连接数据库。代码如下:
  $dbhost = "localhost";
  $dbname = "YourDataBase";
  $dbuser = "YourUserName";
  $dbpass = "YourPass";

  然后我们开始连接数据库:
  $link_id = mysql_connect($dbhost, $dbuser, $dbpass);
  mysql_select_db($dbname);
  现在我们所做的就是具体有关数据库的内容了,要求数据库能自动增加记录,并且程序取出的是最新的记录,ID能自动升序,数据库代码如下:

$sql = "SELECT `Title`,`Question`,`ID` FROM `poll_data` ORDER BY `ID` DESC LIMIT 1";
if(!($result = mysql_query($sql))) die(mysql_error());
$PollData = mysql_fetch_array($result)

下面我们来具体选择投票的项目和计算具体的百分数!

$sql = "SELECT `Option1`,`Option2`,`Option3`,`Votes` FROM `poll_data` WHERE `ID` = '" . $PollData['ID'] . "' ORDER BY `ID` DESC LIMIT 1";
if(!($result = mysql_query($sql))) die(mysql_error());
if(!($VoteData = mysql_fetch_array($result))) die(mysql_error());

  现在我来具体实现百分数的代码,当然我们这的百分数为了显示更加具体形象,可以显示图形来代替!
if($VoteData["Option1"] != 0) {
$VotePercent1 = Round(($VoteData["Option1"] / $VoteData["Votes"]) * 100) . "%";
} else {
$VotePercent1 = 0 ."%";
}
if($VoteData["Option2"] != 0) {
$VotePercent2 = Round(($VoteData["Option2"] / $VoteData["Votes"]) * 100) . "%";
} else {
$VotePercent2 = 0 ."%";
}
if($VoteData["Option3"] != 0) {
$VotePercent3 = Round(($VoteData["Option3"] / $VoteData["Votes"]) * 100) . "%";
} else {
$VotePercent3 = 0 ."%";
}

  我们这步做一个20象素高1象素宽的任何颜色的图片。我们设置代码来用图象表示百分数:
<html>
<head>
<title>Basic Poll - Written by webjx.com</title>
</head>
<body>
<form method="POST" action="vote.php">
<table width="500" border="1" cellspacing="0" cellpadding="8">
<tr>
<td colspan="3"><b><?=$PollData['Title']?> - <?=$PollData['Question']?></b></td>
</tr>
<tr>
<td width="35%">
<input type="radio" name="Vote" value="Option1">
Yes</td>
<td width=60%>
<img src="http://www.webjx.com/htmldata/2005-03-04/bar.gif" width="<?=$VotePercent1?>" height="20">
</td>
<td><?=$VoteData["Option1"]?> Votes</td>
</tr>
<tr>
<td width="35%">
<input type="radio" name="Vote" value="Option2">
No </td>
<td width=60%>
<img src="http://www.webjx.com/htmldata/2005-03-04/bar.gif" width="<?=$VotePercent2?>" height="20">
</td>
<td><?=$VoteData["Option2"]?> Votes</td>
</tr>
<tr>
<td width="35%">
<input type="radio" name="Vote" value="Option3" >
Not Sure</td>
<td width="60%">
<img src="http://www.webjx.com/htmldata/2005-03-04/bar.gif" width="<?=$VotePercent3?>" height="20">
</td> <td><?=$VoteData["Option3"]?> Votes</td>
</tr>
<tr>
<td colspan="3">
<center>
<input type="submit" name="Submit" value="Vote">
</center>
</td>
</tr>
</table>
</form>
</body>
</html>

  现在我们来设置用户的投票的代码,当有投票之后,我们就自动计算百分数,和更新数据库,我们使用一个变量来接收投票: $_POST.

if(empty($_POST["Vote"])) die("You did not enter your vote");

  我们选择表中的最新的记录 。

$dbhost = "localhost";
$dbname = "misc";
$dbuser = "root";
$dbpass = "trigger";

$link_id = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);

$sql = "SELECT `Option1`,`Option2`,`Option3`,`Votes`,`ID` FROM `poll_data` ORDER BY `ID` DESC LIMIT 1";
if(!($result = mysql_query($sql))) die(mysql_error());
if(!($PollData = mysql_fetch_array($result))) die(mysql_error());

  我们更新数据表中的记录。我们设置1为当前的投票数, 总的投票数也设置为1. 然后我们通过程序来实现把提交的数据来更新数据表中的记录:

if($_POST["Vote"] == "Option1") {
$Votes1 = $PollData["Option1"] + 1;
$TotalVotes = $PollData["Votes"]+ 1;

$sql = "UPDATE `poll_data` SET `Option1`='$Votes1', `Votes`='$TotalVotes' WHERE `ID` = '". $PollData['ID'] . "' LIMIT 1";

if(!($result = mysql_query($sql))) die(mysql_error());
echo "Vote successful! <a href=\"index.php\">Back</a> to the poll.";
}
else if ($_POST["Vote"] == "Option2"){
$Votes2 = $PollData["Option2"] + 1;
$TotalVotes = $PollData["Votes"]+ 1;

$sql = "UPDATE `poll_data` SET `Option2`='$Votes2', `Votes`='$TotalVotes' WHERE `ID` = '". $PollData['ID'] . "' LIMIT 1";
if(!($result = mysql_query($sql))) die(mysql_error());
echo "Vote successful! <a href=\"index.php\">Back</a> to the poll.";

}
else {
$Votes3 = $PollData["Option3"] + 1;
$TotalVotes = $PollData["Votes"] + 1;

$sql = $sql = "UPDATE `poll_data` SET `Option3`='$Votes3', `Votes`= '$TotalVotes' WHERE `ID` = '". $PollData['ID'] . "' LIMIT 1";
if(!($result = mysql_query($sql))) die(mysql_error());
echo "Vote successful! <a href=\"index.php\">Back</a> to the poll.";

}

  好了整个程序到这就结束了,希望您在看这个程序时能掌握一些技巧和学到一些知识。谢谢!

时间: 2025-01-01 23:38:35

用PHP来制作调查的相关文章

ASP.NET制作调查问卷

[项目需求] 最近几天,一直在做考试系统的维护.这一次的考试,思政部的老师提出了一个需求,希望在学生考试前填写一个关于本学期本学科的几个问题调查,以便更加了解学生情况.调查问卷共有三种题型:单选.多选和填空.我负责的是多选题型. [项目概要] ASP.NET WebForm开发框架,简单的三层开发.开发环境VS2012,SQL Server2008R2数据库. [项目开发] 我们决定在已有的基础评教系统中增加一个新的页面,也就是整个调查问卷的内容.因为整个调查问卷只有四道多选题,所以,我选择把题

用ASP制作张扬个性的调查系统

随着网络的普及,网上调查往往能达到较好的效果.在自己的个人站点上放一个趣味问题调查板,着实能为网站添色不少:况且通过调查结果你能更多更准确了解网友对自己站点的看法.作为Webmaster,如果你的网站也需要就某个主题进行调查,而你又讨厌使用别人免费提供的调查板(免费往往是要付出代价的,比如打广告!),那么我建议你花十几分钟时间看完这篇介绍用ASP制作调查板的文章.你只要把文中的代码Copy到你的机子上,稍做修改,你立即就拥有一个属于你自己的个性化调查板.好了,打起精神往下看吧. 本调查板共有三个

用ASP制作个性化的调查板(附源程序)

现在,在网上做调查已经十分普遍了,很多商业网站的网页上常放有各种主题的调查板,一些商业网站也免费为网友提供调查板,比如:博大(poll.bodachina.com).因为网络的普及,网上调查往往能达到较好的效果.在自己的个人站点上放一个趣味问题调查板,着实能为网站添色不少:况且通过调查结果你能更多更准确了解网友对自己站点的看法.作为Webmaster,如果你的网站也需要就某个主题进行调查,而你又讨厌使用别人免费提供的调查板(免费往往是要付出代价的,比如打广告!),那么我建议你花十几分钟时间看完这

用ASP制作个性化的调查板

现在,在网上做调查已经十分普遍了,很多商业网站的网页上常放有各种主题的调查板,一些商业网站也免费为网友提供调查板,比如:博大(poll.bodachina.com).因为网络的普及,网上调查往往能达到较好的效果.在自己的个人站点上放一个趣味问题调查板,着实能为网站添色不少:况且通过调查结果你能更多更准确了解网友对自己站点的看法.作为Webmaster,如果你的网站也需要就某个主题进行调查,而你又讨厌使用别人免费提供的调查板(免费往往是要付出代价的,比如打广告!),那么我建议你花十几分钟时间看完这

用WPS制作电子调查问卷

最近,很多政府部门都在进行部门行风评议的问卷调查,以便监督提高政府部门的工作效率.调查问卷都是以纸质印刷方式制作进行的,待接受调查人将问卷填写完成后再回收.统计.为了效率的整改提高,所在单位也准备举行行风评议活动.但由于单位机关加上下属部门共有几百号人之多,如若也采取纸质印刷方式制作调查问卷,那可是一笔不小的开支啊!怎么办? 现在不是都在倡导低炭环保吗,经过几番思考,在WPS Office 2012中不是新增了"窗体"功能吗?用WPS Office 2012制作电子调查问卷,然后再用邮

WPS文字制作电子调查问卷

最近当地政府很多部门都在进行部门行风评议的问卷调查,以便监督提高政府部门的工作效率.调查问卷都是以纸质印刷方式制作进行的,待接受调查人将问卷填写完成后再回收.统计.为了效率的整改提高,所在单位也准备举行行风评议活动.但由于单位机关加上下属部门共有几百号人之多,如若也采取纸质印刷方式制作调查问卷,那可是一笔不小的开支啊!怎么办? 现在不是都在倡导低炭环保吗,经过几番思考,在WPS2012中不是新了"窗体"功能吗?用WPS2010制作电子调查问卷,然后在用邮箱发送或通过QQ群共享下载不是很

用WPS制作电子调查问卷的方法

最近,很多政府部门都在进行部门行风评议的问卷调查,以便监督提高政府部门的工作效率.调查问卷都是以纸质印刷方式制作进行的,待接受调查人将问卷填写完成后再回收.统计.为了效率的整改提高,所在单位也准备举行行风评议活动.但由于单位机关加上下属部门共有几百号人之多,如若也采取纸质印刷方式制作调查问卷,那可是一笔不小的开支啊!怎么办? 现在不是都在倡导低炭环保吗,经过几番思考,在WPS Office 2012中不是新增了"窗体"功能吗?用WPS Office 2012制作电子调查问卷,然后再用邮

电子调查问卷 WPS文字制作低炭又环保

最近当地政府很多部门都在进行部门行风评议的问卷调查,以便监督提高政府部门的工作效率.调查问卷都是以纸质印刷方式制作进行的,待接受调查人将问卷填写完成后再回收.统计.为了效率的整改提高,所在单位也准备举行行风评议活动.但由于单位机关加上下属部门共有几百号人之多,如若也采取纸质印刷方式制作调查问卷,那可是一笔不小的开支啊!怎么办? 现在不是都在倡导低炭环保吗,经过几番思考,在WPS2012中不是新了"窗体"功能吗?用WPS2010制作电子调查问卷,然后在用邮箱发送或通过QQ群共享下载不是很

如何用Office 2013制作可勾选的确认框

在一次帮朋友制作问卷的时候,朋友称不会制作确认框.打印时可以使用一个"口"代替以假乱真,但是电子文档就没有那么容易混过去了.为此,总结了如下几种专业与不专业的确认框的输入与大家分享. 有些时候,我们在制作调查问卷或其他文案的时候,需要在选项前输入一个勾选确认框.若只是打印的文案,可以通过对号加文字边框或方框字符即可简单实现.但是当其为一个电子文案供他人修改时,就不再方便了. 首先看一下简单的打印文案的快捷方法:部分输入法可以直接输入对号"√",不通的输入法仍有区别,