Variablen in der Url werden nicht erkannt?

grooviak

Mitglied
Hi Leute

Ich arbeite mich gerade wieder in PHP ein und habe folgendes Problem. Das folgende Script soll die Darstellung des Menüs meiner Website steuern. Die Variable $menu wird (wie zu sehen ist) über die URL übergeben. Je nach Wert der Variable sollen die Bilder ersetzt werden. Nur funktioniert das leider noch nicht...
sad.gif


Das Skript bei der Arbeit

CODE
<?PHP

echo "<img border='0' src='bg_buttons.gif' width='150' height='30'>";

if ($menu == "home")
{
echo "<img border='0' src='a_home.gif' width='150' height='30'>";
} else {
echo "<a href='menu.php?menu=home' onMouseover=\"home.src='h_home.gif';\" onmouseout=\"home.src='i_home.gif';\"><img border='0' src='i_home.gif' name='home' width='115' height='30'></a>";
}

if ($menu == "hosting")
{
echo "<img border='0' src='a_hosting.gif' width='150' height='30'>";
} else {
echo "<a href='menu.php?menu=hosting' onMouseover=\"hosting.src='h_hosting.gif';\" onmouseout=\"hosting.src='i_hosting.gif';\"><img border='0' src='i_hosting.gif' name='hosting' width='115' height='30'></a>";
}

if ($menu == "design")
{
echo "<img border='0' src='a_design.gif' width='150' height='30'>";
} else {
echo "<a href='menu.php?menu=design' onMouseover=\"design.src='h_design.gif';\" onmouseout=\"design.src='i_design.gif';\"><img border='0' src='i_design.gif' name='design' width='115' height='30'></a>";
}

if ($menu == "support")
{
echo "<img border='0' src='a_support.gif' width='150' height='30'>";
} else {
echo "<a href='menu.php?menu=support' onMouseover=\"support.src='h_support.gif';\" onmouseout=\"support.src='i_support.gif';\"><img border='0' src='i_support.gif' name='support' width='115' height='30'></a>";
}

if ($menu == "contact")
{
echo "<img border='0' src='a_contact.gif' width='150' height='30'>";
} else {
echo "<a href='menu.php?menu=contact' onMouseover=\"contact.src='h_contact.gif';\" onmouseout=\"contact.src='i_contact.gif';\"><img border='0' src='i_contact.gif' name='contact' width='115' height='30'></a>";
}
?>

Hat jemand eine Idee, wo das Problem liegt?
 
und wenn du Anstelle von
$menu
$_GET['menu']
verwendest, gehts dann?

Franz
 
Hey Franz

Merci für deine Antwort. Leider ändert sich nichts, wenn ich in den IF-Abfragen das $menu durch $_GET['menu'] ersetze.

Gruass
Christoph
 
setze an den anfang des scripts einfach mal ein
echo $menu;

dann siehst du sofort wo das problem liegen könnte.
 
Merci, Josh.

Offenbar wird die Variable $menu gar nicht übergeben. Aber weshalb?

menu.php?menu=contact stimmt doch? Ich kapier das nicht...
sad.gif
 
ich habe jetzt das Script, so wie es oben gepostet ist, absolut unverändert, auf 2 verschiedenen Servern ausprobiert und es funzt fehlerfrei.
Irgendwo geht die Variable bei Dir verloren. Kann es sein, dass Du oben nicht den kompletten Code gepostet hast?

Hamlet
 
Super Globale Variablen ist glaube ich das Stichwort, sowie vielleicht Register globals.

Ich benutzte meistens $_REQUEST:

$r = $_REQUEST; //weil faul
if ($r['menu'] == "menu") {}

Je nach Php Version sollte aber wie Hamlet bestätigt sogar deine Version laufen.

Wie Josh gut erwähnt hat mach echo $r['menu'];
 
So... jetzt klappts. Falls jemand jemand mal ein ähnliches Problem haben sollte, oder falls es jemanden interessiert, hier das korrigierte Script:

CODE
<?PHP

echo "<img border='0' src='bg_buttons.gif' width='150' height='30'>";

$r = $_REQUEST;

if ($r['menu'] == "home")
{
echo "<img border='0' src='a_home.gif' width='150' height='30'>";
} else {
echo "<a href='menu.php?menu=home' onMouseover=\"home.src='h_home.gif';\" onmouseout=\"home.src='i_home.gif';\"><img border='0' src='i_home.gif' name='home' width='115' height='30'></a>";
}

if ($r['menu'] == "hosting")
{
echo "<img border='0' src='a_hosting.gif' width='150' height='30'>";
} else {
echo "<a href='menu.php?menu=hosting' onMouseover=\"hosting.src='h_hosting.gif';\" onmouseout=\"hosting.src='i_hosting.gif';\"><img border='0' src='i_hosting.gif' name='hosting' width='115' height='30'></a>";
}

if ($r['menu'] == "design")
{
echo "<img border='0' src='a_design.gif' width='150' height='30'>";
} else {
echo "<a href='menu.php?menu=design' onMouseover=\"design.src='h_design.gif';\" onmouseout=\"design.src='i_design.gif';\"><img border='0' src='i_design.gif' name='design' width='115' height='30'></a>";
}

if ($r['menu'] == "support")
{
echo "<img border='0' src='a_support.gif' width='150' height='30'>";
} else {
echo "<a href='menu.php?menu=support' onMouseover=\"support.src='h_support.gif';\" onmouseout=\"support.src='i_support.gif';\"><img border='0' src='i_support.gif' name='support' width='115' height='30'></a>";
}

if ($r['menu'] == "contact")
{
echo "<img border='0' src='a_contact.gif' width='150' height='30'>";
} else {
echo "<a href='menu.php?menu=contact' onMouseover=\"contact.src='h_contact.gif';\" onmouseout=\"contact.src='i_contact.gif';\"><img border='0' src='i_contact.gif' name='contact' width='115' height='30'></a>";
}
?>


Danke, Jungs ! ! !
 
also hätte es doch mit $_GET genauso gut laufen müssen?! oder hast du die variablen per post versandt?!

btw alain's faulheit in ehren, aber ich würde $_REQUEST nicht in $r schreiben... kein schöner programmier stil und es besteht die gefahr, überschrieben zu werden ohne es zu wollen...
benutze einen editor mit code completion... in editplus2 kannst du z.b. dann einfach "r" eingeben und daraus wird "$_REQUEST['']"... alles frei definierbar.
smile.gif
 
Stimmt schon. Ich habe die Variablen mit GET übergeben...

Das mit dem Editor ist so eine Sache: Da ich das Design grundsätzlich noch mit einem WYSIWYG-Editor erstelle, schreibe ich auch PHP meist darin. Muss mich unbedingt umgewöhnen...
wink.gif
 
Zurück
Oben