Nocheinmal include !?

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

  • Nocheinmal include !?

    So,ich habe da ein Problemchen und wollte mal wissen ob das zu lösen ist!

    Ich hatte die Idee in alle meine Dateien (alles PHP)
    einen Header (Navleiste) per include einzubauen.
    Ich habe ein Verzeichnis erstellt "include" mit der datei
    header.php
    Die Datei header.php hat Nav Grafiken in wieder einem andern Verzeichnis: ../menu/
    Im Stammverzeichnis bind ich in der index.php diesen header ein : <?php include("./include/header.php") ?>
    Der Header zeigt die Grafiken an. So weit so gut, aber wenn ich auf diesen Header aus einem Unterverzeichnis zugreife z.B. sport/sport.php und dort dann den Header mit
    <?php include("../include/header.php") ?> einbinde wird zwar der Header gefunden aber die Grafiken nicht.
    Wenn der Header natürlich immer dort ausgeführt wird wo er eingebunden ist ist das ja logisch, aber warum funzt das dann bei der index Datei, ist doch das selbe?


    So genug erzählt !

  • #2
    Kann es sein das man nur ein Verzeichnis aufwärt gehen darf?
    Dann funktioniert es erstaunlicherweise.
    Bringt mich aber auch nicht weiter weil ich ja dann in jedem ersten Unterorden die einzubindene Datei haben müßte.

    Vielleicht fällt ja jemandem was ein. Ich bin eher ein kleiner Anfänger!

    Kommentar


    • #3
      Das Thema "include-Dateien" dürfte doch wohl komplexer sein

      Also, Du musst Dir das so vostellen. Der Preprozessor (PHP) baut zuerst eine grosse PHP-Datei zusammen, aus der eigentlichen Datei und den Headern. Danach wird alles zusammen ausgeführt.

      Es ist auch klar, dass er die Dateien nicht findet, er sucht nämlich im aktuellen Verzeichnis. In Deinem Beispiel sucht er im Verzeichnis "sport" nach den Bildern für die Navigation.

      Du kannst Dir aber damit abhelfen. Du verwendest für die Include-Dateien einen Parameter (z.B. $dir), in der Datei header.php stellst Du dann den Pfad zu den Bildern die Variable $dir voran. Sieht dann so aus:

      <img src="<?=$dir;?>bild1.jpg">

      Mit
      <?php include("header.php&dir=../"); ?>
      kannst Du dann aus jedem Verzeichnis den Header inkludieren. Die zweite Variante ist, dass du absolute Pfade als img src verwendest!

      Hoffe, geholfen zu haben,
      So long,
      Rider99
      ________________________
      Fish, chips, cup o´ tea, bad food, worse weather, Mary-fucking-Poppins London!


      __......~~~Take a look at www.warpcanteen.com!!!~~~......___

      Kommentar


      • #4
        Danke für diee Anwort,

        ich müßte wohl mein Kozept ein bißchen umstellen,
        da der Header von einem Template kommt. Aber das brauche ich ja eiogentlich nicht, da der Header ja sowas wie das Template ist.

        Deine Version hört sich auf jadenfall gut an und ich werde das mal austesten.

        Gruß
        Christian

        Kommentar


        • #5
          Original geschrieben von Rider99
          ...
          <?php include("header.php&dir=../"); ?>
          ...
          Das muß so aussehen:
          Code:
          <?php
            $dir='../';
            include("include/header.php");
          ?>

          Das $dir im Aufruf kannst du Dir ganz sparen,
          wenn du in der header.php vor den Includes $dir = dirname($PHP_SELF); einfügst.

          Für src-Angaben in HTML-Tags muß das $dir etwas anders aufgebaut werden:
          $htmldir = substr($dir, strlen($DOCUMENT_ROOT));
          Eventuell muß noch ein '/' davor, dann tut´s.

          Eine Erklärung zu $PHP_SELF und $DOCUMENT_ROOT gibt es im PHP-Handbuch im Kapitel II.7: Variablen->Vorderfinierte Variablen
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            Danke schön,

            jetzt funktioniert es auch. Die erste Lösung wirkte auch irgendwie komisch und hat,welch ein Wunder ,
            auch nicht funktioniert.

            Jetzt probier ich das mal mit Document_Root aus,
            wirkt eleganter.

            Gruß Christian

            Kommentar

            Lädt...
            X