/    Sign up×
Community /Pin to ProfileBookmark

Exercises won’t work

*sigh* Its been one of “those” evenings of studying where nothing makes sense and nothing works…

Admin Page

[code=php]
<?php

require_once(‘dbc.php’);
require_once(‘apps.php’);

$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(‘Problem Connecting’ . mysqli_connect_error());
mysqli_select_db($dbc, DB_NAME);

$query = “SELECT * FROM guitarwars ORDER BY score DESC, date ASC”;
$data = mysqli_query($dbc, $query) or die(‘Problem Querying’ . mysqli_connect_error());;

echo ‘<table cellpadding=”5″>’;
while($row = mysqli_fetch_array($data))
{ echo ‘<tr><td><strong>’ . $row[‘name’] . ‘</strong></td>’;
echo ‘<td>’ . $row[‘date’] . ‘</td>’;
echo ‘<td>’ . $row[‘score’] . ‘</td>’;
echo ‘<td><a href=”removescore.php?id=’.$row[‘id’].’&amp;date=’.$row[‘date’].’&amp;name=’.$row[‘name’].’&amp;score=’.$row[‘score’].’&amp;screenshot=’.$row[‘screenshot’].'”>Remove</a></td></tr>’;
}
echo ‘</table>’;

mysqli_close($dbc);

?>
[/code]

Remove Score Script:

[code=php]
<?php

require_once(‘dbc.php’);
require_once(‘apps.php’);

if(isset($_GET[‘id’]) && isset($_GET[‘date’]) && isset($_GET[‘name’]) && isset($_GET[‘score’]) && isset($_GET[‘screenshot’]))
{ //grab score data
$id = $_GET[‘id’];
$date = $_GET[‘date’];
$name = $_GET[‘name’];
$score = $_GET[‘score’];
$screenshot = $_GET[‘screenshot’];
}
elseif(isset($_POST[‘id’]) && isset($_POST[‘name’]) && isset($_POST[‘score’]))
{ //grab the post data
$id = $_POST[‘id’];
$name = $_POST[‘name’];
$score = $_POST[‘score’];
}
else { echo ‘<p class=”error”>Sorry, no score was specified for removal.</p>’; }

if(isset($_POST[‘submit’]))
{ if($_POST[‘confirm’] == ‘Yes’)
{ //delete the screenshot image from file
@unlink(GW_UPLOADPATH . $screenshot);

//connect to database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(‘Problem Connecting’ . mysqli_connect_error());
mysqli_select_db($dbc, DB_NAME);

//delete score data from db
$query = “DELETE FROM guitarwars WHERE id = $id LIMIT = 1”;

mysqli_query($dbc, $query);
mysqli_close($dbc);

//confirmation
echo ‘<p>The high score of ‘ .$score . ‘ for ‘ . $name . ‘ was succesfully deleted.</p>’;
}
else { echo ‘<p class=”error”>The high score was not removed.</p>’; }
}

elseif(isset($id) && isset($name) && isset($date) && isset($score))
{
echo ‘<p>Are you sure that you want to delete the following score?</p>’;
echo ‘<p><strong>Name: </strong>’ . $name . ‘<br /><strong>Date: </strong>’ . $date . ‘<br /><strong>Score: </strong>’ . $score . ‘</p>’;
echo ‘<form method=”post” action=”removescore.php”>’;
echo ‘<input type=”radio” name=”confirm” value=”Yes” /> Yes ‘;
echo ‘<input type=”radio” name=”confirm” value=”No” checked=”checked” /> No <br />’;
echo ‘<input type=”submit” value=”Submit” name=”submit” />’;

echo ‘<input type=”hidden” name=”id” value=”‘ . $id . ‘” />’;
echo ‘<input type=”hidden” name=”name” value=”‘ . $name . ‘” />’;
echo ‘<input type=”hidden” name=”score” value=”‘ . $score . ‘” />’;
echo ‘</form>’;
}

echo ‘<p><a href=”admin.php”>&lt;&lt; Back to Admin Page</a></p>’;

?>

[/code]

It all runs and works all dandy, except, even though confirmation that a row was removed, it wasn’t. Coz when you click the admin page link. The score is still there…

to post a comment
PHP

5 Comments(s)

Copy linkTweet thisAlerts:
@svidgenDec 14.2009 — On just about every data-[I]modification[/I] call, you should probably run a few checks to ensure that the data was changed, rather than performing the query and assuming it worked:

[code=php]mysqli_query($dbc, $query);[/code]

... should be ...

[code=php]if (mysqli_query($dbc, $query)) {
// query ran ... did we alter any rows?
if (mysqli_affected_rows() > 0) {
// mission complete.

// DEBUG:
print "<p>mission complete.</p>n";
} else {
// even etter-er failure.

// DEBUG:
print "<p>no rows affected ... ohnoz!</p>";
}
} else {
// utter failure.

// DEBUG:
print "<p>MySQL error: " . mysqli_error() . "</p>n";
}[/code]


Or something like that ... So, can you get some checking in there and let us know whether you're getting "mission complete" or MySQL error's, etc.?
Copy linkTweet thisAlerts:
@Hooded_VillianauthorDec 15.2009 — [code=php]//connect to database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Problem Connecting' . mysqli_connect_error());
$query = "DELETE FROM guitarwars WHERE id = $id LIMIT 1";

if(mysqli_query($dbc, $query))
{ if(mysqli_affected_rows() > 0)
{
print '<p>Mission Complete</p>';
}
else { print '<p>No rows Affected</p>'; }
}
mysqli_close($dbc);
//confirmation
echo '<p>High score of '. $score .' belonging to '. $name .' was removed successfully.</p>';[/code]


I got the script working... (Still not sure how and why it's written the way it is. Guess I will be sitting stuck on this chapter until I figure it out) But when I add mysqli_affected_rows(), it always prints No rows affected, even though rows from the DB are being removed...
Copy linkTweet thisAlerts:
@MindzaiDec 15.2009 — You need to pass the link identifier into the mysqli_affected_rows function.
Copy linkTweet thisAlerts:
@Hooded_VillianauthorDec 15.2009 — You need to pass the link identifier into the mysqli_affected_rows function.[/QUOTE]

Link identifier?
Copy linkTweet thisAlerts:
@lukazDec 15.2009 — Take a look at the second example here
×

Success!

Help @Hooded_Villian spread the word by sharing this article on Twitter...

Tweet This
Sign in
Forgot password?
Sign in with TwitchSign in with GithubCreate Account
about: ({
version: 0.1.9 BETA 5.19,
whats_new: community page,
up_next: more Davinci•003 tasks,
coming_soon: events calendar,
social: @webDeveloperHQ
});

legal: ({
terms: of use,
privacy: policy
});
changelog: (
version: 0.1.9,
notes: added community page

version: 0.1.8,
notes: added Davinci•003

version: 0.1.7,
notes: upvote answers to bounties

version: 0.1.6,
notes: article editor refresh
)...
recent_tips: (
tipper: @AriseFacilitySolutions09,
tipped: article
amount: 1000 SATS,

tipper: @Yussuf4331,
tipped: article
amount: 1000 SATS,

tipper: @darkwebsites540,
tipped: article
amount: 10 SATS,
)...