PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Falsche Ausgabe mit $_GET


rrabe
08.09.2009, 20:24:22
Hallo! In index.php wird mit einem include-Befehl die Datei cat.inc aufgerufen. Das ist diese:

cat.inc:
<?PHP
$cat_assignment = array(
'home' => 'cat1.php',
'galerie' => 'cat2.php',
'files' => 'cat3.php',
'whois' => 'cat4.php',
'logout' => 'cat5.php');
$cat_get=$_GET['cat'];

foreach($cat_assignment as $cat_set => $file) {
if (isset($cat_get)){
if($cat_get == $cat_set){
require("{$file}");
break;
}
if($cat_get !== $cat_set){
require_once("error.php");
break;
}
}
if (!isset($cat_get)){
require_once("cat0.php");
}
}
?>

in den jeweiligen cat0.php bis cat5.php ist reiner Text, der je nachdem, welche Seite aufgerufen wird (z.B. index.php?cat=home) in der index.php includiert wird. Bei cat=home ist das auch möglich, bei allen anderen Seiten (z.B. index.php?cat=galerie) wird jedoch trotzdem der Inhalt von error.php angezeigt.

Mein Ziel ist es, dass ich nurnoch eine index.php und
bei falscher Angabe von $cat_get eine Fehlermeldung erzeugt wird,
bei nicht gesetzter $cat_get cat0.php aufgerufen wird und
bei "richtig" angegebener $cat_get die entsprechende Datei aufgerufen wird.

Realisiert werden soll das Ganze durch das jeweilige Aufrufen der cat0-5.

Warum erfolgt die Darstellung nicht korrekt?

vt1816
08.09.2009, 20:34:42
Ohne jetzt auf Dein Konstrukt eingehen zu wollen, sollte Dein Stichwort switch() (http://de.php.net/manual/de/control-structures.switch.php) sein. Klein, fein und für Dein Vorhaben genau das richtige.

rrabe
09.09.2009, 10:16:32
Danke, das hat super geklappt. Mir kam die switch-Methode irgendwie gar nicht in den Sinn.

vt1816
09.09.2009, 13:25:37
Danke, das hat super geklappt. Mir kam die switch-Methode irgendwie gar nicht in den Sinn.

Gerne - dann behalte switch mal gleich im Sinn. ;-)