Jump to content

UPDATING record in mySQL. PLEASE HELP


pezzie

Recommended Posts

Hi

i want to get data from mySQL and wish to delete or update it.

The delete is fine but when it comes to update, nothing happens at all.

i want the data to be present in the textboxes so that the user does not have to type the whole thing in again.  [color=red]PLEASE PLEASE help. i need it by tomorrow.[/color]

Thank you.

this is my code:

[color=red]edit.php[/color]

<?
// Connect database
include("dbConfig.php");

// Get all records in all columns from table and put it in $result.
$result=mysql_query("select * from articles ORDER BY id");

/*Split records in $result by table rows and put them in $row.
Make it looping by while statement. */
while($row=mysql_fetch_assoc($result)){

// Output
echo "ID : {$row['id']} <br/>";
echo "Title : {$row['title']} <br/>";
echo "Content : {$row['content']} <br/>";
echo "Filename : {$row['filename']} <hr>";

// Add a link with a parameter(id) and it's value.
echo '<a href="update.php?id='.$row['id'].'">Update</a>';
echo "<HR>";

}

mysql_close();
?>
//------------------------------------------------------------------------------------------



[color=red]update.php[/color]

<?
// Connect database.
include("dbConfig.php");
if($Submit){
// Get parameters from form.
$id=$_POST['id'];
$title=$_POST['title'];
$content=$_POST['content'];
$filename=$_POST['filename'];
mysql_query("update articles set title='$title', content='$content', filename='$filename' where id='$id'");
header("location:edit.php");


// Get id parameter (GET method) from edit.php
$id=$_GET['id'];

// Get records in all columns from table where column id equal in $id and put it in $result.
//$result=mysql_query("select * from articles where id='$id'");

// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);
}
?>
<html>
<body>
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<p>Name :
<input name="name" type="text" id="title" value="<? echo $row['title']; ?>"/>
<br />
Email :
<input name="email" type="text" id="content" value="<? echo $row['content']; ?>"/>
<br />
Tel :
<input name="tel" type="text" id="filename" value="<? echo $row['filename']; ?>"/>
</p>
<p>
<input type="submit" name="Submit" value="Submit" />
</p>
</form>
</body>
</html>
Link to comment
https://forums.phpfreaks.com/topic/18126-updating-record-in-mysql-please-help/
Share on other sites

You are not exiting from the if statement in the correct place.  Change:

[code]<?
// Connect database.
include("dbConfig.php");
if($Submit){
// Get parameters from form.
$id=$_POST['id'];
$title=$_POST['title'];
$content=$_POST['content'];
$filename=$_POST['filename'];
mysql_query("update articles set title='$title', content='$content', filename='$filename' where id='$id'");
header("location:edit.php");


// Get id parameter (GET method) from edit.php
$id=$_GET['id'];

// Get records in all columns from table where column id equal in $id and put it in $result.
//$result=mysql_query("select * from articles where id='$id'");

// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);
}
?>[/code]

to:

[code]<?php

// Connect database.
include("dbConfig.php");
if($Submit){
// Get parameters from form.
$id=$_POST['id'];
$title=$_POST['title'];
$content=$_POST['content'];
$filename=$_POST['filename'];
mysql_query("update articles set title='$title', content='$content', filename='$filename' where id='$id'");
header("location:edit.php");
exit;
}

// Get id parameter (GET method) from edit.php
$id=$_GET['id'];

// Get records in all columns from table where column id equal in $id and put it in $result.
//$result=mysql_query("select * from articles where id='$id'");

// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);
?>[/code]
Thank you for your replies.

everything is fine now and the text boxes appear with the data inside them BUT once i click on submit, nothing happens .

EXAMPLE: if i change name from DAVID to JOHN and click on update, the page refreshes and the name changes to DAVID again.
you need to test the string...

change thsi bit of ode so that the query string is in a var that you can print to screen...

[code]<?php
if($Submit){
// Get parameters from form.
$id=$_POST['id'];
$title=$_POST['title'];
$content=$_POST['content'];
$filename=$_POST['filename'];
$qry = "update articles set title='$title', content='$content', filename='$filename' where id='$id'";
echo $qry;
mysql_query($qry);
//header("location:edit.php"); comment this to make sure your qry is echoed...
//exit;
}
?>[/code]

Thanks for that.

[color=red]index.php[/color]


<?php
session_start();

if (!$_SESSION["valid_user"])
{
// User not logged in, redirect to login page
Header("Location: login.php");
}



// Display Member information
echo "<p>User ID: " . $_SESSION["valid_id"];
echo "<p>Username: " . $_SESSION["valid_user"];
echo "<p>Logged in: " . date("m/d/Y", $_SESSION["valid_time"]);

// Display Delete, Edit and add article links
echo "<p><a href=\"articles.php\">VIEW all Articles</a></p>";
echo "<p><a href=\"add.php\">Add New Article</a></p>";

echo"<br>";
// Display logout link
echo "<p><a href=\"logout.php\">Click here to logout!</a></p>";
?>




[color=red]edit.php[/color]

<?
// Connect database
include("dbConfig.php");

// Get all records in all columns from table and put it in $result.
$result=mysql_query("select * from articles ORDER BY id");

/*Split records in $result by table rows and put them in $row.
Make it looping by while statement. */
while($row=mysql_fetch_assoc($result)){

// Output
echo "ID : {$row['id']} <br/>";
echo "Title : {$row['title']} <br/>";
echo "Content : {$row['content']} <br/>";
echo "Filename : {$row['filename']} <hr>";

// Add a link with a parameter(id) and it's value.
echo '<a href="update.php?id='.$row['id'].'">Update</a>';
echo "<HR>";

}

mysql_close();
?>


[color=red]update.php[/color]

<?php
// Connect database.
include("dbConfig.php");

if($_POST['Submit']){
// Get parameters from form.
$id=$_POST['id'];
$title=$_POST['title'];
$content=$_POST['content'];
$filename=$_POST['filename'];
//mysql_query("update articles set title='$title', content='$content', filename='$filename' where id='$id'");
$q="UPDATE `articles` SET title='$title', content='$content', filename='$filename' where id='$id'";
$r = mysql_query($q);
if ( !$r )
  {
 
  echo "ERROR Please try again";
}
else
{

header("location:edit.php");
exit;
}
}

// Get id parameter (GET method) from edit.php
$id=$_GET['id'];


// Get records in all columns from table where column id equal in $id and put it in $result.
$result=mysql_query("select * from articles where id='$id'");

// Split records in $result by table rows and put them in $row.
$row=mysql_fetch_assoc($result);
echo $id;



?>


<html>
<body>
<form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
<p>Name :
<input name="name" type="text" id="title" value="<? echo $row['title']; ?>"/>
<br />
Email :
<input name="email" type="text" id="content" value="<? echo $row['content']; ?>"/>
<br />
Tel :
<input name="tel" type="text" id="filename" value="<? echo $row['filename']; ?>"/>
</p>
<p>
<input type="submit" name="Submit" value="Submit" />
</p>
</form>
</body>
</html>

I assume the problem relates to update.php not updating records?

Update.php appears to expect to get the information to be updated from a POST array ... but I don't see any POSTed form action anywhere in the code.  I do see a link equivalent to update.php?id=something (which isn't going to place any information in a POSTed array).  All edit.php does is display the information.

Perhaps it would be helpful to post the current version of update.php and the current version of 'whatever it is' that is linked to update.php so we can focus on complete scripts rather than attempt to follow the various script changes suggested piecemeal in the thread.
hmm. I suspect the update query is doing nothing because the value of id does not exist for the UPDATE query.

Add an extra line to the form in update.php so that the record ID gets POSTed:

[code]<input type="hidden" name="id" value="<?php echo $id;?>"/>[/code]
The not-so-secret secret methods of debugging queries that "refuse to work" is to know exactly what the query is - which is frequently not what you [i]think[/i] it is - and what the specific error is.

[code]$query = " .... whatever the query is ...";
echo $query; // nice to know what's happening[/code]

Also, learn to make better use of error trapping with code like this:

[code]$query = " .... whatever the query is ...";
$result = mysql_query($query) or die("Error: ". mysql_error(). " with query ". $query);[/code]

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.