Reputation: 1
I'm trying to delete an entry from my database using an HTML form. However, when it's submitted, the entry doesn't get deleted from the database and no error code is displayed to say why.
Could somebody possibly let me know if I'm missing something from my code, just in case I've over-looked something?
Thank you.
<form method="post" action="./removeBook.inc.php">
<select name="books">
<option>Please select the Book you wish to delete:</option>
<?php
try {
$dsn = "mysql:host=csdm-mysql;dbname=db1001550_book_management";
$username = "1001550";
$password = "1001550";
// try connecting to the database
$con = new PDO($dsn, $username, $password);
// turn on PDO exception handling
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
// enter catch block in event of error in preceding try block
echo "Connection failed: " . $e->getMessage();
}
try {
$sql=("SELECT * FROM books");
$results = $con->query($sql);
if ($results->rowcount() == 0) {
echo "<p>No books found. </p><br />";
} else {
foreach ($results as $row) {
$book_id=$row['book_id'];
echo "<option value=\"".$book_id."\">".$book_id."</option>";
}
}
} catch (PDOException $e) {
echo "Query failed: " . $e->getMessage();
}
mysql_close();
?>
</select>
<input type="submit" name="submit" value="Remove Book" style="width:auto;">
</form>
And here is the code within the form submitted page:
<?php
$host="csdm-mysql"; // Host name
$username="1001550"; // Mysql username
$password="1001550"; // Mysql password
$db_name="db1001550_book_management"; // Database name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("Cannot select DB");
if (isset($_POST['books'])) {
$books=$_POST['books'];
}
// Remove data from database
$result=mysql_query("DELETE FROM books WHERE book_id=$books");
// if successfully deleted from database, prompt will say book was deleted.
if ($result) {
print "<script type=\"text/javascript\">";
print "alert('Book has been deleted successfully!')";
print "</script>";
} else {
print "<script type=\"text/javascript\">";
print "alert('Book was not deleted')";
print "</script>";
}
// close connection
mysql_close();
?>
<form method="post" action="./removeBook.inc.php">
<select name="books">
<option>Please select the Book you wish to delete:</option>
<option value='B0001'>B0001</option><option value='B0002'>B0002</option><option value='B0003'>B0003</option><option value='B0004'>B0004</option><option value='B0005'>B0005</option><option value='B0006'>B0006</option><option value='B0007'>B0007</option><option value='B0008'>B0008</option><option value='B0009'>B0009</option><option value='B0010'>B0010</option><option value='B0011'>B0011</option><option value='B0012'>B0012</option><option value='B0013'>B0013</option><option value='B0014'>B0014</option><option value='B0015'>B0015</option><option value='B0016'>B0016</option><option value='B0017'>B0017</option><option value='B0018'>B0018</option><option value='B0019'>B0019</option><option value='B0020'>B0020</option>
</select>
<input type="submit" name="submit" value="Remove Book" style="width:auto;">
</form>
Thank you for your help in advance!
Upvotes: 0
Views: 1639
Reputation: 220
Try to print and see whether you are getting the selected Book ID. Whenever you get a prob in query print and see.
add this line
print "DELETE FROM books WHERE book_id=$books";
before
$result=mysql_query("DELETE FROM books WHERE book_id=$books");
I think you did not receive the Book Id in proper format.
Change the line
echo "<option value=\"".$book_id."\">".$book_id."</option>";
as
echo "<option value='".$book_id."'>".$book_id."</option>";
And also use single quotes to encapsulate a value. Change
$result=mysql_query("DELETE FROM books WHERE book_id=$books");
to
$result=mysql_query("DELETE FROM books WHERE book_id='".$books."'");
Upvotes: 1
Reputation: 6112
IF your book_id field is varchar or text, you should add quotes between $books
...WHERE book_id='$books'
Upvotes: 0