I seem to be getting duplicates into my databases. I do not know why. Perhaps if someone hit the back button they enter a set of values twice. How could I stop this happening... to detect if the back button is been hit.
You can, and should, implement the Post/Redirect/Get pattern.
And possibly form tokens.
Each time the form is viewed you add a hiddenfield with a unique ID which get's stored with the data.
If someone resends the same dataset it has the same ID -> show an error message, skip or whatever you like.