PHP Ausklappbares Menü

vengeance_1984

Lt. Commander
Registriert
Juli 2007
Beiträge
1.183
Hallo,

ich habe ein paar Fragen bzgl. der php-Programmierung, die erste und Wichtigste ist folgende:

Ich möchte ein Menü erstellen, welches im Anfangszustand, also wenn man gerade auf die Seite gelangt, nur die Hauptpunkte anzeigt.

Sobald man auf einen der Hauptpunkte klickt, soll im Contentbereich der Inhalt der dazugehörigen eingebundenen HTML-Datei angezeigt werden und unter dem Hauptpunkt die passenden Untermenüs eingeblendet werden.
Klickt man nun auf einen anderen Hauptpunkt, sollen die Unterpunkte vom vorherigen Hauptpunkt wieder ausgeblendet werden, die neue dazugehörige HTML-Datei eingebunden und die nun zum neuen angeklickten Hauptpunkt dazugehörigen Untermenüs eingeblendet werden.

Die Website ist übrigens mit CSS erstellt.


Ich habe natürlich schon mit Google gesucht, habe bislang jedoch leider nichts wirklich Brauchbares gefunden.

Wäre deswegen sehr dankbar, wenn mir jemand Tipps geben könnte oder Links zu Tutorials, die ebendiese Frage beantworten.


PS: Einen Link zur Seite kann ich leider nicht geben.
 
Also wenn du das ganze mit PHP machst, müsstes du eine verschachtelte if Abfrage einbauen, die anhand der übergeben Parameter (wenn, würde ich es mit GET machen) Untermenüs ladet oder nicht. Das ganze würde unschön aussehen, da die Seite jedes mal neu geladen werden müsste.

Alternative wäre mit Java Script. Damit könntest du ohne reload der Seite Untermenüs ein bzw. ausblenden.

http://aktuell.de.selfhtml.org/artikel/dhtml/treemenu/beispiel.htm
http://www.brainjar.com/dhtml/menubar/demo.html
http://www.dhtmlcentral.com/projects/coolmenus/?m=10

Wie das ganze dann mit dem Laden von Inhalten von anderen HTML Seite aussieht kann ich dir nicht sagen, da ich dafür in JS zu wenig Erfahrung habe.
 
Vielen Dank schonmal für deine Antwort!

So ähnlich wie im ersten Beispiel gezeigt soll es aussehen (nur dass die Untermenüs verschwinden sollen, sobald auf einen anderen Hauptpunkt geklickt wird), allerdings befürchte ich, dass vieles geändert werden muss, wenn die Inhalte nicht mit php, sondern mit JavaScript eingebunden werden sollen.


Gibt es deswegen vielleicht ein möglichst verständliches Tutorial, wie dies mit php zu bewerkstelligen wäre?
 
Genau dazu gabs mal ein gutes Tutorial, leider ist das nicht mehr im Netz, nur noch dieses abgespeckte Beispiel ohne Untermenü. Aber das Prinzip ist das selbe:
PHP:
<?php
   // das Array mit den Menüpunkten
   
  $topics =
  array(
    'start' => 'Startseite',
    'uberuns' => 'Über uns',
    'bilder' => 'Bilder',
    'adressen' => 'Adressen',
    'gastebuch' => 'Gästebuch',
    'links' => 'Links',
  );

  // wenn der URL-Parameter "main" nicht gesetzt ist, setze ihn auf "punkt1"
  // ansonsten übernehme den Parameter
  
  if (!isset($_GET['main']))
  {
    $main = 'start';
  }
  else
  {
    $main = strtolower($_GET['main']);
  }

  // Speichere den eigenen Seitennamen in der Variable $myself
  
  $myself = $_SERVER['PHP_SELF'];
?>

<html>
  <head>
    <title>Template-Test</title>
    <link rel=stylesheet type="text/css" href="css/css_datei.css"> 
  </head>
  <body>
  
    <table width="900" border="4" cellpadding="10" cellspacing="0" bordercolor="#000000" bgcolor="#FFFFFF">
      <tr>
        <td colspan="3" valign="top"><img src="grafiken/logo.jpg" width="124" height="65"> 

        <?php
        
          foreach ($topics as $key => $value)
          {
            $stern = '';
            if ($key == $main)
            {
              $stern = "> ";
            }
            
            print "<a href='$myself?main=$key'>>$stern$value</a>    ";
          }
        ?>
        
        </td>
      </tr>
      <tr>
        <td width="900" colspan="3" valign="top"><?php include("files/$main.php"); ?></td>
      </tr>
      <tr>
        <td height="37" colspan="3" valign="top"><div align="center" valign="middle" id="footer"><b>blablabla</b></div></td>
      </tr>
    </table>
  
  </body>
</html>
Das ganze läuft so:

Du hast ein Array, in dem deine Menüpunkte stehen, danach wird überprüft, ob per GET einer der Menüeinträge übergeben wurde. In einer foreach-Schleife wird das Array dann durchlaufen und in jedem Durchgang ein Menüpunkt ausgegeben. Wenn der aktuelle Menüpunkt des Arrays mit dem GET-Parameter überinstimmt, wird in diesem Fall die Variable $stern gesetzt, so dass der Menüpunkt, der per GET übergeben wurde, optisch von den anderen abgehoben ist.

Am Ende wird dann zusätzlich per include die zum übergebenen GET-Parameter passende php-Datei aufgerufen.


Damit das ganze noch ein Untermenü bekommt, könntest du mit einem multidimensionalen Array arbeiten, das bspw. so aussieht:
PHP:
$topic = array(

  "hauptmenu1" => array("untermenu1.1" => "Untermenu1.1",
                        "untermenu1.2" => "Untermenu1.2",
                        "untermenu1.3" => "Untermenu1.3",
  ),

  "hauptmenu2" => array("untermenu2.1" => "Untermenu2.1",
                        "untermenu2.2" => "Untermenu2.2",
                        "untermenu2.3" => "Untermenu2.3",
  ),
);
Und dann müsstest du, wenn der GET-Parameter des entsprechenden Hauptmenüs gesetzt ist, mit einer zweiten foreach-Schleife das Array für das entsprechende Untermenü durchlaufen.


Ich hoffe, das ist halbwegs verständlich :D


edit: ich seh gerade, ich hatte hier selbst mal das gleiche Problem: https://www.computerbase.de/forum/threads/php-menue-mit-untermenue-dynamisch-erzeugen.371243/ ;)

Vielleicht hilft das auch, sonst muss ich das morgen nochmal übersichtlicher darstellen.
 
Zuletzt bearbeitet:
SUper, Vielen Dank! Werde mir den Code morgen dann zu Gemüte führen und es versuchen, falls was unklar sein sollte melde ich mich :)
 
Zurück
Oben