|
Posted by Jason Barnett on 05/05/05 20:38
Mark Rees wrote:
> -----Original Message-----
> From: Robb Kerr [mailto:rkerr.news@digitaliguana.com]
> Sent: 05 May 2005 00:29
> To: php-general@lists.php.net
> Subject: [PHP] Tracking what has been changed
>
>
> Here's the scenario...
>
> I am building a site in which users will be able to create and then
> later edit personal information. When they edit their information, I
> need to keep track of what was changed so that I can inform via email a
> person to approve the changes. Here's the flow I'm considering...
>
> When an UPDATE page is loaded, I build an array like...
>
> $fields = array("table.field1" => value, "table.field2" => value,
> "table.field3" => value)
>
> I then plan to save this array to a SESSION variable. Then, when the
> form is posted I save the new form contents to another SESSION variable.
> Then I compare the two arrays and save the names of the fields changed
> to an array saved in a third SESSION variable. Finally, when I build the
> email, I can parse the changed fields array to inform the person who
> must approve the changes.
>
> First, does anyone have a suggestion of a better way to do this?
cron job a script for the emails... just in case you have some fool(s)
trying to make 100's of updates per minute.
store the potential changes to an "UPDATE" table or something similar.
admin can then commit the change by updating these proposed changes or
just dump them from the table.
[EDIT] I see that you're doing this below. Nice.
> --------------------------
> How long do you expect people to take to approve the changes? What
> happens if they don't approve them? What if they are on holiday? What if
> someone changes the data, then someone else makes another change, then
> the person who approves them approves the first change?
>
Your problem, not mine. ;) Seriously those are good questions, but I'm
not going to make policy decisions for you / your company. Your
question about transactions is interesting though... do you mean you
have multiple users that can change the same information?
> I would recommend storing the change information in a db.
> Say you have a table t_personal_info
>
> Id
> firstName
> surName
> Telephonenumber
> dateUpdated
>
> You can then have another table
> t_personal_info_pending
> With an additional field changeid (to handle multiple changes to the
> same record)
>
> With the same fields. When someone approves a change, update
> t_personal_info with the change and delete the record from
> t_personal_info_pending
>
> ----------------------------
> Second, I can't seem to save an array to a SESSION variable. I build the
> array in a local variable and then set the SESSION variable equal to it.
> When I recall the SESSION varialbe, it's contents is "Array". Then, when
> I print_r() the SESSION variable, I still get "Array" as the contents.
> What's up?
I doubt that references are the issue, but if they are you can do this:
$_SESSION['local'] = &$local;
Are you possibly emptying out the $local array some place? Or are you
emptying out the $_SESSION anywhere? Heck, are you even sure that
you're using the same session from request to request? Or perhaps the
process you use to build the $local and / or $_SESSION['local'] is
flawed and not really building anything.
>
> Thanx in advance for any help.
[Back to original message]
|