why i see this error message “( ! ) Notice: Undefined index: poll in D:\wamp\www\poll\poll.php on line 6” in the ajax when i try to poll .. i have two files
1- index.html contains get request
2- poll.php file to select request and display result
index.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>
poll.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>';
}
Change line 6 of
poll.phpfrom:to:
As written, it assumes the existence of
$_POST['poll']and is conditioned on its value beingnull,falseor0. In the case where the value simply does not exist, the error that you are seeing is the result. The solution is to confirm that the variable has been set at all usingisset().Also, change line 15 from:
to
Similarly, as written, it assumes the existence of
$_GET['result']and is conditioned on its value being1. In the case where the value simply does not exist, the error that you are seeing is the result. The solution is again to first confirm that the variable has been set at all usingisset()and then check its value.See: http://php.net/manual/en/function.isset.php