kostenloser Webspace werbefrei: lima-city


PHP Navigation. Ideen zur Optimierung?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    shakal

    Kostenloser Webspace von shakal

    shakal hat kostenlosen Webspace.

    Mahlzeit....


    Also ich hab das so ein Problem. Obwohl Problem kann man es nicht nennen, denn mein "Script" funktioniert ja eigentlich, aber ich wollte es eher optimieren.
    Es geht sich um folgendes:

    Ich mach ne Website, in der vor den Links in der Navigation immer ein kleines Quadrat erscheinen soll, wenn man den Link angeklickt hat. Nun hab ich 5 Links in der Hauptnavigation und dann für jeden der 5 Links bestimmt noch mal 4 Links in untergeordneten Navigation.

    Nun hab ich das so gelöst, dass ich für jeden Link eine kleine Funktion schreibe, die folgendermaßen aussieht:

    function service($menu)
    {
    	if($menu == "service")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    service($_GET['menu']);


    Diesen Code aber ~25 mal zu schreiben für jeden Link ist bestimmt schwachsinn und man könnte das doch sicher einfacher lösen, weil es ja im Prinzip bei jedem Link dasselbe ist.
    Hat da also irgendwer ne Idee, wie man das optimieren könnte?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. benutzernaemelchen

    Kostenloser Webspace von benutzernaemelchen

    benutzernaemelchen hat kostenlosen Webspace.

    Du könntest alle "sevices" in einem Array abspeichern und ihn dann in einer foreach() auswerten. Dann brauchst du nur noch das da hinzuschreiben...oder hab ich was falsch verstanden? (Geht das nicht auch per CSS?)

    Du willst doch per PHP praktisch _nur_ die Quadrate ausgeben?
  4. Autor dieses Themas

    shakal

    Kostenloser Webspace von shakal

    shakal hat kostenlosen Webspace.


    Du willst doch per PHP praktisch _nur_ die Quadrate ausgeben?


    exakt



    Du könntest alle "sevices" in einem Array abspeichern und ihn dann in einer foreach() auswerten. Dann brauchst du nur noch das da hinzuschreiben...oder hab ich was falsch verstanden? (Geht das nicht auch per CSS?)


    So ähnlich hatte ich auch gedacht, wobei dann das problem ist, dass wenn ich dann n Link anklicke, vor allen Links ein Quadrat steht.... logischerweise ^^
  5. Ich schieß einfach mal in Blaue.

    Kannst du das Ganze nicht mit switch lösen?

    Ich hab jetzt ne Weile drüber nachgedacht und ich finde das ist bestimmt einfacher. Allerdings weiß ich ja nicht wie du dein Menü im einzelnen aufgebaut hast, also in welcher Reihenfolge die Funktionen dastehen und besonders wie du die Links ausgeben lässt, sonst hätte ich vll einen Code posten können.
  6. Autor dieses Themas

    shakal

    Kostenloser Webspace von shakal

    shakal hat kostenlosen Webspace.


    Ich schieß einfach mal in Blaue.

    Kannst du das Ganze nicht mit switch lösen?

    Ich hab jetzt ne Weile drüber nachgedacht und ich finde das ist bestimmt einfacher. Allerdings weiß ich ja nicht wie du dein Menü im einzelnen aufgebaut hast, also in welcher Reihenfolge die Funktionen dastehen und besonders wie du die Links ausgeben lässt, sonst hätte ich vll einen Code posten können.


    hmmm mit switch? wie genau stellst du dir das vor?

    ich habs mal hochgeladen: http://shakal.lima-city.de/gnow/index2.php?lang=de

    und das ist der Code... Für jedes Kästchen eine Funktion :/
    <?
    function actual($menu) //jaja ich kann kein englisch... actual heißt halt nicht aktuell, aber es musste heute morgen schnell gehen :P
    {
    	if($menu == "aktuelles")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function company($menu)
    {
    	if($menu == "unternehmen")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function product($menu)
    {
    	if($menu == "produkt")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function press($menu)
    {
    	if($menu == "presse")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function service($menu)
    {
    	if($menu == "service")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function menu_include($menu)
    {
    	if(isset($menu))
    	{
    		include ("menu/".$menu.".php");
    	}
    }
    
    function mar($site)
    {
    	if($site == "mar")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function feb($site)
    {
    	if($site == "feb")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function jan($site)
    {
    	if($site == "jan")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function archiv($site)
    {
    	if($site == "archiv")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function glove($site)
    {
    	if($site == "glove")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function entwicklung($site)
    {
    	if($site == "entwicklung")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function shop($site)
    {
    	if($site == "shop")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function grundsaetze($site)
    {
    	if($site == "grundsaetze")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function partner($site)
    {
    	if($site == "partner")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function geschaeftsfuehrung($site)
    {
    	if($site == "geschaeftsfuehrung")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function pressemeldungen($site)
    {
    	if($site == "pressemeldungen")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function pressespiegel($site)
    {
    	if($site == "pressespiegel")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function kontakt($site)
    {
    	if($site == "kontakt")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function faq($site)
    {
    	if($site == "faq")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function deutsch($lang)
    {
    	if($lang == "de")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    
    function english($lang)
    {
    	if($lang == "en")
    	{
    		echo "<img src='images/square.gif' border='0'>";
    	}
    }
    ?>


    und vor jedem Link steht in etwa das:

    <?
    product($_GET['menu']);
    ?>


    Beitrag geaendert: 30.3.2007 19:55:16 von shakal
  7. Ich hatte so in die Richtung gedacht:
    <?
    function square_lang($arg)
    {
     switch($arg)
     {
      case 'en':
       return '<img src='images/square.gif' border='0'>';
      break;
      
      case 'de':
       return '<img src='images/square.gif' border='0'>';
      break;
     }
    }
    ?>


    Und aufrufen dann irgendwie so:
    <?
    echo square_lang($_GET['lang']);
    ?>

    So sollte er dann bei lang=de nur vor 'Deutsch' eine kleines Quadrat haben und bei lang=en nur vor 'English'.
    Für die menu und site dann noch zwei andere Funktionen, die genauso aufgebaut sind. Ob das aber letztendlich weniger Aufwand ist oder performancemäßig besser ist, kann ich schwer sagen.
  8. Deine ganze Seite ist der Horror. Vielleicht solltest du mal über mehr CSS und weniger Tabellen nachdenken.

    Dein Problem würde ich eigentlich so lösen, dass du alle Links einfach mit einer Schleife ausgibst und bei jedem Durchlauf überprüfst, ob das die gewählte Seite ist.
  9. Autor dieses Themas

    shakal

    Kostenloser Webspace von shakal

    shakal hat kostenlosen Webspace.


    Deine ganze Seite ist der Horror. Vielleicht solltest du mal über mehr CSS und weniger Tabellen nachdenken.


    ich weiß Spacke :> Aber wer mich kennt, weiß dass ich zu faul bin, mich mit neuen Dingen auseinanderzusetzen :D

    i-spacke schrieb:

    Dein Problem würde ich eigentlich so lösen, dass du alle Links einfach mit einer Schleife ausgibst und bei jedem Durchlauf überprüfst, ob das die gewählte Seite ist.


    Hmm das wäre denkbar... ja...



    @tct: Ich denke, wenn ich diesen Aufruf der Funktion vor die beiden Links setze, dann erscheinen immer vor jedem Link kästchen

  10. @tct: Ich denke, wenn ich diesen Aufruf der Funktion vor die beiden Links setze, dann erscheinen immer vor jedem Link kästchen


    Ja stimmt, ist mir dann später auch noch aufgefallen. Genau das wird passieren, da die Funktion dann natürlich zweimal das Ganze zurück gibt, denn sie wird ja dann zweimal mit lang=de aufgerufen. Also gehts leider doch nicht.
    Dann musst du wohl eher in Richung Spackes Vorschlag gehen und das Ganze in einer Schleife ausgeben. Daran hatte ich auch irgendwie gedacht (mir ist eigentlich sehr viel dazu eingefallen), aber ohne dass du alles umschreiben müsstest, gehts wohl nicht.
  11. Übrigens wäre es noch einfacher, wenn du mehrere Dateien erstellen würdest. Dein Problem wäre damit schnell gelöst und außerdem wäre das ganze userfreundlicher, da der User nicht immer den ganzen Code für alle Varianten mitladen muss. Irgendwie wird sowas in Zeiten von OOP-Hypes etc. immer wieder vergessen.
  12. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!