PHP Navi Aktivzustand Probleme!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Navi Aktivzustand Probleme!

    Hallo liebe Mitglieder,
    nun habe ich viel gegoogelt und leider keine Hilfe bekommen und hoffe hier geholfen zu werden. Bin ganz neu im Bereich PHP und habe eine Seite home.php worin ein [COLOR=Red]<?php include("navi.php")?>[/COLOR] eingebaut habe.
    Alles funzt super, nur möchte ich, wenn die Seite aufgerufen wird z.B. Vorwort, dass der Link im Navibereich rot bleibt. Beim Hover zeigt es rot an, aber so wie man auf der Seite ist, verschwindet es wieder. So sieht meine navi.php Seite aus:

    PHP-Code:
    <?php

    echo'<a href="home.php">&bull; Home</a><br>';
    echo
    '--------------------------------------------<br><br>';

    echo
    '<a href="vorwort.php">&bull; Vorwort</a><br>';
    echo
    '--------------------------------------------<br><br>';

    echo
    '<a href="klassische_massagen.php">&bull; Klassische Massagen</a><br>';
    echo
    '--------------------------------------------<br><br>';

    echo
    '<a href="ayurvedische_massagen.php">&bull; Ayurvedische Massagen</a><br>';
    echo
    '--------------------------------------------<br><br>';

    echo
    '<a href="Wellness_Massagen.php">&bull; Wellness Massagen</a><br>';
    echo
    '--------------------------------------------<br><br>';

    echo
    '<a href="Massagen_am_Arbeitsplatz.php">&bull; Massagen am Arbeitsplatz</a><br>';
    echo
    '--------------------------------------------<br><br>';

    echo
    '<a href="Ulrike_Gibbert">&bull; Kurzprotait Ulrike Gibbert</a><br>';
    echo
    '--------------------------------------------<br><br>';

    echo
    '<a href="Preise.php">&bull; Preise</a><br>';
    echo
    '--------------------------------------------<br><br>';

    echo
    '<a href="Kontakt">&bull; Kontakt</a><br>';
    echo
    '--------------------------------------------<br><br>';


    ?>
    Hoffe Ihr könnt mir helfen!!!

    Vielen lieben Dank!!!
    Zuletzt geändert von admin; 31.08.2011, 14:37.

  • #2
    Hallo,

    nur mit CSS alleine ist das nicht möglich. Um das zu erreichen, musst du ermitteln, welche Seite geladen werden soll und welcher Navigationspunkt dazu gehört. Diesen Punkt musst du dann mit PHP so auszeichnen, dass er als aktiv erscheint, z. B. über class="active" oder aber gar nicht als Link, sondern z. B. als strong-Element, da man ihn ja ohnehin nicht mehr anzuklicken braucht.

    Ich hab auf Home page ein Beispiel hinterlegt, wie man es machen könnte. Dort wird zunächst eine hierarchische Sitemap definiert und dann gibt es zwei Funktionen – eine zum Erzeugen der Navigation und eine zum ermitteln des richtigen Seitentitels. Vielleicht hilft dir das als Anregung.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Ohje, geht das nicht irgendwie einfacher???

      Das ist der Link zur Seite, was in Aufbau ist. Bisher hat das mein Programmierer gemacht, aber der hat Urlaub und nun hab ich da die Probleme :-(

      Home

      Danke!!!
      Zuletzt geändert von AmicaNoctis; 31.08.2011, 13:34. Grund: Beiträge zusammengeführt

      Kommentar


      • #4
        Klar, geht auch. Frag $_SERVER["REQUEST_URI"] ab, und überprüfe für jeden Navigationspunkt, ob die URI passt. Da kannst du per Fallunterscheidung (if…else) oder ternärem Operator (…?…:…) festlegen, wie der Navigationspunkt zusammengebaut werden soll.

        Das ist zwar dann nur eine Ebene und damit sind keine hierarchischen Menüs möglich, aber es ist etwas einfacher.
        Zuletzt geändert von AmicaNoctis; 31.08.2011, 13:34.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Danke für deine Hilfe, nur wenn ich wüsste wie das geht bin total neu auf dem Gebiet

          Kommentar


          • #6
            Wenn du es lernen willst, musst du da durch. Wie du vorgehen musst, weißt du ja jetzt, also kannst du ja etwas herumexperimentieren und im Handbuch lesen. Fertige Lösungen gibt es hier nicht, nur Hilfe zur Selbsthilfe. Ansonsten musst du halt warten, bis dein Programmierer frisch erholt zurückkehrt.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Das ist mir schon klar und natürlich möchte ich das auch selber machen und nichts fertiges vor die Nase bekommen, nur hilft es mir nicht wirklich weiter, wenn ich nicht mal weiß wo ich das einsetzen muss :-(

              Dennoch vielen Dank!!!

              Kommentar


              • #8
                Zitat von mellajoon Beitrag anzeigen
                wenn ich nicht mal weiß wo ich das einsetzen muss
                Wenn du deine Fragen etwas konkretisieren kannst, können wir dir vielleicht helfen. Was meinst du z. B. genau mit dem obigen Satz? Welche Kenntnisse hast du bereits?
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Vielen Dank für deine Mühe und das du helfen möchtest

                  Okey, ich versuche es noch mal zu beschreiben

                  Mein Problem ist, dass ich bisher nur sehr einfach PHP bearbeitet habe. Include und echo, so wie ich es oben gepostet habe. Nun habe ich auf eine separate Datei (navi.php) die Navi eingebaut (was oben auch zu sehen ist). In CSS habe ich die Farben, Größe usw festgelegt, aber wenn die Seite auf der entsprechenden Seite ist, ist der Link nicht mehr rot (also im aktivstzustand) und nun würde ich gerne wissen, ob man auf eine einfache Weise ohne großen Programmierung mit if else usw. ein Befehl in CSS oder in der navi.php einfügen kann.

                  Hoffe ich konnte es einigermaßen gut erklären

                  Kommentar


                  • #10
                    Okay, darauf kann ich dir eine klare Antwort geben: Nein. Nur mit include und echo ist da nichts zu machen und es geht nur mit if und else und sowas.

                    Die gute Nachricht: if und else sind nicht schwer zu erlernen. Das Kapitel Sprachreferenz im Handbuch sollte für diese Aufgabe locker reichen.
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Wie schade..., dann werde ich mich da mal schlau machen. Vielen lieben Dank!

                      Kommentar


                      • #12
                        Wie wärs, wenn du die einzelnen Links in einem verschachtelten Array speichertest und das dann per foreach ausgäbest?
                        Spart Platz (ist also performanter), ist leichter zu warten (weil der Code nicht redundant gespeichert wird), spart außerdem Tipparbeit und ist übersichtlicher. So sähe das dann aus (mit der Lösung deines eigentlichen Problems, also dass auf der aktuellen Seite deren Link rot bleibt):
                        PHP-Code:
                        <?php
                        $menu 
                        = array (
                          array(
                        "index","Home"),
                          array(
                        "vorwort","Vorwort"),
                        // und so weiter; immer array("Dateiname ohne .php","Beschriftung")
                        )
                        /*
                        Noch ein paar Tipps:
                        - Da alle Dateien auf .php enden (bei "Ulrike_Gibbert" und "Kontakt" hast du das offenbar vergessen,
                          denn diese Links geben nur einen 404 Error),
                          kann man das hier weglassen und in die foreach-Schleife einbauen
                        - Die Startseite sollte immer index.dateinamensendung (hier also index.php) heißen,
                          damit sie vom Browser aufgerufen wird, wenn dieser keine Zieldatei angibt
                        - Bei einem Unix-Server (auf welchem deine Seite höchstwahrscheinlich läuft),
                          wird Großschreibung bei Dateinamen beachtet, d.h. Index.php != index.php. 
                          Daher sollte man sich angewöhnen, Dateinamen immer kleinzuschreiben. Folgendes wird bei Unix-Servern nicht funktionieren: 
                            Dateiname: ulrike_gibbert.php
                            HTML-Link: <a href="Ulrike_Gibbert.php">Kurzportait Ulrike Gibbert</a>
                        - &bull; ist für Listenzeichen im laufenden Text gedacht. Für Auflistungen gibt es ul und li
                        So, jetzt weiter:
                        */
                        echo "<ul>";
                        foreach (
                        $menu as $element) {
                          if (
                        $element[0]."php" == $_SERVER['PHP_SELF']) { // Wenn Link gleich aktuelle Seite
                            
                        $add " style=\"color:red\""// oder per CSS-Klasse
                          
                        } else { // Damit es keine Notice' gibt
                            
                        $add "";
                          }
                          echo 
                        "<li><a href=\"$element[0].php\"$add>$element[1]</a></li>\n";
                        }
                        echo 
                        "</ul>";
                        ?>
                        Ich habe den Code jetzt nicht getestet, kann sein dass er noch fehlerhaft ist.
                        Zuletzt geändert von Malachite; 31.08.2011, 18:56.

                        Kommentar


                        • #13
                          dann doch gleich so:

                          array('vorwort' => 'Vorwort', ...);

                          Auf den ersten Blick fehlt noch mindestens ein Punkt. Aber ansonsten gefällt mir der Ansatz gut (ohne das Problem gelesen zu haben) .

                          Kommentar


                          • #14
                            Zitat von TobiaZ Beitrag anzeigen
                            dann doch gleich so:

                            array('vorwort' => 'Vorwort', ...);
                            Und wie willst du dann den Dateinamen rausfinden ? Und wozu braucht man eigentlich assoziative Arrays, wenn man sie nur mit foreach-Schleifen behandeln will?

                            Kommentar


                            • #15
                              na, der dateiname steckt genauso wie bei dir im "vorwort".

                              und die assoziativen arrays machen auch die Arbeit mit den foreach-Schleifen einfacher...

                              Kommentar

                              Lädt...
                              X