No entiendo muy bien el juego que haces con javascript y tu "procesar" variable. En principio no deberías guiarte por la existencia/valor de esa variable sino de otra de tu formulario: por ejemplo de "texto" si existe o no .. por qué si existe será que has hecho el submit y si no existe es que no se ha hecho el submit.
Si tienes un script X que puede hacer N determinadas acciones:
1) un formulario
2) proceso del formulario
3) mostrar resultado
debes separar los procesos como si fuera en "scripts a parte" pero en tu caso al usarlos bajo uno mismo debes tener una variable de control que dedida en que proceso se está y que es lo que debe hacer el script.
Código PHP:
<?php
cabecera(){
?>
<html>
<head>
</head>
</body>
<?
}
pie(){
?>
</body>
</html>
<?
}
formulario (){
// el formulario HTML
?>
<form action="<? echo $_SERVER['PHP_SELF']."?accion=procesar" ?>" method="GET">
<input type="text" name="texto">
<input type="submit" name="procesar" value="Procesar">
</form>
<?
}
swith($_GET['accion']){
case "procesar":
// tal vez guardarias los datos de tu formulario en una BD .. etc
header ("Location: ".$_SERVER['PHP_SELF']."?accion=resultado");
break;
case "resultado":
cabecera();
echo "Esto es el resultado (aquí podrías poner tu javascript de alert()";
// y si quieres .. muestras el formulario
formulario();
pie();
break;
default:
cabecer();
formulario();
pie();
}
?>
Fijate bien el proceso y como se componen las diferentes acciones que hace el script.
Uso tres funciones para definir la "cabecera" de la página HTML y su "pie" ademas de mi formulario. Los llamo -sólo- cuando son realmente necesarios (cuando voy a mostrar alguna salida al navegador) .. si te das cuenta NO llamo ni a cabecera(), pie() .cuando estamos en el caso de "proceso" del formulario. Así mismo cuando termino el proceso "PHP" (que en tu caso no haces nada pero ya lo haras ..) redirecciono a la misma página (script) pero en otro "estado" .. en ese caso al "resultado" que es donde muestro el mensajito .. o listado .. o lo que corresponda. Con ese redireccionamiento .. si recargas la página de "resultado" que se muestra (que es el mensaje+ tu formulario ..) se han "perdido" las variables ya .. y si recargas la página sólo recargaras ese "resultado".
Esto sería el procedimiento básico de trabajo con un scritp que hace várias cosas: procesos y entradas/salidas desde/hacia el cliente.
PD: usa método POST en tus formualarios a ser posible.
Un saludo,