Don't feel stupid, it's all part of learning 🙂
echo '<form method="POST" action="<$PHP_SELF?isdelete=$delete>">';
There could be 2 reasons this one didn't. The main one is the < >'s around the variable. Assuming register_globals is turned on, that would have sent the form to the page: <self.php?isdelete=deletevalue>
The second reason is as I stated above, register globals. If register_globals is turned off (default), you have to refer to your passed variables via their reserved names. For posted forms, $POST['varname'], for server info, $SERVER['PHP_SELF'], for URL variables (get method), $_GET['varname'], etc.
echo '<form method="post" action="$_SERVER['PHP_SELF']?">';
That one didn't work because of the single quotes. Single quotes will output exactly what is inside of them. In the case of variables, it will just output the name of the variable, rather than the value.
Personally, I would have done it like this:
echo "\n<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">";
Granted, it does look a bit more confusing, but I find it easier when I'm debugging. The \n will put a new line in your html, so you can indent your html code, make it easier to read. The \" escape the " so that it doesn't close the echo construct before you want it to 🙂
Hope that helps,
Matt