Hay un par de alternativas, puedes hacerlo con PHP o puedes utilizar un procedimiento almacenado. Creo que esta la mejor opción pero me parece que todavía necesitas un poco de estudio. Si quieres saber sobre store procedures:
http://www.forosdelweb.com/f86/aport...-mysql-866036/.
Si lo quieres implementar en php necesitas una función. Cada Update/Insert que se haga ha de pasar por esta función. La función hace una select de los valores actuales, los guarda en la tabla de registro y luego hace el update/insert.
Piensa que este procedimiento duplica la cantidad de peticiones a la DB con lo que tienes que pensar muy bien lo que quieres registrar.
Cuando tengas algo hecho lo posteas y seguimos desde ahi, salu2!