Problem mit Switch Case

Alles, was PHP betrifft, kann hier besprochen werden.

Problem mit Switch Case

Postby KleinEchse » 04. March 2011 00:57

Moin moin,

nach langer Abstinenz wende ich mich mal wieder an euch.

Ich bastel gerade ein einer Hompage. In dieser Homepage wird nun via include in der index.php ein Menue (menu.php) eingebunden. So schön und so gut. Das Menue Funtioniert, ist mit switch case aufgebaut und ich konnte mich schon ein wenig darüber erfreuen.
Nun beginnt aber mein Problem:

Als erstes habe ich im Menue den Eintrag Home der via switch case aus der menu.php verlinkt ist. drücke ich da drauf, wird der inhalt aus der entsprechend verlinkten Datei angesprochen (Home.php). in dieser Home.php ist wiederrum ein switch case konstrukt der den Begrüßungstext steuert (stellt beim klick auf Landesflagge den Begrüßungstext auf die entsprechende Sprache um). Also jedenfalls sollte es so sein nach meiner Logik. Wenn man die Home.php aufruft, funktioniert das Skript einwandfrei. Wenn ich es über die index.php aufrufe wird mir zwar der default Wert angezeigt aber eine weitergehende Sprach steuerung scheitert.

Nun meine Frage:
Da man ja php nachsagt das es schnell vergisst, vermute ich stark das die entsprechenden Werte einfach vergessen werden. Ist es in dem Falle sinnvoll das Skript aus der Home.php via Cookies oder Sessions etc. zu verarbeiten oder denkt ihr da schlummert irgendwoanders der Wurm?

Bei bedarf bin ich gern bereit den entsprechenden Code zu Posten.

LG Echse
KleinEchse
 
Posts: 10
Joined: 31. May 2009 22:59

Re: Problem mit Switch Case

Postby Nobbie » 04. March 2011 11:07

KleinEchse wrote:Bei bedarf bin ich gern bereit den entsprechenden Code zu Posten.


Das wäre sinnvoll, es ist schon schwer genug, Fremdcode zu debuggen, aber auch noch "Prosa" zu debuggen, das ist de fakto schier unmöglich.
Nobbie
 
Posts: 13171
Joined: 09. March 2008 13:04

Re: Problem mit Switch Case

Postby KleinEchse » 04. March 2011 12:35

Kein Problem. Hier ist als erstes die index.php. Diese ist so simpel wie möglich von mir gehalten:

Code: Select all
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
        "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title></title>
<link rel="stylesheet" type="text/css" href="css/style.css">
<link rel="shortcut icon" href="images/favicon.ico" >
</head>
<body>
   <div id="head">
   </div>
   <div id="seite">
   </div>
   <div id="content">

<?php
   require_once("menu.php"); // Eingebundenes Menue
?>

    </div>
</body>
</html>


Hier ist das Menue was ich eingebunden habe: menu.php (Das HTML ist nicht ganz valid, ist mir bereits bekannt.)

Code: Select all
<div class="menu">
Menue Überschrift<br>&nbsp;<br>
<div id="line2"></div>
      <a class="link" href="index.php?menu=Home">Home</a><br>
<div id="line2"></div>
      <a class="link" href="index.php?menu=leader">TER Leader</a><br>
<div id="line2"></div>
      <a class="link" href="index.php?menu=trade">Handel</a><br>
<div id="line2"></div>
      <a class="link" href="index.php?menu=chat">Aus dem Chat</a><br>
<div id="line2"></div>
   <a class="link" href="index.php?menu=gb">G&auml;stebuch</a><br>
<div id="line2"></div>

<?php

switch($_GET['menu'])
{
   case "Home":
   require_once("Home.php");
    break;

   case "leader":
   require("leaders.php");
    break;

   case "trade":
   require("Handelsroute.html");
    break;

   case "chat":
   require("chatsprueche.php");
    break;

   case "gb":
   require("gb.php");
    break;
}

?>

</div>


Und das ist mein Sorgenkind. Das ist die Home.php:

Code: Select all
<div id="flags">
<a href="index.php?site=GER"><img src="images/Deutschland.png" border="0" alt="German"></a>
<a href="index.php?site=US"><img src="images/USA.png" border="0" alt="Englisch"></a>
</div>

<div id="content_font2">
<div class="line3"></div><p>

<?php

switch($_GET["site"])
{

          case "GER":
        include("GER.php");
        break;

        case "US":
        include("US.php");
        break;

        default:
        include("GER.php");
        break;

}

?>

</div>


Wenn ich die Links aus der Home.php wiefolgt angebe:

Code: Select all
<a href="index.php?site=GER"><img src="images/Deutschland.png" border="0" alt="German"></a>
<a href="index.php?site=US"><img src="images/USA.png" border="0" alt="Englisch"></a>


Und folgend auf das image für die Spracheinstellung klicke wird mir der Inhalt der US.php und der GER.php nicht angezeigt. Der default Wert hingegen wird anfangs angezeigt. Wenn ich das index.php gegen Home.php tausche, werde ich auf die angegebenen Seiten weitergeleitet. Ich habe auch schon versucht den inhalt der GER.php und der US.php in der Home.php als Variable zu übergeben, die Variable in der switch case anweisung ausgeben zu lassen und das include weg zu lassen. Das ergebniss war hier aber das selbe.

Sorry wenn es etwas viel geworden ist. Und danke an jene die sich die mühe machen mir da zu helfen.

LG Echse
KleinEchse
 
Posts: 10
Joined: 31. May 2009 22:59

Re: Problem mit Switch Case

Postby Nobbie » 05. March 2011 00:45

KleinEchse wrote:Und folgend auf das image für die Spracheinstellung klicke wird mir der Inhalt der US.php und der GER.php nicht angezeigt.


Natürlich nicht. Wie denn auch? Dazu müßte ja von der index.php (bzw. menu.php) die Datei home.php includiert werden, denn nur dort wird $_GET['site'] ausgewertet. Aber home.php wird von menu.php nur dann geladen, wenn $_GET['menu'] den Wert "Home" hat. Aber die Variable $_GET['menu'] gibt es ja gar nicht, wenn Du auf den genannten Link klickst - da wird ja nur der Wert für "site" gesetzt.

Insgesamt ist das (sorry) grausam programmiert. Dieser Programmierstil ist unübersichtlich und "von hinten durch die Brust ins Auge". Möglicherweise ist das auch die Ursache dafür, dass Du nun selbst schon den Wald vor lauter Bäumen nicht siehst. Fakt ist jedenfalls, dass das so nicht geht.
Nobbie
 
Posts: 13171
Joined: 09. March 2008 13:04

Re: Problem mit Switch Case

Postby KleinEchse » 05. March 2011 12:49

Ok danke für deine Hilfe und ehrlichkeit. Werd nochmal den "Urschleim" durchgehen, an meinen Programmierstil arbeiten und viele Buchlektionen auffrischen.

LG Echse
KleinEchse
 
Posts: 10
Joined: 31. May 2009 22:59


Return to PHP

Who is online

Users browsing this forum: No registered users and 16 guests