Beh, però per logica, se ho un form, i codici di controllo php andrebbero messi dopo l'invio.
si nella programmazione con i normali linguaggi, non per il web,
dove, semplificando molto, la pagina viene ricaricata da zero, ovvero ti ritrovi tutte le variabili non assegnate,
da cui l'uso delle $_SESSION, $_POST e $_GET o altre diavolerie per tenersi i dati ....
il link che ti ho postato, te lo spiega bene,
devi cambiare un poco il tuo modo di pensare
ciao
Marino