为什么我在尝试轮询时在 ajax 中看到此错误消息“(!)注意:未定义的索引:第 6 行的 D:\wamp\www\poll\poll.php 中的轮询”.. 我有两个文件
1- index.html 包含获取请求
2- poll.php 文件选择请求并显示结果
索引.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>AJAX Poll Using jQuery and PHP</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
<script type="text/javascript" src="js/jquery-1.3.2.js" ></script>
<script type="text/javascript" >
$(function(){
var loader=$('#loader');
var pollcontainer=$('#pollcontainer');
loader.fadeIn();
//Load the poll form
$.get('poll.php', '', function(data, status){
pollcontainer.html(data);
animateResults(pollcontainer);
pollcontainer.find('#viewresult').click(function(){
//if user wants to see result
loader.fadeIn();
$.get('poll.php', 'result=1', function(data,status){
pollcontainer.fadeOut(1000, function(){
$(this).html(data);
animateResults(this);
});
loader.fadeOut();
});
//prevent default behavior
return false;
}).end()
.find('#pollform').submit(function(){
var selected_val=$(this).find('input[name=poll]:checked').val();
if(selected_val!=''){
//post data only if a value is selected
loader.fadeIn();
$.post('poll.php', $(this).serialize(), function(data, status){
$('#formcontainer').fadeOut(100, function(){
$(this).html(data);
animateResults(this);
loader.fadeOut();
});
});
}
//prevent form default behavior
return false;
});
loader.fadeOut();
});
function animateResults(data){
$(data).find('.bar').hide().end().fadeIn('slow', function(){
$(this).find('.bar').each(function(){
var bar_width=$(this).css('width');
$(this).css('width', '0').animate({ width: bar_width }, 1000);
});
});
}
});
</script>
</head>
<body>
<div id="container" >
<h1>User Poll</h1>
<div id="pollcontainer" >
</div>
<p id="loader" >Loading...</p>
</div>
</body>
</html>
投票.php
<?php
//Update database information according to your server settings
$conn=mysql_connect('localhost', 'root', '') or die("Can't connect to mysql host");
//Select the database to use
mysql_select_db('ahmed') or die("Can't connect to DB");
if(!$_POST['poll'] || !$_POST['pollid']){
$query=mysql_query("SELECT id, ques FROM questions ORDER BY id DESC LIMIT 1");
while($row=mysql_fetch_assoc($query)){
//display question
echo "<p class=\"pollques\" >".$row['ques']."</p>";
$poll_id=$row['id'];
}
if($_GET["result"]==1 || $_COOKIE["voted".$poll_id]=='yes'){
//if already voted or asked for result
showresults($poll_id);
exit;
}
else{
//display options with radio buttons
$query=mysql_query("SELECT id, value FROM options WHERE ques_id=$poll_id");
if(mysql_num_rows($query)){
echo '<div id="formcontainer" ><form method="post" id="pollform" action="'.$_SERVER['PHP_SELF'].'" >';
echo '<input type="hidden" name="pollid" value="'.$poll_id.'" />';
while($row=mysql_fetch_assoc($query)){
echo '<p><input type="radio" name="poll" value="'.$row['id'].'" id="option-'.$row['id'].'" />
<label for="option-'.$row['id'].'" >'.$row['value'].'</label></p>';
}
echo '<p><input type="submit" value="Submit" /></p></form>';
echo '<p><a href="'.$_SERVER['PHP_SELF'].'?result=1" id="viewresult">View result</a></p></div>';
}
}
}
else{
if($_COOKIE["voted".$_POST['pollid']]!='yes'){
//Check if selected option value is there in database?
$query=mysql_query("SELECT * FROM options WHERE id='".intval($_POST["poll"])."'");
if(mysql_num_rows($query)){
$query="INSERT INTO votes(option_id, voted_on, ip) VALUES('".$_POST["poll"]."', '".date('Y-m-d H:i:s')."', '".$_SERVER['REMOTE_ADDR']."')";
if(mysql_query($query))
{
//Vote added to database
setcookie("voted".$_POST['pollid'], 'yes', time()+86400*300);
}
else
echo "There was some error processing the query: ".mysql_error();
}
}
showresults(intval($_POST['pollid']));
}
function showresults($poll_id){
global $conn;
$query=mysql_query("SELECT COUNT(*) as totalvotes FROM votes WHERE option_id IN(SELECT id FROM options WHERE ques_id='$poll_id')");
while($row=mysql_fetch_assoc($query))
$total=$row['totalvotes'];
$query=mysql_query("SELECT options.id, options.value, COUNT(*) as votes FROM votes, options WHERE votes.option_id=options.id AND votes.option_id IN(SELECT id FROM options WHERE ques_id='$poll_id') GROUP BY votes.option_id");
while($row=mysql_fetch_assoc($query)){
$percent=round(($row['votes']*100)/$total);
echo '<div class="option" ><p>'.$row['value'].' (<em>'.$percent.'%, '.$row['votes'].' votes</em>)</p>';
echo '<div class="bar ';
if($_POST['poll']==$row['id']) echo ' yourvote';
echo '" style="width: '.$percent.'%; " ></div></div>';
}
echo '<p>Total Votes: '.$total.'</p>';
}