kostenloser Webspace werbefrei: lima-city


Klappmenü nur mit PHP

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    highborn

    highborn hat kostenlosen Webspace.

    hallo,

    ich würde gern ein klappmenü bauen. ich hab jetzt viel geschaut und die meisten brauchen irgendwie javascript oder laufen nicht in jedem browser.

    jetzt hab ich mir überlegt das mit php zu machen.

    also wenn ich auf einen link klicke, dann soll er mir die seite neu aufmachen nur das er mir dann z.b. eine variable mit dem inhalt anzeigt. ist das irgendwie möglich?

    also ich denke mit diesem get und einem if wäre es doch möglich?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. ich würde gern ein klappmenü bauen

    Geht nur mit JS oder CSS,
    link klicke, dann soll er mir die seite neu aufmachen nur das er mir dann z.b. eine variable mit dem inhalt anzeigt

    Was hat den das damit zutun? Jetzt bin ich verwirrt.
    also ich denke mit diesem get und einem if wäre es doch möglich

    und nochmal verwirrt???

    Beschreibe mal genau was du meinst. Oder zeige uns einen Screenshot bzw. ein Beispiel

    lg matthimeo
  4. Du hast richtig erkannt: Dann musst du die Seite komplett neu laden.
    Und du wirst auf CSS zurückgreifen müssen. Dann ist das ganze tatsächlich möglich. Aber ob das so eine elgante Lösung ist? Es kommt auf den Anwendungsbereich an. Wenn du eine schnelle Navigation haben willst.. naja.

    Außerdem musst du dir klar machen, dass CSS manchmal eine ganz schöne Frickelei ist. Da gibt es auch Standards usw die man beachten sollte und man muss auf ein paar Hacks zurückgreifen, wenn man es richtig machen will.
    Ich weiß nicht, ob das immernoch so ist, aber der IE bspw. hatte eine Abneigung gegenüber :hover in Elementen, die keine Links waren. :)
  5. ole-reglitzki

    Kostenloser Webspace von ole-reglitzki

    ole-reglitzki hat kostenlosen Webspace.

    Also mit php sollte es leicht zu implementieren sein, aber wie du weißt muss die Seite dann immer neu geladen werden, daher empfehle ich dir eine css- Variante, die sollten in jedem gängigen Browser laufen und brauchen auch kein JScript.

    @adrians: wer IE benutzt, ist selber schuld ';)
    ich habe ein Design, das ohne Browser-Überprüfung auf FF, Safari, Opera richtig dargestellt wird, aber auf IE ist absolut alles falsch...
  6. sonok

    Moderator Kostenloser Webspace von sonok

    sonok hat kostenlosen Webspace.

    So ein allgemeines Kauderwelsch hier :biggrin:

    adrians schrieb:
    Du hast richtig erkannt: Dann musst du die Seite komplett neu laden.


    Ähm, naja, so im allgemeinen Verständnis eines Hovermenüs mit CSS, was der highborn an den Tag legt, ist das nicht richtig erkannt. Er muß nämlich nicht die Seite neu Laden, wenn eine Box im Menü herausklappen soll ...

    Mit dem :hover kann man gewisse Elemente via CSS und ganz ohne JavaScript (oder Neuladen der Seite) einblenden lassen. Sie dazu
    http://de.selfhtml.org/css/layouts/navigationsleisten.htm#modern
    oder einfach mal herumgoogeln ...
  7. Autor dieses Themas

    highborn

    highborn hat kostenlosen Webspace.

    also das mit dem Css gefällt mir nicht, da es einfach zuviele links werden.

    die seite kann gern neu geladen werden.

    doch nur wie mache ich das denn am blödsten?
    es sollt halt immer per klick dann das neue menü aufgehen und ich hab 3 untermenüs:

    themen
    a) politik
    a1) thema1
    a2) thema2
    b) medien
    b1)
    b2)
    praktisches
    a)
    a1)
    a2)
    ....


    nur irgendwie wie mach ich das am besten? weil wenn ich auf themen klicke, dann soll ja erst mal nur politik medien usw. zu sehen sein und wenn ich dann auf "politik" klicke dann soll a1) ; a2) usw. zu sehen sein
  8. du könntest das wie du am anfang schon selber gesagt hast mit get-variabeln und abfragen in php machen.

    If($_GET["themen"]){
    echo "menü teil 2";

    }

    und als link dann
    a href="seite.php?themen=true"

    oder du machst das anders mit menu1=themen

    aber alles in allem wäre das viel zu viel aufwand,warum scheust du dich so vor js? damit geht das alles VIEL einfacher und schneller.
  9. Autor dieses Themas

    highborn

    highborn hat kostenlosen Webspace.

    mit js hatte ich noch wie was zu tun und soweit ich das mitbekommen habe, funktioniert das nicht in jedem browser??



    ich habe hier mal ein bild wie ich es gern hätte, nur hab ich noch mehr "verschachtelungen"

    http://www.traum-projekt.com/forum/attachments/601d1006179705-tree-menue-das-ueberall-funktioniert-webmonkey.gif





    versuch das ganze gerade mit fariablem zu machen, kann mir einer sagen warum das nicht geht:

    am anfang:
    <?php
    
    $test = 'testlinks testlinks';
    
    ?>


    an einer gewissen stelle im script:
    <?php 
    	
    	if($_GET['inc']=="themen")	{echo $test; };  ?>


    Beitrag zuletzt geändert: 24.10.2010 18:14:18 von highborn
  10. Jungs 'n Mädles es ging in der Frage NIE darum das Menue beim "hovern" aufzuklappen.

    Ich hätte da diesen Link für dich:
    http://jeenaparadies.net/weblog/2004/may/php-menue

    Daraus kann man ja folgendes machen:
    http://simuliertes.lima-city.de/papierkorb/php-menue.php

    <?php
    //Menue 1
    $menu_1 = array(
     "aktuell"    => array("Aktuell", "/"),
     "person"     => array("Zur Person", "/person.html"),
     "artikel"    => array("Artikel", "/artikel/"),
     "service"    => array("Service", "/service/"),
     "links"      => array("Links", "/links.html"),
     "impressum"  => array("Impressum", "/impressum.html")
     );
    //Menue 2
    $menu_2 = array(
     "sahjhshz"    => array("shsdf", "/"),
     "shsdfhjdsfj"     => array("Zur Person", "/person.html"),
     "ssghsdgh"    => array("Artikel", "/artikel/"),
     "ssdg"    => array("Service", "/service/"),
     "lsdgs"      => array("Links", "/links.html"),
     "isghssum"  => array("Impressum", "/impressum.html")
     );
    
    
    
    
    function show_submenue($menu_data,$this_id,$current_page="") {
    $navi="";
    if (isset($_GET[$this_id])){
            $navi = "<ul>\n";
             foreach ($menu_data as $key => $value) {
              $navi .= " <li>";
                if($key != $current_page) {
                 $navi .= "<a href='".$value[1]."?".$this_id."'>";
                }
               $navi .= $value[0];
                if($key != $current_page) {
                 $navi .= "</a>";
                }
               $navi .= "</li>\n";
             }
            $navi .= "</ul>";
    }
            
            return $navi;
    }
    
    
    
    ?>
    <html>
    <head>
    </head>
    <body>
    <u>
    <li><a href="#">Startseite</a></li>
    <li><a href="#">bla</a></li>
    <li><a href="?submenue1">Unteremenue 1</a>
    <?php echo  show_submenue($menu_1,"submenue1") ; ?>
    </li>
    <li><a href="#">blup</a></li>
     <li><a href="?submenue2">Unteremenue 2</a>
    <?php echo  show_submenue($menu_2,"submenue2") ; ?>
    </li>
    <li><a href="#">usw</a></li>
    
    </u>
    
    </body>
    </html>


    Edit:
    Der Code klappt natürlich erst einmal nur für eine unterebene.
    Sollten noch in den Untermenues weitere Untermenues folgen müsste man den Code noch ein bisschen umschreiben.
    Aber es ist zumindest ein Ansatz....

    Beitrag zuletzt geändert: 24.10.2010 18:42:00 von simuliertes
  11. Autor dieses Themas

    highborn

    highborn hat kostenlosen Webspace.

    ja eben da hakt es bei mir bei jeder lösung... wie bekomme ich da noch ein untermenü rein... kannst du mir da ein beispiel bitte geben




    // edit

    ich hab versucht ein 3tes array hinzuzufügen...

    dann funktionierts nicht mehr!!!




    kannst du mir evtl nochmal erklären was der da überhaubt macht?
    und dein code ist ein bisschen anderst als der auf der seite wo du mir gepostet hast.

    Beitrag zuletzt geändert: 24.10.2010 21:10:12 von highborn
  12. Mmhh gut, also auch hier nur ein , nicht ganz fehlerfreier Code als Ansatz:
    Die Grundidee wäre das Du in dem Menue array, bei untermenues wiederum ein array einsetzt.
    Dann prüfst Du in der Funktion show_menue ob das ein Array ist.
    Wenn ja kann die Funktion ja einfach wieder sich selber aufrufen.
    Das stichwort dazu wäre rekusion/array rekursiv durchsuchen.
    Hab kurz geguckt aber nichts passendes bei google gefunden.

    http://simuliertes.lima-city.de/papierkorb/php-menue2.php

    <?php
    //Menue 1
    $menu_1 = array(
     "hallo"    => "person.php",
     "person"     => "person.php",
     "artikel"    => "person.php",
     "service"    => "person.php",
     "links"      => "person.php",
     "impressum"  => "person.php",
     );
    //Menue 2
    $menu_2 = array(
     "sahjhshz"    => "person.php",
     "shsdfhjdsfj"  => "person.php",
     "ssghsdgh"    => "person.php",
     "unteruntermenu"  => array(
                  "Links"=> "",
                  "Impressum"=> "/impressum.html"
                  ),
     "lsdgs"      => "person.php",
     "isghssum"  => "person.php",
     );
    
    
    
    
    function show_submenue($menu_data,$this_id) {
    $navi="";
    if (isset($_GET[$this_id])){
            $navi = "<ul>\n";
             foreach ($menu_data as $title => $url) {
              if (is_array($url))
              {
                 $navi .= " <li><a href='?".$this_id."&".$title."'>(".$title.")\n";
                 $navi .= show_submenue($url,$title);
                 $navi .= "</li>\n";
              }else{
              $navi .= " <li><a href='".$url."?".$this_id."'>".$title."</li>\n";}
    
             }
            $navi .= "</ul>";
    }
            
            return $navi;
    }
    
    
    
    ?>
    <html>
    <head>
    </head>
    <body>
    <u>
    <li><a href="#">Startseite</a></li>
    <li><a href="#">bla</a></li>
    <li><a href="?submenue1">Unteremenue 1</a>
    <?php echo  show_submenue($menu_1,"submenue1") ; ?>
    </li>
    <li><a href="#">blup</a></li>
     <li><a href="?submenue2">Unteremenue 2</a>
    <?php echo  show_submenue($menu_2,"submenue2") ; ?>
    </li>
    <li><a href="#">usw</a></li>
    
    </u>
    
    </body>
    </html>


    Eine Idee , wäre noch das Du nach php-scripten suchst die automatisch einen verzeichnisbaum aller Dateien und unterordner anlegen und umschreibst. Der Ansatz ist ähnlich.
    Wenn Du DIr die ganze Mühe ersparen willst nimm meinen ersten Code und schreib die untermenues in die php-dateien die sich in dem entsprechenden Zweig befinden :wink:
  13. Autor dieses Themas

    highborn

    highborn hat kostenlosen Webspace.

    ich danke dir für deine mühe...

    doch irgendwie verstehe ich nur bahnhof.

    ich komm zwar damit klar was du meinst mit dem zweiten array, dadurch das ich deinen code sehe...

    aber nicht was du meisnt mit code kopieren usw?





    also ich versuche das gerade zu analysieren.

    aber irgendwie werde ich aus paar sachen nicht schlau

    function show_submenue($menu_data,$this_id)
    foreach ($menu_data as $title => $url) {

    und die variable $menu_data? irgendwie ist die nirgends deklariert... ich steh vollkommen auf dem schlauch

    Beitrag zuletzt geändert: 24.10.2010 22:12:19 von highborn
  14. Verstehe.
    Also:
    Normalerweise wäre ein solches menue in reinem html:

    datei1.htm
    <u>
    <li><a href="#">Startseite</a></li>
    <li><a href="datei2.htm">untermenue1</a></li>
    </u>


    datei2.htm
    <u>
    <li><a href="#">Startseite</a></li>
    <li><a href="datei2.htm">untermenue1</a>
      <ul>
        <li><a href="sonstwqo.htm">blabla</a></li> 
        <li><a href="datei3.htm">untermenue2</a></li>
      </ul>
    </li>
    </u>



    datei3.htm
    <u>
    <li><a href="#">Startseite</a></li>
    <li><a href="datei2.htm">untermenue1</a>
      <ul>
        <li><a href="sonstwqo.htm">blabla</a></li> 
           <li><a href="datei3.htm">untermenue2</a>
                <ul>
                      <li><a href="sodgjgwqo.htm">blabla</a></li> 
                       <li><a href="usw.htm">usw</a></li>
                </ul>
            </li>
      </ul>
    </li>
    </u>



    Frage ist erst einmal ob Du das nicht gleich so machst und auf php verzichtest.

    Mit meinem zuerst geposteten code könntest du jedenfalls immer jeweils in datei1,datei2 und datei3 , die jeweiligen untermnues "aufklappbar" für machen.
    Entscheident wäre ja nur das Du die arrays umschreibst und jeweils
    <?php echo show_submenue($menu_2,"submenue2") ; ?>
    ..einfügst (natürlich mit den richtigen bezeichnungen)
    Oder Du durchsuchst noch das Netz nach codes oder probierst aus oder hast glück & es postet hier jm. einen fertigen code


    EDIT

    highborn schrieb:
    aber irgendwie werde ich aus paar sachen nicht schlau

    function show_submenue($menu_data,$this_id)
    foreach ($menu_data as $title => $url) {

    und die variable $menu_data? irgendwie ist die nirgends deklariert... ich steh vollkommen auf dem schlauch


    über funktionen

    foreach

    Wenn Du show_submenue aufrufst, ist jedes array das als erstes in der klammer steht automatisch in $menu_data.
    Tja, ich weiss auch nicht wie ich das besser erklärten soll :-P


    Beitrag zuletzt geändert: 24.10.2010 22:26:51 von simuliertes
  15. PHP ist gut, aber nicht immer die richtige Wahl, wie z.B. wenn es um Menüs geht. Viel zu viel Code für ein läppisches Menü, das auch noch jedesmal neu gelden werden muss (Serverlast).

    Ein Menü in CSS zu erstellen ist zwar nicht weniger aufwendig aber viel schneller und nicht so Recourcenhungrig.
    Wenn die CSS ausgelagert wird, wird sie in der Regel einmal geladen und bleibt solange im Browsecache. PHP muss jedesmal wieder durch den Parser und dynamik ist wahrlich was anderes.

    Saubere CSS-Menüs laufen auch im IE.
    Schau Dir Suckerfish, Son of Suckerfish oder Superfish an, die haben zwar schöne JS Effekte (langsames aufsliden), laufen aber auch ohne.

    Gruß Tom

    Beitrag zuletzt geändert: 24.10.2010 22:29:32 von tom-moeller
  16. tom-moeller schrieb:
    Saubere CSS-Menüs laufen auch im IE.
    Schau Dir Suckerfish oder Superfish an, die haben zwar schöne JS Effekte (langsames aufsliden), laufen aber auch ohne.


    Ich schweife mal kurz vom Haupt-thema ab:
    TOm, ich habe noch ie5.0 (nutze ihn aber nicht).
    Bisher habe ich für diesen speziellen Browser (bei ausgeschalteten javascript) tatsächlich noch keine funktionierende Lösung in css gefunden.
    Wobei ich aber auch verstehe das man da entzwischen wirklich sagen kann: "pech gehabt".
    Insofern wäre "bei allen browsern " nicht korrekt als antwort :biggrin:
  17. Autor dieses Themas

    highborn

    highborn hat kostenlosen Webspace.

    und wenn javascript ausgeschaltest ist, dann geht garnichts. richtig?
  18. highborn schrieb:
    und wenn javascript ausgeschaltest ist, dann geht garnichts. richtig?

    Ja (aber)
    Es gibt Lösungen Die bei ie5 halt einfach das Menue sofort aufgeklappt zeigen.
    Abgesehen davon:
    In ie5 javascript deaktiviert zu bekommen ist nur mit informatik-studium möglich (ok ich übertreibe).
    Abgesehen davon ist ie5 sowas von veraltet, das man eigentlich wirklich damit leben kann, diese Browser dann zu ignorieren.

    Mal ein Beispiel:
    http://pfirsichmelba.de/artikel-scripts/dropdown/horizontal.html

    So schauts in ie5 (mit deaktiviertem js ) aus:
    http://simuliertes.lima-city.de/papierkorb/dickerfisch-ie5.jpg
    -Kein hovern möglich, das Untermenue zB von "pfirsichmelba" ist unerreichbar.
    Zum Artikel:
    http://pfirsichmelba.de/artikel-scripts/suckerfish-barrierefrei.html


    Aber ich würde auch sagen:
    Hör auf Tom und such ein gutes css(/+js) menue statt Dich mit php bei dem Thema abzuquälen.

    Ideal barrierefrei, wäre natürlich ein Menue das sowohl aus php,css und js besteht.
    Funktioniert css nicht, geht js, funktioniert js nicht geht es per php.

    edit:
    nochmal ganz deutlich:
    ich bezihe mich gerade nur auf ie 5.
    Soweit ich weiß gibt es ab ie-version 5.5 Lösungen mit reinem css

    Beitrag zuletzt geändert: 24.10.2010 23:13:28 von simuliertes
  19. highborn schrieb:
    und wenn javascript ausgeschaltest ist, dann geht garnichts. richtig?


    Nein, Die von mir genennten Dropdownmenüs laufen auch ohne javascript. Also reines CSS.
    Ob sie noch im IE 5.5 laufen kann ich nicht sagen, da ich diesen Browser sein einem gefühlten Jahrhundert nicht mehr benutzt habe.

    Selbst den IE6 berücksichtige ich bei meinen Projekten nicht mehr.
    Bei www.bluevelvet-style.com habe ich Suckefish eingesetzt und der Hover "News" funktioniert auch ohne JS.

    Gruß Tom

    Beitrag zuletzt geändert: 24.10.2010 23:12:20 von tom-moeller
  20. Autor dieses Themas

    highborn

    highborn hat kostenlosen Webspace.

    deine seite gefällt mir richtig gut tom! fetten respekt!


    jetzt hab ich grad noch eine idee.

    und zwar möchte ich wenn ich einen link drücke dem array etwas hinzufügen

    <?php
      array_push($blumen,"Efeu","Kornblume");
      ?>


    damit meine idee funktioniert muss ich z.bl dem "Efau" einen namen geben. ich habe das so gemacht

    <?php 
        
        if($_GET['inc']=="themen")    { array_push($themenlinks,"_13politik"=>"politkuntermenue4","_14politik"=>"politikuntermenue5"); }  ?>


    doch da bringt er mir fehler in der zeile.
    "
    Parse error: syntax error, unexpected T_DOUBLE_ARROW in *******/navigation_php/naviphp.php on line 29 "
  21. if($_GET['inc']=="themen")
    { $themenlinks["_13politik"] = "politkuntermenue4";
      $themenlinks["_14politik"] = "politikuntermenue5"; }
     ?>


    array_push ist in den meisten fällen gar nicht nötig.
    Willst Du ein numerisches array um einen Wert erweitern, schreib:

    $deinarray[] = "der neue Wert"


  22. 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!