la prima domanda non l'ho capita :master:

per la seconda invece...

puoi fare in 2 modi:

1) form -> inserimento -> pagina risultati
in questo modo anche se aggiorni la pagina, non hai piu' i dati del form e quindi non hai doppi inserimenti

2) fai un controllo su un campo univoco che vai ad inserire (es. il datetime dell' inserimento del record a meno che tu non riesca a fare 2 inserimenti al secondo non dovresti avere 2 volte lo stesso campo nel db) e prima di fare l'insert fai una select per vedere se esiste un record con quel valore; se esiste vuol dire che hai aggiornato, se non esiste te lo inserisce...
naturalmente il valore now() lo devi avere gia' in un campo hidden della form, altrimenti e' inutile :P