PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Übergebende Variable wird nicht richtig ausgewertet



againsttcpa
11-05-2005, 11:41
Bevor ich mein Problem genauer schildere erst einmal die nötigen Dateien.
Zuerst die Datei, wo ich meine Menüs definiere.

<?php
$mnu_raumbuch="
<table frame=\"box\">
<tr><td><input type=\"button\" value=\"Liegenschaft\" onClick=\"self.location.href='register.php'\"></td></tr>
<tr><td><input type=\"button\" value=\"Gebäude\" onClick=\"self.location.href='register.php'\"></td></tr>
<tr><td><input type=\"button\" value=\"Räumliche Hierarchie\" onClick=\"self.location.href='register.php'\"></td></tr>
<tr><td><input type=\"button\" value=\"Austattung\" onClick=\"self.location.href='./register.php'\"></td></tr>
<tr><td><input type=\"button\" value=\"Fläche\" onClick=\"self.location.href='./register.php'\"></td></tr>
</table>
";

$mnu_merkmale="
<table frame=\"box\">
<tr><td><input type=\"button\" value=\"Beschreibungstyp\" onClick=\"self.location.href='register.php'\"></td></tr>
<tr><td><input type=\"button\" value=\"Merkmal\" onClick=\"self.location.href='register.php'\"></td></tr>
<tr><td><input type=\"button\" value=\"Einheit\" onClick=\"self.location.href='register.php'\"></td></tr>
</table>
"
?>

Jetzt die Datei, wo ich die nach Auswahl einfügen möchte.


<?php
include("init.inc");
include("menu.inc");
echo "Menu ist gleich $menu"; <---- Dient nur zum Testen
switch ($menu) {
case 1: $outmenu=$mnu_raumbuch;
case 4: $outmenu=$mnu_merkmale;
}
//Formular erstellen
$formular="
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\">
<meta name=\"GENERATOR\" content=\"phpWebClasses application framework\">
<title>WebLogin</title>
</head>
<body bgcolor=\"#FFFFFF\" link=\"#A00000\" vlink=\"#600000\" alink=\"#A00000\">
<center>

<form action=\"login.php\" method=\"post\" target=\"Program\">
<input type=\"hidden\" name=\"webfm_gezeigt\" value=\"y\">
<table bgcolor=\"#cccccc\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<td>
<TABLE>
<tr bgcolor=\"#000099\">
<td align=\"left\">
<span style=\"color: #ffffff; font-weight: bold; font-family: arial; font-size:smaller\">&nbsp;Webbasiertes Facility Management $menu</span>
</td>
</tr>
<tr bgcolor=\"#cccccc\">
<td align=\"left\">

<table border=\"0\">
<tr>
<td>
<table frame=\"box\">
<tr><td><a href=\"webfm.php?menu=1\">Raumbuch</a></td></tr>
<tr><td><a href=\"webfm.php?menu=2\">Nutzung</a></td></tr>
<tr><td><a href=\"webfm.php?menu=3\">Systeme</a></td></tr>
<tr><td><a href=\"webfm.php?menu=4\">Merkmale</a></td></tr>
<tr><td><a href=\"webfm.php?menu=5\">Kataloge</a></td></tr>
<tr><td><a href=\"webfm.php?menu=6\">Gliederungen</a></td></tr>
<tr><td><a href=\"webfm.php?menu=7\">Unterlagen</a></td></tr>
<tr><td><a href=\"webfm.php?menu=8\">Administration</a></td></tr>
</table>
</td>
<td>
<table frame=\"box\">
<tr><td>Test</td></tr>
</table>
$outmenu
</td>
</tr>
</table>

</td>
</tr>
</TABLE>
</td>
</tr>
</table>
</form>

</center>
</body>
</html>
";

//Wenn das Formular noch nicht gezeigt wurde und der benutzer über keinen Cookie verfügt
if (! isset ($webfm_gezeigt)) :
print $formular;
//Falls cookie vorhanden ist, Benutzer_ID zum extrahieren der Informationen
//aus der Datenbank verwenden
else :

if (isset ($webfm_gezeigt)) {
unset($webfm_gezeigt);
}
endif;
?>

In der echo-Anweisung wird der Wert korrekt angezeigt.
Beim nachfolgenden Switch scheint aber die Zuweisung nicht richtig zu erfolgen.
Was mache ich falsch?

Wer sich das ganze im Browser ansehen möchte kann hierzu diesen Link aufrufen:
Webtest (http://http://www.betterproducts.de/test/webfm/index.php)

klewan
11-05-2005, 11:50
hmmm


switch($in_var) {
case "1"
}

oder mit explicitem cast sollts auch gehen

switch ( (int) $in_var) {
case 1:


.....

achja register_globals is "on" ?!?
würde raten $_GET/POST zu verwenden

againsttcpa
11-05-2005, 11:56
Ich habe beides Probiert und er zeigt mir nach wie vor immer das zweite Menü "mnu_merkmale" an.

klewan
11-05-2005, 12:00
ach jetzt hab ichs kapiert
lol mach mal:



case 1:
$outmenu=$mnu_raumbuch;
break;

case 4:
$outmenu=$mnu_merkmale;
break;



dachte das weggelassen break wäre absicht :-D (hab nur drübergelesen )


wenn de kein break hast läuft die case weiter das hat ab und an wenn man eine case "verodern" will sin


bsp:
case 1:
case 2:
case 3:
do something with 1,2,3

againsttcpa
11-05-2005, 12:01
:rolleyes: Oh je, ziemlich dummer Fehler von mir :rolleyes:

Da ich viel in Pascal programmiere, habeich nicht daran gedacht jeden Case-Abschnitt mit einem Break zu versehen. :eek:

Aber danke für die Hilfe.

klewan
11-05-2005, 12:01
gern doch :-D
hab auch beim ersten post drüber gelesen und dacht es wärn type conversion fehler :o