Andreas Korthaus: Problem mit switch();

Beitrag lesen

Hallo!

Zum Problem wurde ja schon was gesagt, daher ein paar Anmerkungen:

<script type="text/javascript">
<!--
function CheckAuswahl() {
return true;
}
//-->
</script>

Dir ist bewusst dass bei abgeschaltetem Javascript kein Check erfolgt?
Man kann das durchaus einsetzen, sollte sich aber nicht alleine auf clientseitige Prüfungen verlassen.

im body:
<form name="Testform" onSubmit="return CheckAuswahl()" action="">

Du solltest bei "action" ein Script angeben. Wenn es dasselbe Script ist kannst Du <?php echo $_SERVER['PHP_SELF'] ?> verwenden.

Außerdem solltest Du "methode" (POST|GET) definieren.

<select name="npc" size="1">
<option>Aasgeier</option>
<option>Doppelkoepfiger Riesenskorpion</option>

Ich würde evtl. per "value" einfachere Werte definieren, z.b.
<option value="doppelk">Doppelkoepfiger Riesenskorpion</option>

echo $_REQUEST['npc']; //ergibt in dem Fall dann: 'doppelk'

<option>Giftgrabl</option>
<input type="submit" value="Auswählen!">
</form>

Nun mache ich:

switch($npc){

Diese Möglichkeit ist offiziell "deprecated" (veraltet). Du solltest entsprechend der im Formular verwendeten Methode $_GET['npc'] oder $_POST['npc'] verwenden. Siehe:
http://de3.php.net/manual/de/security.registerglobals.php
http://de3.php.net/manual/de/reserved.variables.php#reserved.variables.post

case Aasgeier: echo "10";
break;
case Doppelkoepfiger+Riesenskorpion: echo "100";
break;
case Giftgrabl: echo "2";
break;
}

Man sollte undefinierte Eingaben abfangen, bei switch kannst Du das einfach mit Hilfe von "default" machen, das heißt eine Fehlerbehandlung für alle Eingaben, die durch kein "case" abgearbeitet werden (Fallback). Siehe auch Beispiele unter http://de3.php.net/switch.

Grüße
Andreas

--
SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/