ik heb een formulier met method=post

<input type="radio" name="route" value="a13"<?php if (isset($_POST['route']) && $_POST['route'] == 'a13') {echo "checked";}?>/>

nadat ik op de submit button geklikt heb, moet er een andere pagina getoond worden waarin een switch staat:
<?php
switch ($_POST['route'])
{
case "a13":

?>
Als ik de pagina met het formulier verstuur om naar een andere pagina te gaan krijg ik de melding:

The XML page cannot be displayed
Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.


--------------------------------------------------------------------------------

Invalid at the top level of the document.

Ik heb geen idee wat het kan zijn. Voordat ik het formulier verstuur kijk ik nog even of $_POST['route'] een waarde heeft, dat heeft tie.

In de top van mijn document met de switch staat dit:
<?php

echo'<?xml version="1.0" encoding="iso-8859-1"?>'?>

en dat staat op al mijn pagina's.

Ik snap de XML fout niet...
Eerst met isset() controleren of een variabele, $_POST['route'] in dit geval, wel bestaat. Zo ja, dan ga je er iets mee doen. Zo nee, dan ben je snel klaar...
Frank, je bedoelt waarschijnlijk datgene wat ik 1 minuut eerder gepost had?
Ik heb m'n pagina's ingekort.

Deze pagina:
<?php
error_reporting(E_ALL);

if ($_SERVER['REQUEST_METHOD'] == 'POST'){
if(isset($_POST['route'])){
header("location:http:route.php");
}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<BODY>
<form action="" name="" method="post">
<h3>Routebeschrijving</h3>

<input type="radio" name="route" value="a20"<?php if (isset($_POST['route']) && $_POST['route'] == 'a20') {echo "checked";}?>/>
Met de auto, vanaf richting Utrecht (A20)<br/>

<input type="submit" name="submit" value="toon route" />
</form>

</BODY>
</HTML>

zou onderstaande pagina moeten oproepen en de tekst: Hier is mijn route echoen

<?php
error_reporting(E_ALL);
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>

<BODY>
<?php
switch($_POST['route'])
{
case 'a20':
echo"Hier is mijn route";
}
?>
</BODY>
</HTML>

maar krijg de melding: Undefined index: route

snap er echt helemaal niets van. Wat is hier mis mee?
$_POST['route'] bestaat niet
Tip: Hou de logica en de output uit elkaar. Dat maakt je script een stuk overzichtelijker en beter onderhoudbaar. Voorbeeldje:

<?php
error_reporting(E_ALL);

if(isset($_POST['route'])){
      switch($_POST['route'])
      { 
      case 'a20':
        $output = "Hier is mijn route";
        break;
      default:
        $output = "Onbekende route";
        break;
      }
}
else {
        $output = 'Geen waarde opgegeven';
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<BODY>
<?php echo $output; ?>
</BODY>
</HTML>

Zowel de html-code als de php-code is zo een stuk overzichtelijker. Tevens kun je zo nooit problemen met sessies en/of cookies krijgen, die worden gebruikt en gezet in het gedeelte voor de output.
waarom bestaat $_POST dan niet?

@Frank, bedankt. Het is een goeie tip.

Ik heb 2 pagina's waarbij output de route.php pagina is.

Het enige waar ik mee zit, is dat $_POST['route'] leeg is in de output pagina. De header () functie zorgt er toch voor dat $_POST['route'] beschikbaar is in het volgende script??

Reageren