Jump to content

help with a php/mysql news script


UndeadBob

Recommended Posts

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

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

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>\'; 

Link to comment
Share on other sites

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\' ";

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.