Topic awaiting preservation: PHP/MySQL and deleting rows? |
|
---|---|
Author | Thread |
Maniac (V) Inmate From: there...no..there..... |
posted 10-05-2005 22:39
I have a database that will enter info from a form just fine. However, I can't get the editing or deleting part working right. Here is the delete.php script that I am working with just for testing purposes and it's not working. code: <? //connect to mysql $link = mysql_connect("localhost","username","password"); if (!$link) { die('Could not connect: ' . mysql_error()); } //select database mysql_select_db("newsy",$link); //If cmd is not hit if(!isset($cmd)){ //display all the news $result = mysql_query("SELECT * FROM news"); //run the while loop that grabs all the news scripts while($r=mysql_fetch_array($result)){ //grab the title and the ID of the news table $title=$r["title"];//grab the title $id=$r["id"];//grab the id echo "<a href='delete.php?cmd=delete&id=$id'>$title - Delete</a>"; echo "<br>"; } } if($cmd=="delete"){ $sql = "DELETE FROM news WHERE id=$id"; $result = mysql_query($sql,$link); echo "Row deleted!"; } ?>
|
Maniac (V) Mad Scientist From: 100101010011 <-- right about here |
posted 10-05-2005 23:49
What's the ID that's going into the delete command? code: if($cmd=="delete"){ $sql = "DELETE FROM news WHERE id=$id"; echo "SQL: $sql"; // Use this for testing in phpmyadmin $result = mysql_query($sql,$link); if ( !$result ) { echo mysql_errno($link) . ": " . mysql_error($link) . "\n"; } else { echo "Row deleted" }
|
Maniac (V) Mad Scientist From: 100101010011 <-- right about here |
posted 10-05-2005 23:51
Also note SQL errors no longer send warnings in php you need to explicitly echo the error messages |
Maniac (V) Inmate From: there...no..there..... |
posted 10-06-2005 00:00
well I ran this query in phpMyAdmin and it worked fine: DELETE FROM news WHERE id=4 |
Maniac (V) Inmate From: under the bed |
posted 10-06-2005 00:06 |
Bipolar (III) Inmate From: Australia |
posted 10-06-2005 01:20
Only if it's a varchar etc. If its an integer or other number type puting single quotes would cause errors. |
Maniac (V) Mad Scientist From: 100101010011 <-- right about here |
posted 10-06-2005 01:59
quote:
|
Bipolar (III) Inmate From: Australia |
posted 10-06-2005 02:43
It doesnt seem to care these days actually, but adding quotes to a number doesnt make a difference. I did some tests and if its type varchar etc, you can put numbers in with or without quotes - however if its a word "testing" it doesnt work unless its quoted. |
Maniac (V) Inmate From: under the bed |
posted 10-06-2005 04:02
Unless I'm misunderstanding (which is certainly possible), the issue is not what the data actually is, it's a matter of it being a variable...isn't it? |
Maniac (V) Mad Scientist From: 100101010011 <-- right about here |
posted 10-06-2005 04:31
Not really |
Maniac (V) Inmate From: there...no..there..... |
posted 10-06-2005 15:43
still nothing. I used everyones method that was posted here and nothing happens. code: //connect to database $dbcnx=mysql_connect("localhost","######","######"); //if it doesn't connect, die if(!$dbcnx){ die("Could not connect : " . mysql_error()); } //select database $db=mysql_select_db("newsy",$dbcnx); //make a query to delete the entry $query="DELETE FROM news WHERE id = 8"; //send the query to the database $result=mysql_query($query,$dbcnx); if(!$result){ echo mysql_errno($link) . ": " . mysql_error($link) . "\n"; }else{ echo "Row deleted"; }
|
Maniac (V) Inmate From: under the bed |
posted 10-06-2005 18:14
Looking through the code a little more closely, two things come to mind - |
Maniac (V) Mad Scientist From: 100101010011 <-- right about here |
posted 10-06-2005 18:14
That sounds like it could be the problem. If the query is never getting run then you are going to have an issue. |
Maniac (V) Inmate From: there...no..there..... |
posted 10-08-2005 17:30
OK....got that one going. You guys were right. $cmd was never being passed...now it is. Thanks. |
Maniac (V) Mad Scientist From: 100101010011 <-- right about here |
posted 10-08-2005 19:39
why are the headers already sent? |
Maniac (V) Inmate From: there...no..there..... |
posted 10-08-2005 21:07
well I just have it as a full page so it has the doc type and everything in it already. Or am I just confused on what that is doing? quote:
|
Maniac (V) Inmate From: under the bed |
posted 10-08-2005 23:36
you'll need to detect what state you are in before outputting anything. code: <?php ob_start(); if (empty($cmd)) { ?> html goes here... <?php } elseif($cmd == "delete") { header(location:...); } ob_end_flush(); ?> |
Maniac (V) Mad Scientist From: 100101010011 <-- right about here |
posted 10-09-2005 00:56
Yeah a good habit to get in is to place all of your business logic at the top of your page before outputting any content to the page. |
Bipolar (III) Inmate From: Australia |
posted 10-09-2005 02:57
code: Also another common mistake is that you can't have anything (including a single space) before your first <?php tag.
|