First and foremost: You're probably having trouble because register_globals is off. You should be coding as if they are off, even if they are on. This way, i you ever need to move your code to another host, and they have register_globals off, it's going to work, either way. Read more about that here
Now on to your questions:
1) $PHP_SELF (should be $SERVER['PHP_SELF']) tell it to submit to the same page. Using if ($submit) { (should be $POST['submit']), says "if this page was submitted, then process it"
2) The better option IMHO, since I'm not a an o submitting to PHP_SELF. You would change the action in the form tag from $PHP_SELF to the name of the processing page. Then just move all your code to process the form onto that page.
3) Probably a register_globals problem. Hard to say since all your doing is looping through the results.
HTH