UndeadBob Posted July 15, 2003 Share Posted July 15, 2003 i\'m writing my own news script using php and mysql. but i have hit a problem. when i try to delete one entry they all get deleted. i know where the problem is but i don\'t know how to fix it. what happens is when you want to delete a entry you tick a checkbox next to the entry you want to get rid of and it should be deleted. but the php/mysql is setup so that the checkbox on the form are named after the mysql database id. that id number isn\'t sent to mysql when the delete request is made so all the entrys are deleted. the relevant code is attached. any help is appreciated. this is the delete form <form action="delete_notice.php" method="post"> $query = "SELECT title, id FROM notices"; $result = mysql_query($query); $numrows = mysql_num_rows($result); while($row = mysql_fetch_array($result)){ ?> <input name="<? echo "$row[id]"; ?>" type=checkbox> <? echo "$row[title]"; print \'<br>\'; } ?> <br> <input type="submit" value="Delete selected"> </form> and this is the query that deletes the entries (named delete_notice.php) $id = $_POST[\'id\']; $link = mysql_connect("localhost", $dbuser, $dbpass) or die ("Database Error: Couldn\'t Connect!"); mysql_select_db($dbname, $link) or die ("Couldn\'t open $dbname!"); $query = "DELETE FROM notices WHERE \'id\' = \'$id\' "; mysql_query($query, $link) or die ("Couldn\'t delete data!"); mysql_close($link); include "header.php"; print \'<center>\'; print \'<br>\'; print \'Notice(s) succesfully deleted\'; print \'<br>\'; print \'<a href="noticeadmin.php">Return to Notices Administration</a>\'; print \'<center>\'; the table that is being accesed is notice and the fields are id (auto-incrementing id no.), title and notice. i missed out the mysql connect stuff becuase that is ok. many thanx Quote Link to comment Share on other sites More sharing options...
BK87 Posted July 15, 2003 Share Posted July 15, 2003 try replacing [php:1:55ca29e7a5] $id = $_POST[\'id\']; [/php:1:55ca29e7a5] with [php:1:55ca29e7a5] $id = $_POST[\"id\"]; [/php:1:55ca29e7a5] and [php:1:55ca29e7a5]<?php $query = \"DELETE FROM notices WHERE \'id\' = \'$id\' \"; ?>[/php:1:55ca29e7a5] with [php:1:55ca29e7a5]<?php $query = \"DELETE FROM notices WHERE id = \'$id\' \"; ?>[/php:1:55ca29e7a5] Quote Link to comment Share on other sites More sharing options...
UndeadBob Posted July 16, 2003 Author Share Posted July 16, 2003 still no luck, when i made those changes nothing was deleted... Quote Link to comment Share on other sites More sharing options...
shivabharat Posted July 16, 2003 Share Posted July 16, 2003 Try this $query = "DELETE FROM notices WHERE id = \'$id\' "; Quote Link to comment Share on other sites More sharing options...
UndeadBob Posted July 18, 2003 Author Share Posted July 18, 2003 still no luck, now nothing has been deleted. this is starting to become a real pain the arse. aarrgghh.. Quote Link to comment Share on other sites More sharing options...
panth Posted July 19, 2003 Share Posted July 19, 2003 I personally like working with echo rather with <? ?> each time i want to enter HTML code in your first script not in delete_notice.php as for the delete_notice.php script for debuging i\'d always rather use mysql_error() instead of text in \'or die( )\' part this will give you a main idea why you have problems if you still can\'t solve it come to here and paste what the problems are... original code : $id = $_POST[\'id\']; $link = mysql_connect("localhost", $dbuser, $dbpass) or die ("Database Error: Couldn\'t Connect!"); mysql_select_db($dbname, $link) or die ("Couldn\'t open $dbname!"); $query = "DELETE FROM notices WHERE \'id\' = \'$id\' "; mysql_query($query, $link) or die ("Couldn\'t delete data!"); mysql_close($link); include "header.php"; print \'<center>\'; print \'<br>\'; print \'Notice(s) succesfully deleted\'; print \'<br>\'; print \'<a href="noticeadmin.php">Return to Notices Administration</a>\'; print \'<center>\'; change into $id = $_POST[\'id\']; $link = mysql_connect("localhost", $dbuser, $dbpass) or die (mysql_error()); mysql_select_db($dbname, $link) or die (mysql_error()); $query = "DELETE FROM notices WHERE \'id\' = \'$id\' "; mysql_query($query, $link) or die (mysql_error()); mysql_close($link); include "header.php"; print \'<center>\'; print \'<br>\'; print \'Notice(s) succesfully deleted\'; print \'<br>\'; print \'<a href="noticeadmin.php">Return to Notices Administration</a>\'; print \'<center>\'; Quote Link to comment Share on other sites More sharing options...
UndeadBob Posted July 19, 2003 Author Share Posted July 19, 2003 no mysql errors come up it. it is just that that php/mysql doesn\'t do what i want it to do. it deletes all entrys even one i haven\'t checked the checkbox for when i submit the form. but i have found out that even if i tick no boxes and submit the form all entries are all deleted which makes me think that the checkbox information may not be getting to the mysql query $query = "DELETE FROM notices WHERE \'id\' = \'$id\' "; Quote Link to comment Share on other sites More sharing options...
panth Posted July 22, 2003 Share Posted July 22, 2003 Try do it with links and $_GET instead of $_POST it\'ll work Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.