用PHP來製作調查
來源:互聯網
上載者:User
有什麼問題請與我聯絡: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.";
}
好了整個程式到這就結束了,希望您在看這個程式時能掌握一些技巧和學到一些知識。謝謝!