I have a site which allows users to make changes to content. How can I implement a rollback system? I’m using php and mysql, I was thinking of creating tables such as the following:
posts table — posts_rollback table — rollback table
The posts_rollback table would act as a lookup table. The posts table has a one to many relationship with the posts_rollback table. I would then use inner_join to
Is there a better way of doing this or any class/feature which automatically does this itself?
I think what you mean is content versioning (like here on SO) rather than rollbacks – the term “rollback” is mostly used in context of database transactions.
The simplest thing that comes to mind is to have two tables:
poststhat stores non-editable data (author, date created) andcontentwith versioned data (text, date-updated, editor etc). Have a field called “version” in the posts table. When a post is updated, increase “version” and insert the data into content, along with post ID and “version”. When retrieving posts, join content with posts on posts.id and posts.version.