On 06-Oct-2001 Chip wrote: >> Well, if you only update the fields that changed then who cares? The >> fields that Jill changes are going to overwrites Jack's changes anyway. >> Locking the record and having Jack finish before Jill can start isn't >> going to change the end result which would be that Jill's changes are >> going to overwrite Jack's. > > The reason for this is because the data that Jack enters could potentialy > affect the data that Jill enters. > > Example: Jack is an administrator at a forum somewhere. Jack is editing a > post that Jill entered to remove inapropriate content. Meanwhile Jill is > editing the same post to revise what she said seeing that it could be > mistaken for being inappropriate. Jack saves, Jill Saves...Jacks stuff is > lost. > > OK that example is poor I admit...but do you see the reasoning behind > locking? If a lock was in place Jill would't be able to edit her post > because she would get a message stating that Admin Jack was allready editing > it. >
You can add a timestamp to the table mysql> ALTER TABLEda_table ADD ts TIMESTAMPNOT NULL AFTER id; Add the timestamp to the update criterion; Re-do the form if it doesen't match: if (isset($do_update) { $qry= "updateda_table set foo='$foo' where id='$id' and ts='$ts'"; $res=mysql_query($qry); $cnt= mysql_affected_rows($res); if ($cnt == 0 ) { printf('<META HTTP-EQUIV="Refresh" CONTENT="5; URL=%s?id=%s"', $PHP_SELF, $id); echo '<P>Record is stale<BR>'; } else { echo '<P>Record updated<BR>'; } } $qry= "select ts,foo from da_table where id='$id'"; $res=mysql_query($qry); $row = mysql_fetch_object($res); printf('<FORM METHOD=POST ACTION="%s">', $PHP_SELF); echo "<INPUT TYPE=HIDDEN NAME=id VALUE=$id>"; echo "<INPUT TYPE=HIDDEN NAME=ts VALUE=$row->ts>"; echo "<INPUT TYPE=TEXT NAME=foo VALUE=$row->foo>"; echo '</FORM>'; Regards, -- Don Read [EMAIL PROTECTED] -- It is necessary for me to learn from others' mistakes. I will not live long enough to make them all by myself. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]