Options site set empty fields after submitting

A few things to note in your code:

  1. Two inputs share the same name of “email”, so when those values get sent in the form submission, the second one will overwrite the first.

  2. The input name attribute value should match the name of the option being saved. Instead of “email”, use “fhwtest_email”. Without that, the values won’t be saved to the correct options.

  3. get_option() will return false if there’s not a value set for the requested option name; if you pass false to esc_attr() it’ll return an empty string, so the next save will set the value to an empty string.

While there are certainly lots of ways to approach the creation of settings, I suggest taking a look at the Plugin Developer’s Handbook section on Settings for sample code and details into the Settings and Options APIs.