Click to See Complete Forum and Search --> : deleting a record from a database
Colm Osiris
02-13-2006, 09:59 AM
My database is coming on leaps and bounds. Now I'm trying to delete a record from it, but what seems to be happening is the record is being blanked, but not deleted. This is the script I have:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
<meta name="generator" content="Taco HTML Edit">
<link rel="stylesheet" href="styles.css" type="text/css">
<title>Amir’s Contacts Database ~ Record Updated</title>
</head>
<body>
<h1>Amir’s Contacts Database</h1>
<h2>Record Updated</h2>
<?
$id=$_POST['id'];
$user="user";
$password="password";
$database="database";
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="DELETE FROM contacts WHERE id='$id'";
mysql_query($query);
mysql_close();
?>
<br>
<a href="list.php">list</a>
</body>
</html>
:confused:
chazzy
02-13-2006, 10:25 AM
you should do some error checking on your query if you don't think its working
$query="DELETE FROM contacts WHERE id='$id'" or die("Error:". mysql_error());
mysql_query($query);
mysql_close();
Colm Osiris
02-13-2006, 10:30 AM
I tried that, but nothing happened. Should I have got an error message if the query failed?
chazzy
02-13-2006, 10:37 AM
is the page not rendering? add an echo
Colm Osiris
02-13-2006, 10:45 AM
The page is rendering fine, but the record is not deleted.
I tried deleting it through SQL in PHPMyAdmin, and it worked fine. So I guess there must be something wrong with my script?
What I'm doing is this:
I have a list, on which there is a link to a 'delete' page. On this page, there's a link to the page doing the deleting. It looks like this:
<input type="submit" onClick="parent.location='deleted.php'" value="delete" name="submitButtonName">
chazzy
02-13-2006, 10:49 AM
how are you passing the id?
Colm Osiris
02-13-2006, 11:02 AM
Okay, it's gonna sound crazy, but I didn't realise I needed to, cos I didn't need it to update a record.
It's passed to the 'delete' page like this:
<? echo '<a href="delete.php?id='.$id.'">d</a>'?>
NogDog
02-13-2006, 11:05 AM
Need to move the die() to the mysql_query() statement:
$query="DELETE FROM contacts WHERE id='$id'";
$result = @mysql_query($query) or die("Query Failed; $query - " . mysql_error());
// it worked, so let's see what really happened:
$numRows = mysql_affected_rows();
echo "<p>$numRows rows were deleted from the database.</p>\n";
NogDog
02-13-2006, 11:07 AM
Okay, it's gonna sound crazy, but I didn't realise I needed to, cos I didn't need it to update a record.
It's passed to the 'delete' page like this:
<? echo '<a href="delete.php?id='.$id.'">d</a>'?>
Try this:
$query="DELETE FROM contacts WHERE id='{$_GET['id']}'";
Colm Osiris
02-13-2006, 11:17 AM
I'm afraid nothing changed. :-(
Colm Osiris
02-13-2006, 11:22 AM
Need to move the die() to the mysql_query() statement:
$query="DELETE FROM contacts WHERE id='$id'";
$result = @mysql_query($query) or die("Query Failed; $query - " . mysql_error());
// it worked, so let's see what really happened:
$numRows = mysql_affected_rows();
echo "<p>$numRows rows were deleted from the database.</p>\n";
I tried this, but saw no difference. The code I now have is:
<?
$id=$_POST['id'];
$user="user";
$password="password";
$database="database";
mysql_connect(localhost,$user,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="DELETE FROM contacts WHERE id='$id'";
$result = @mysql_query($query) or die("Query Failed; $query - " . mysql_error());
// it worked, so let's see what really happened:
$numRows = mysql_affected_rows();
echo "<p>$numRows rows were deleted from the database.</p>\n";
mysql_close();
?>
NogDog
02-13-2006, 11:28 AM
Do the change of $id to {$_GET['id']} and I'll place a decent wager that it works.
EDIT: I just noticed you're setting $id = $_POST['id'], so try changing that to $_GET['id'].
Colm Osiris
02-13-2006, 11:32 AM
what did the old, worn-out piece of string say to the brand new, unused piece of string?
"I'm a frayed knot!" :D
chazzy
02-13-2006, 12:03 PM
Need to move the die() to the mysql_query() statement:
$query="DELETE FROM contacts WHERE id='$id'";
$result = @mysql_query($query) or die("Query Failed; $query - " . mysql_error());
// it worked, so let's see what really happened:
$numRows = mysql_affected_rows();
echo "<p>$numRows rows were deleted from the database.</p>\n";
That's what happens when I type with my eyes shut. Sorry about that.
Colm Osiris
02-13-2006, 12:39 PM
What is? Sorry, I don't understand.
Colm Osiris
02-13-2006, 02:01 PM
The problem was that I had POST on the page with the 'delete' button on it, and GET on the result page. I swapped them round, and it works perfectly.
Thank you for your time :-)