$GET['submit'] is looking for a variable that was passed through the URL. If you don't have a url with &submit=yes or something like that, then $GET['submit'] will be NULL, rendering isset() false every time.
Because you are passing "name" in the URL, I would simply change your code to check for that variable:
<body>
<?
$name = $_GET['name'];
if ($name) {
echo ("Hello <font color=\"blue\">");
echo $name;
echo ("</font> Thank you for filling out my form!<br /><br />");
}
?>
<form action="<?=$_SERVER['PHP_SELF']?>" method="get">
<table border="0" cellpadding="0" cellspacing="3" summary="">
<tr>
<td align="left">What is your name?</td>
<td><input type="text" name="name" /></td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" /></td></tr>
</table>
</form>
</body>
The same is true if you had used the POST method. You can check to see that POST (or GET) never contains 'submit' by inserting print_r ($_POST); at the beginning of your PHP code. It will print out all of the variables passed from the form, which in this case is name.
Incidentally, when posting code, don't use
tags. Use
tags instead -- they will show up in color and easier to read, like my code above.
HTH!