Richard
Richard

Reputation: 209

Unable to edit mysql row using form

I am trying to create a form that will edit rows from my db table. (Based on some code I got from a StackOverflow page.)

I am able to populate the form with relevant data, but when I submit the form, the row isn't updated. In fact, some of my columns are deleted.

What did I do wrong?

edit.php

<?php

$UID = (int)$_GET['f'];
$query = mysql_query("SELECT * FROM user_feeds WHERE feed_id = '$UID'") or die(mysql_error());

if(mysql_num_rows($query)>=1){
    while($row = mysql_fetch_array($query)) {
        $feedtitle = $row['feed_title'];
        $feedurl = $row['feed_url'];
        $feedorder = $row['feed_order'];
        $feedowner = $row['feed_owner'];
    }
?>
<form action="update.php" method="post">
<input type="hidden" name="ID" value="<?=$UID;?>">
Title:<br /> <input type="text" name="ud_feedtitle" value="<?=$feedtitle?>"><br>
URL: <br /> <input type="text" name="ud_feedurl" value="<?=$feedurl?>"><br>
Order: <br /> <input type="text" name="ud_feedorder" value="<?=$feedorder?>"><br>
Owner:<br /> <input type="text" name="ud_feedowner" value="<?=$feedowner;?>"><br>
<input type="Submit">
</form>
<?php
}else{
    echo 'No entry found. <a href="javascript:history.back()">Go back</a>';
}
?>
</div>
</body>
</html>

update.php

    <?php



$ud_ID = $_REQUEST["ID"];
$ud_feedtitle = $_POST["feed_title"];
$ud_feedurl = $_POST["feed_url"];
$ud_feedorder = $_POST["feed_order"];
$ud_feedowner = $_POST["feed_owner"];


$query = "UPDATE user_feeds SET feed_title = '$ud_feedtitle', feed_url = '$ud_feedurl', feed_order = '$ud_feedorder', feed_owner = '$ud_feedowner', WHERE feed_id = '$ud_ID'";


$res = mysql_query($query);

if ($res)
  echo "<p>Record Updated<p>";

else
  echo "Problem updating record. MySQL Error: " . mysql_error();

?>

Upvotes: 0

Views: 137

Answers (1)

Anirudh Ramanathan
Anirudh Ramanathan

Reputation: 46728

Reason:

The name of the input field is the same name by which $_POST is populated. The variables you are currently requesting :

$_POST["feed_title"];, $_POST["feed_url"];,  $_POST["feed_order"];, $_POST["feed_owner"];

are all empty as they don't exist. When updating, you are replacing the values in your table with blank values.


Solution:

In your update.php, the following should be there instead.

$ud_ID = $_POST["ID"];
$ud_feedtitle = $_POST["ud_feedtitle"]; //corresponding to <input type="text" name="ud_feedtitle" ...
$ud_feedurl = $_POST["ud_feedurl"]; //corresponding to <input type="text" name="ud_feedurl" ...
$ud_feedorder = $_POST["ud_feedorder"]; //corresponding to <input type="text" name="ud_feedorder" ...
$ud_feedowner = $_POST["ud_feedowner"]; //corresponding to <input type="text" name="ud_feedowner" ...

Upvotes: 2

Related Questions