Dunque se tu hai un action di quel tipo e un form che fa submit col method GET (che è il settaggio di default), la tua variabile in get verrà sovrascritta dalle altre variabili che vengono generate nel submit, per esempio:

<form action="pagina2.php?id=<? echo $_GET['id']; ?>">
<input type=hidden value=2 name=valore>
<input type=submit value=entra!>
</form>

qui nel querystring avrai pagina2.php?valore=2, perchè la variabile che c'è nell'action viene sovrascritta dalle variabili generate dal submit (in questo caso dall'hidden "valore").

Per far funzionare una cosa del genere hai due alternative, la prima è:

<form action="pagina2.php?id=<? echo $_GET['id']; ?>" method=post>
<input type=hidden value=2 name=valore>
<input type=submit value=entra!>
</form>

in questo caso avrai le variabili del form nell'array $_POST e troverai nel querystring la variabile
?id=.

La seconda alternativa è:

<form action="pagina2.php">
<input type=hidden value=2 name=valore>
<input type=hidden value="<? echo $_GET['id']; ?>" name=id>
<input type=submit value=entra!>
</form>


cioè metti un hidden con name id con il valore dell'id così te lo ripassi con il submit del form