用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://img.xker.com/xkerfiles/uppic/2006-12/5/0612502401418805.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://img.xker.com/xkerfiles/uppic/2006-12/5/0612502401418805.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://img.xker.com/xkerfiles/uppic/2006-12/5/0612502401418805.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.”;

}

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