Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 11.12.2004, 22:41   #1
TP-Veteran
 
Benutzerbild von Terry
 
Registriert seit: Mar 2004
Terry hilft, wo's gehtTerry hilft, wo's gehtTerry hilft, wo's geht

Verschachtelte Listennavigation


So - habe ein wenig getüftelt - komme aber mal wieder nicht weiter. Wäre nett, wenn ihr mir noch ein wenig auf die Sprünge helfen könntet.

Ausgehend von Dennis' Listenscript hab ichs jetzt verlinkt und so umgeschrieben, dass da eine semantisch korrekt verschachtelte Liste rauskommt (das Ganze wird noch zwischen <ul> und </ul> inkludiert, so dass die äußeren hier fehlen - nicht wundern):
PHP-Code:
<?
// Hier wird die Navigation drin gespeichert!
$navigation = array
(
"punkt1" => array
           (
             
"upunkt1a" => "punkt1-1",
             
"upunkt1b" => "punkt1-2"
           
),

"punkt2" => array
            (
             
"upunkt2a" => "punkt2-1",
             
"upunkt2b"   => "punkt2-2"
            
),

"punkt3" => "punkt3"
);

$selection $_GET['section']; //ist so natürlich Quatsch - aber wie gehts richtig?


function draw_navi$array$selection )
{
foreach( 
$array as $name => $sub )
{
  echo 
"<li>";
  if( 
is_Array$sub ) )
  {
   echo 
"<a href=\"index.php?section=$name\">$name</a>";

   if( 
$selection == $name ):
   echo 
"<ul>";
   foreach( 
$sub as $sname => $ssub )
   {
    echo 
"<li><a href=\"index.php?section=$ssub\">$sname</a></li>"
   }
   echo 
"</ul>";
   endif;
  }else
   echo 
"<a href=\"index.php?section=$name\">$name</a>";
   echo 
"</li>";
}
}

draw_navi$navigation$selection );

?>
So - bleiben zwei Fragen:

- Was schreibe ich hier hin: $selection = $_GET['section'];
Wie also kann ich dem Server klarmachen, dass dort immer der 1. Wert des Hauptarrays hinsoll?

- tja, und wie deklarier ich jetzt noch den jeweils aktiven Menüpunkt mit einer extra-Klasse? Für eine einfache Liste hab ich das ja schon - bekomme das aber nicht in diese verschachtelte reingebaut...

Wär nett, wenn mir noch mal jemand weiterhelfen könnte...
__________________
Grüße, Terry
Terry ist offline   Mit Zitat antworten


Alt 11.12.2004, 22:47   #2
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
Zitat:
Was schreibe ich hier hin: $selection = $_GET['section'];
Ist doch richtig Verschönern lässt sich das mit

$selection = isset( $_GET['section'] ) ? $_GET['section'] : 'home';

Zitat:
Wie also kann ich dem Server klarmachen, dass dort immer der 1. Wert des Hauptarrays hinsoll?
Der soll da gar nicht hin
Du wolltest es ja so haben, dass nur die aktuelle Kathegorie offengeklappt wird. Mit $selection teilst du der Funktion also lediglich mit, welche Kathegorie der Navigation er öffnen soll!
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Dennis The Menace ist offline   Mit Zitat antworten
Alt 11.12.2004, 22:51   #3
TP-Veteran
 
Benutzerbild von Terry
 
Registriert seit: Mar 2004
Terry hilft, wo's gehtTerry hilft, wo's gehtTerry hilft, wo's geht
Ja, aber wenn ein Unterpunkt aufgerufen wird, dann erscheint der nicht mehr in der Navigation.

Der soll aber bleiben. Also:

punkt1
punkt2
unterpunkt2a
unterpunkt2b
punkt3

soll da auch dann stehen, wenn Unterpunkt 2a angeklickt wurde.
__________________
Grüße, Terry
Terry ist offline   Mit Zitat antworten
Alt 11.12.2004, 22:57   #4
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
du sollst den unterpunkt ja auch mit index.php?section=hauptgruppe&untergruppe=trallala aufrufen
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Dennis The Menace ist offline   Mit Zitat antworten
Alt 11.12.2004, 23:03   #5
TP-Veteran
 
Benutzerbild von Terry
 
Registriert seit: Mar 2004
Terry hilft, wo's gehtTerry hilft, wo's gehtTerry hilft, wo's geht
Gut - geht jetzt (hatte ich vorhin auch schon mal probiert- aber da war dann noch ein anderer Fehler drin).
Vielen Dank Dir schon mal, Dennis.

Bleibt also noch das Markieren des aktiven Punktes - wie geh ich das jetzt noch an?
__________________
Grüße, Terry
Terry ist offline   Mit Zitat antworten
Alt 11.12.2004, 23:22   #6
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
per css?

ul li ul{
background-color: #f00000;
}

Oder du gibst dem Ding gleich nen Namen^^
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Dennis The Menace ist offline   Mit Zitat antworten
Alt 11.12.2004, 23:29   #7
TP-Veteran
 
Benutzerbild von Terry
 
Registriert seit: Mar 2004
Terry hilft, wo's gehtTerry hilft, wo's gehtTerry hilft, wo's geht
Mit ul ul li a kannst Du nur alle Unterpunkte gleichzeitig ansprechen - aber nicht den aktiven Punkt, auf dem Du Dich gerade befindest.

Idealerweise möchte ich folgendes:

Der aktive Punkt ist nicht klickbar, sondern ein einfacher Listenpunkt. Außerdem eben mit einer Klasse (class="active") versehen und mit title...
Müßte also schon per PHP-Script extra definiert werden.

Mit einer einfachen Liste geht es z.B. so:
PHP-Code:
$navigation= array (
    "punkt1" =>"Punkt 1",
    "punkt2" =>"Punkt 2",
    "punkt3" =>"Punkt 3"
);



while(list($key, $val) = each($navigation)) {
    if ($_GET['section'] == $key) { ?>
<li class="active" title="Hier bist Du gerade."><?php
    
echo $val
?>
</li>
<?php
    
} else {
?><li><a href="<?php
    
echo 'index.php?section='.$key .'">'$val
?>
</a></li><?php
    
}
}
Nur wie wendet man sowas jetzt auf die verschachtelte Liste an?
__________________
Grüße, Terry
Terry ist offline   Mit Zitat antworten
Alt 12.12.2004, 15:47   #8
TP-Veteran
 
Benutzerbild von Terry
 
Registriert seit: Mar 2004
Terry hilft, wo's gehtTerry hilft, wo's gehtTerry hilft, wo's geht
Hmm...

ist das tatsächlich so schwierig oder stehe ich nur auf dem Schlauch?
__________________
Grüße, Terry
Terry ist offline   Mit Zitat antworten
Alt 12.12.2004, 16:45   #9
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
Du stehst vor dem Schau
Welche Variable ist bei dir denn für die Untergruppe zuständig?
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Dennis The Menace ist offline   Mit Zitat antworten
Alt 12.12.2004, 16:59   #10
TP-Veteran
 
Benutzerbild von Terry
 
Registriert seit: Mar 2004
Terry hilft, wo's gehtTerry hilft, wo's gehtTerry hilft, wo's geht
Die heißt dann art - wäre also $_GET['art'].

Nur ist die aktive Seite ja mal $_GET['section'] und falls vorhanden, dann $_GET['art'].

Hmm.. müßte man also abfragen, ob $_GET['art'] vorhanden ist.

Sowas in der Art?:
PHP-Code:
if ( isset ( $_GET['art'] ) )
  {
   echo 
"<li class="active" title="hier bist Du gerade">$sname</li>";
  }
elseif (isset ( 
$_GET['section'] ) )
  {
   echo 
"<li class="active" title="hier bist Du gerade">$name</li>";
  }
else ... 
//sollte ja eigentlich nicht vorkommen - was macht man da? 
Wo kommt das dann hin? - wie muß ich sowas einschachteln?
__________________
Grüße, Terry
Terry ist offline   Mit Zitat antworten
Alt 12.12.2004, 17:04   #11
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
In der inneren Foreach Schleife - halt dort - wo die Untergruppe angezeigt wird!
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Dennis The Menace ist offline   Mit Zitat antworten
Alt 12.12.2004, 17:15   #12
TP-Veteran
 
Benutzerbild von Terry
 
Registriert seit: Mar 2004
Terry hilft, wo's gehtTerry hilft, wo's gehtTerry hilft, wo's geht
So - jetzt sieht es so aus:

PHP-Code:
<?
// Hier wird die Navigation drin gespeichert!
$navigation = array
(
"punkt1" => array
           (
             
"upunkt1a" => "upunkt1a",
             
"upunkt1b" => "upunkt1b"
           
),

"punkt2" => array
            (
             
"upunkt2a" => "punkt2-1",
             
"upunkt2b"   => "punkt2-2"
            
),

"punkt3" => "punkt3"
);

$selection = isset( $_GET['section'] ) ? $_GET['section'] : 'home';


function 
draw_navi$array$selection )
{
foreach( 
$array as $name => $sub )
{
  echo 
"<li>";
  if( 
is_Array$sub ) )
  {
   echo 
"<a href=\"index.php?section=$name\">$name</a>";

   if( 
$selection == $name ):
   echo 
"<ul>";
   foreach( 
$sub as $sname => $ssub )
    if ( isset ( 
$_GET['art'] ) )
      {
        echo 
"<li class=\"active\" title=\"hier bist Du gerade\">$sname</li>";
      }
/*    elseif (isset ( $_GET['section'] ) )
      {
        echo "<li class=\"active\" title=\"hier bist Du gerade\">$name</li>";
      }*/
    
else 
   {
    echo 
"<li><a href=\"index.php?section=$name&art=$ssub\">$sname</a></li>"
   }
   echo 
"</ul>";
   endif;
  }else
   echo 
"<a href=\"index.php?section=$name\">$name</a>";
   echo 
"</li>";
}
}

draw_navi$navigation$selection );

?>
Dabei werden leider beide Unterpunkte gleichzeitig ohne Link und mit class und title versehen. Und das auskommentierte geht an der Stelle gar nicht - da sonst die Unterpunkte nicht erscheinen.

Hmm.. wie jetzt weiter?
__________________
Grüße, Terry
Terry ist offline   Mit Zitat antworten
Alt 12.12.2004, 17:23   #13
TP-Specialist
 
Benutzerbild von Dennis The Menace
 
Registriert seit: Nov 2004
Ort: Ich komme aus dem Zauberwald
Dennis The Menace bringt sich richtig einDennis The Menace bringt sich richtig ein
Zitat:
isset ( $_GET['art'] )
http://php.net/isset

Das wird deine Frage beantworten! Isset überprüft nur, ob die Variable existiert. Das trifft ja keinerlei Aussage darüber, welchen Link er jetzt "highlighten" soll!

du brauchst ja wenn schon sowas alla

isset( $_GET["art"] ) && $_GET["art"] == aktuellePositionInDerNavigation
__________________
Zwei Dinge sind Unbestreitbar:
  • In einem Land, in dem Amerika Krieg führt, herrscht nachher Demokratie.
  • Die Erde ist eine Scheibe!
Aktuelle Abendlektüre: Stephen King, Peter Strauch: Das schwarze Haus (Black House, 2001)
Aktuelle Bewertung: Abgesehen davon, dass der Roman mal wieder demonstriert, dass der Author geistesgestört ist, sehr träge; wenig Spannung; schlechter Erzählstil. King halt^^!
Dennis The Menace ist offline   Mit Zitat antworten
Alt 12.12.2004, 17:32   #14
TP-Veteran
 
Benutzerbild von Terry
 
Registriert seit: Mar 2004
Terry hilft, wo's gehtTerry hilft, wo's gehtTerry hilft, wo's geht
Ja, das leuchtet ein.

Ich hab jetzt sowas probiert, aber das geht auch nicht:

PHP-Code:
if (isset( $_GET["art"] ) && $_GET["art"] == $sname
Wie kann ich die aktuelle Seite definieren?
__________________
Grüße, Terry
Terry ist offline   Mit Zitat antworten
Alt 12.12.2004, 17:44   #15
Guest
 
Registriert seit: Aug 2002
Strogij hilft, wo's gehtStrogij hilft, wo's geht
Ich störe zwar ungern, aber das ist in meinen Augen ein Spaghetti Code. Der ist kompliziert und nicht wiederverwendbar. Weshalb hat man denn OOP erfunden? Eine kleine Klasse mit Methoden für das Updaten und Anlegen so einer Liste inkl. der zusätzlichen Infos und Indexen aus dezimalen Zahlen, womit man auch besser rechnen kann wäre viel übersichtlicher und würde sogar einen ungeduldigen Coder befriedigen. Bei jeder kleinen Änderung muss in diesem Fall damit gerechnet werden, dass die ganze Arbeit umsonst war und man die Hälfte umschreiben muss. Also nei, so macht man sich nur eine zusätzliche Arbeit.
Strogij ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Verschachtelte Listennavigation Verschachtelte Listennavigation
« [PHP] Umlaute in SimpleXML | verlorene variable »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Verschachtelte Vorlagen - <body> ändern nochbunterstift Dreamweaver 0 18.06.2004 23:39