Forum Moderators: coopster
echo "<form action='pages.php?page=2 method='post'><select name='rates'><option value='x' selected>Rate me</option><option value='10'>10</option><option value='9'>9</option><option value='8'>8</option><option value='7'>7</option><option value='6'>6</option><option value='5'>5</option><option value='4'>4</option><option value='3'>3</option><option value='2'>2</option><option value='1'>1</option></select><input type='hidden' name='rateit_id' value='100'><input type='hidden' name='action' value='doit'> <input type='submit' value='Rate!'></form>"; if($_POST['action'] == "doit")
{
if($_POST['rates']>0 && $_POST['rates']<11 &&!empty($_POST['rateit_id']))
{
$new_count = ($row['votes'] + 1);
$tut_rating2 = ($row['rates'] * $row['votes']);
$new_rating = (($_POST['rates'] + $tut_rating2) / ($new_count));
$new_rating2 = number_format($new_rating, 2, '.', '');
$edit = "UPDATE wow SET
rating='$new_rating2',votes='$new_count' WHERE id = $page";
$result = mysql_query($edit) or die (mysql_error());
// did it work?
if ($result) {
echo 'Thank you for rating this article.<br /><br />';
} else {
echo 'Error! The values sent are below.<br /><br />';
}
echo $row['votes'];
}
}
It gives me Notice: Undefined index: action in c:\program files\easyphp1-8\www\pages.php on line 85 when i access pages.php?page=2
if($_POST['action'] == "doit")
The error is of type 'Notice:' and you can ignore it in most cases. Production webservers should not report Notice: errors.
The way to deal with it is:
if (isset($_POST))
{
if ($_POST['action'] == "doit")
etc....
}
Now, how do i change the ratings in the db. Currently it doesnot count the votes (after any no. of votes just say votes=1 indb and the rating is the last rating which is set and not the average of the ratings as it should be)
if($_POST['rates']>0 && $_POST['rates']<11 &&!empty($_POST['rateit_id']))
{
$new_count = ($row['votes'] + 1);
$tut_rating2 = ($row['rates'] * $row['votes']);
$new_rating = (($_POST['rates'] + $tut_rating2) / ($new_count));
$new_rating2 = number_format($new_rating, 2, '.', ''); $edit = "UPDATE wow SET
rating='$new_rating2',votes='$new_count' WHERE id = $page";
$result = mysql_query($edit) or die (mysql_error());
if($_POST['rates']>0 && $_POST['rates']<11 &&!empty($_POST['rateit_id']))
{
$new_count = ($row['votes'] + 1);
$tut_rating2 = ($row['rates'] * $row['votes']);
$new_rating = (($_POST['rates'] + $tut_rating2) / ($new_count));
$new_rating2 = number_format($new_rating, 2, '.', '');
$edit = "UPDATE wow SET
rating='$new_rating2',votes='$new_count' WHERE id = $page";
$result = mysql_query($edit) or die (mysql_error());
Have you set $row before your UPDATE? You seem to be missing a line such as:
$row=mysql_fetch_assoc(mysql_query("SELECT * FROM `wow` WHERE `id` = $page"));
Try putting that before $new_content = ($row['votes'] + 1...
in beginning but as suggested by you I wrote that thing again
{ ...
$row=mysql_fetch_assoc(mysql_query("SELECT * FROM `wow` WHERE `id` = $page"));
$new_count = ($row['votes'] + 1);
...}
Now it WORKS!
But even after if (isset($_POST))
{
...
}
I get the Notice: Undefined index: rates in c:\program files\easyphp1-8\www\pages.php on line 92
if (isset($_POST))
{
if($_POST['action'] == "doit")
{
if($_POST['rates']>0 && $_POST['rates']<11 &&!empty($_POST['rateit_id']))
{
$row=mysql_fetch_assoc(mysql_query("SELECT * FROM `wow` WHERE `id` = $page"));
$new_count = ($row['votes'] + 1);
$tut_rating2 = ($row['rates'] * $row['votes']);
$new_rating = (($_POST['rates'] + $tut_rating2) / ($new_count));
$new_rating2 = number_format($new_rating, 2, '.', ''); $edit = "UPDATE wow SET
rating='$new_rating2',votes='$new_count' WHERE id = $page";
$result = mysql_query($edit) or die (mysql_error());
// did it work?
if ($result) {
echo 'Thank you for rating this article.<br /><br />';
} else {
echo 'Error! The values sent are below.<br /><br />';
}
echo $row['votes'];
}
}
}
I FIGURED IT OUT, it should be
93> $tut_rating2 = ($row['rating'] * $row['votes']);
and not
$tut_rating2 = ($row['rates'] * $row['votes']);
Now that is ok! except for the following line (83)
echo "<form action='$SERVER['PHP_SELF']' method='post'><select name='rates'><option value='x' selected>Rate me</option><option value='10'>10</option><option value='9'>9</option><option value='8'>8</option><option value='7'>7</option><option value='6'>6</option><option value='5'>5</option><option value='4'>4</option><option value='3'>3</option><option value='2'>2</option><option value='1'>1</option></select><input type='hidden' name='rateit_id' value='100'><input type='hidden' name='action' value='doit'> <input type='submit' value='Rate!'></form>";
gives me a syntax error Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp1-8\www\pages.php on line 83
How do i write echo "<form action='$SERVER['PHP_SELF']' method='post'>
$edit = "UPDATE wow SET
rating='$new_rating2',votes='$new_count' WHERE id = $page";
$result = mysql_query($edit) or die (mysql_error());
// did it work?
if ($result) {
echo 'Thank you for rating this article.<br /><br />';
} else {
echo 'Error! The values sent are below.<br /><br />';
}
echo $row['votes'];
}
}
}
when i load pages.php?page=2
it says Notice: Undefined index: action in c:\program files\easyphp1-8\www\pages.php on line 86 and Notice: Undefined variable: SERVER in c:\program files\easyphp1-8\www\pages.php on line 83
echo "<form action='$SERVER_[PHP_SELF]' method='post'><select name='rates'><option value='x' selected>Rate me</option><option value='10'>10</option><option value='9'>9</option><option value='8'>8</option><option value='7'>7</option><option value='6'>6</option><option value='5'>5</option><option value='4'>4</option><option value='3'>3</option><option value='2'>2</option><option value='1'>1</option></select><input type='hidden' name='rateit_id' value='100'><input type='hidden' name='action' value='doit'> <input type='submit' value='Rate!'></form>";
83 if (isset($_POST))
84 {
85 if($_POST['action'] == "doit")
86 {
87 if($_POST['rates']>0 && $_POST['rates']<11 &&!empty($_POST['rateit_id']))
88 {
89$row=mysql_fetch_assoc(mysql_query("SELECT * FROM `wow` WHERE `id` = $page"));
//90
$new_count = ($row['votes'] + 1);
$tut_rating2 = ($row['rating'] * $row['votes']);
$new_rating = (($_POST['rates'] + $tut_rating2) / ($new_count));
$new_rating2 = number_format($new_rating, 2, '.', '');
$edit = "UPDATE wow SET
rating='$new_rating2',votes='$new_count' WHERE id = $page";
$result = mysql_query($edit) or die (mysql_error());
// did it work?
if ($result) {
echo 'Thank you for rating this article.<br /><br />';
} else {
echo 'Error! The values sent are below.<br /><br />';
}
echo $row['votes'];
}
}
}