Thanks Jason. The id of the Cancel button is 'cancel'. Should have put:
if (array_key_exists('cancel', $_POST))
Now it works - don't know why I didn't pick that up before.
I've sorted out the deletion problem - I used a recordset with a LEFT JOIN & NULL to only display the records that are not being used (orphaned)