NeodH: HILFE! Bei PHP include erweitert er den Link automatisch!

Hi Leutz,

ich hoffe hier kann mir jemand helfen!

Also folgendes Problem:
Meine Datei menue.php habe ich in mehreren Dateien includet!
Funktioniert auch! Nur ein Problem habe ich!

Bei Dateien die ich in Unterordnern abgelegt habe, erweitert er alle links in der includeten menue.php um den Unterordner!

Bsp:
Meine menue.php enthält einen Link blabla.php
Dieser funktioniert von allen Dateien aus dem Hauptverzeichnis!

Bei dateien im Unterverzeichnis wir nennen es mal Kasten passiert folgendes:

der link heist auf einmal Kasten/blabla.php

Wie gesagt die menue.php ist nur einmal verhanden! bei Dateien aus dem hauptverzeicnis funktioniert alles top! ich klicke Link blabla.php und es funzt!

Nur bei dateien im Unterverzeichnis setzt er automatisch auf Kasten/blabla.php!

Das Unterverzeichnis verlasse ich mit ../ !!!!!!

Was mache ich falsch????

Ihr könnt auf meiner seite www.nmworkwear.de mal nachschaun!

Nehmt den Link links "AUDA" und dann klickt euch bis zu einem Artikel ins Untermenue! Alle links mit der includeten datei funktionieren nur beim Artikel wird auf einmal der bzw. alle links der includeten datei um den Unterordner erweitert!

  1. Hi

    Bei Dateien die ich in Unterordnern abgelegt habe, erweitert er alle links in der includeten menue.php um den Unterordner!

    Natuerlich tut "er" das - wobei "er" in diesem Falle der Browser ist.
    Das muss er, denn so funktioniert relatives Verlinken - der Client setzt aus der Adresse, von der er das aktuellen Dokument abgerufen hat, und dem relativen Pfad einen neuen absoluten URL zusammen, um darueber die verlinkte Ressource anfordern zu koennen.

    Meine menue.php enthält einen Link blabla.php
    Dieser funktioniert von allen Dateien aus dem Hauptverzeichnis!

    Bei dateien im Unterverzeichnis wir nennen es mal Kasten passiert folgendes:

    der link heist auf einmal Kasten/blabla.php

    Muss so sein, siehe oben.

    Wie gesagt die menue.php ist nur einmal verhanden!

    Und wenn sie in jedem Unterverzeichnis auf dem Server vorhanden waere - das wuerde den Client auch nicht weiter interessieren.

    Das Unterverzeichnis verlasse ich mit ../ !!!!!!

    Nein, das hast du nicht getan.
    Bspw. auf der Seite http://www.nmworkwear.de/Auda/audaA0721.php verlinkst du den Menuepunkt "King´s" mittels <a href="kingsprogramm.php"> - also wird aus der aktuellen Adresse und dieser relativen Pfadangabe die Adresse http://www.nmworkwear.de/Auda/kingsprogramm.php zusammengesetzt - so, wie es sein muss.

    Was mache ich falsch????

    Du verlinkst nicht auf die Ressource, auf die du wirklich verlinken willst - also bessere dort nach. Auf der oben verlinkten Seite findest du alle Informationen, die du dazu haben musst.

    Im Uebrigen besteht deine Seite aus grottenhaft fehlerhaftem Code.
    Ueber das ganze bloedsinnige Tabellengeschachtel koennte man ja vielleicht noch hinwegsehen, wenn man sich beide Augen herausoperieren liesse - aber wenn ein Dokument die Elemente html, head, body vier Mal(!) enthaelt, dann sollte selbst jemand mit nur ganz geringen HTML-Grundkenntnissen eigentlich wissen, dass das hoechst fehlerhafter Mistcode ist.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Hallo ChrisB,

      vielen dank für Deine Antwort!
      Und siehe da.... es funzt! Ich muss jetzt also nur die Links bei der der Datei absolut machen, die ich includen möchte!

      Wegen der kritik am Seitenaufbau:

      Das war nen schlag ins gesicht, worallem wenn man denk man hat alles richtig gemacht!

      Kannst du mir den mal ein paar tips geben was man besser machen könnte!
      Zum Beispiel das mit dem Tabellengeschachtel - ich kenne nur diese art von seitenaufbau! Was kann ich denn noch machen!

      Ebenso die Element htlm, body und head! wieso 4 x auf einer Seite?
      ( ich denke das kommt doch aus der includeten Datei zustande!)
      1x angezeigte Seite + 3x (Kopf, menü links, menü rechts) jaus den includeten Seiten!

      Bin über alle Tips und anregungen dankbar!

      Gruß

      neodh

      1. Moin,

        Wegen der kritik am Seitenaufbau:
        Das war nen schlag ins gesicht, worallem wenn man denk man hat alles richtig gemacht!

        dass man glaubt, man hätte es richtig gemacht, ist doch ganz normal, oder?

        Kannst du mir den mal ein paar tips geben was man besser machen könnte!
        Zum Beispiel das mit dem Tabellengeschachtel - ich kenne nur diese art von seitenaufbau! Was kann ich denn noch machen!

        Nimm dir am besten mal etwas Zeit und recherchiere die Begriffe semantisches Markup sowie Gestaltung und Layout mit CSS. Ja, vor zehn Jahren war es noch üblich, Tabellen zu verwenden, um die Inhalte auf der Seite anzuordnen. Es gibt sogar Fälle, in denen das einfacher ist (oder bestimmte Effekte einfacher zu realisieren sind) als mit dem moderneren Ansatz über CSS.

        Es hört sich ja ganz einfach an: Schreibe zuerst den HTML-Code, ohne überhaupt an die Darstellung zu denken. Verwende die Elemente, die die Bedeutung der Inhalte am besten beschreiben: Textabsätze, Listen, Links, vielleicht auch mal eine Tabelle, wenn der Inhalt das nahelegt, Überschriften, Formularelemente, vereinzelt bestimmt auch mal ein gruppierendes div-Element. Im zweiten Schritt gehst du dann mit CSS an den bislang erstellten Code und bringst ihn in eine Form bzw. arbeitest die visuelle Gestaltung heraus.
        Keine Sorge, wenn du das nicht gleich beherrscht - manche brauchen Monate oder gar Jahre dazu.

        Ebenso die Element htlm, body und head! wieso 4 x auf einer Seite?
        ( ich denke das kommt doch aus der includeten Datei zustande!)
        1x angezeigte Seite + 3x (Kopf, menü links, menü rechts) jaus den includeten Seiten!

        Das spielt doch keine Rolle. Hast du etwa *vollständige* HTML-Dokumente includiert? Dann hast du das Konzept missverstanden. Du sollst nur Teile eines Dokuments einbinden, so dass das Endergebnis, das der Browser (oder ein beliebiger anderer Client) zu sehen bekommt, ein vollständiges und korrektes (valides) HTML-Dokument ist. Das bedeutet, dass die eingebundenen Abschnitte keinesfalls selbst wieder das HTML-Grundgerüst enthalten dürfen.

        Bin über alle Tips und anregungen dankbar!

        Dann habe ich noch einen: Es gibt noch andere Möglichkeiten, einen Aussagesatz zu beenden. Jeden Satz mit einem Ausrufezeichen abzuschließen, sieht fürchterlich aus und macht deinen Text schlecht lesbar.

        So long,
         Martin

        --
        Die meisten Menschen werden früher oder später durch Computer ersetzt.
        Für manche würde aber auch schon ein einfacher Taschenrechner genügen.
        1. Und auch Dank an "Der Martin",

          ok das ich das html gerüst aus den includierten Dateien entfernen muss habe ich begriffen. Das ist einfach und schnell umzusetzen.

          Ich werde dan wohl mal ein bischen googlen müssen und mich mal mit css beschäftigen! Habe das schon mal versucht, jedoch nur Bahnhof verstanden.

          Nochmal eine Frage zu den Tabellen.

          Ich habe diese variante gewählt, da ich bestimmte abschnitte habe die eine feste Breite haben müssen. Wie soll ich den das Problem mit der festen Breite sonst lösen als mit Tabellen?

          Ich weis, das man bei html mit Tabellen keine festen breiten bzw. für eine bestimmte Bildschirmauflösung bauen soll, da der Browser das Bild dann der Auflösung anpasst.

          Wie löse ich denn aber das Problem? Wie gesagt einige Abschnitte müssen feste Breiten haben, da sonst das menü nicht richtig dargestellt wird.

          1. Hallo,

            Ich werde dan wohl mal ein bischen googlen müssen und mich mal mit css beschäftigen! Habe das schon mal versucht, jedoch nur Bahnhof verstanden.

            wozu Google bemühen. Du bist doch schon da. SELFHTML hat ein http://de.selfhtml.org/css/index.htm@title=CSS-Kapitel.

            Freundliche Grüße

            Vinzenz

      2. Hallo

        Das war nen schlag ins gesicht, worallem wenn man denk man hat alles richtig gemacht!

        Wie kamst du darauf? Chris hat sehr recht, der Code sieht aus, wie wild zusammengeklaut. Okay, das inkludieren erklärt's halbwegs, aber wie gesagt, es sieht so aus ^^. Mich wundert eher dass mein Browser das noch ziemlich okay anzeigt, der ärmste.
        Aber wie gesagt, wer auch immer dir gesagt hat du hättest "alles richtig gemacht" hat entweder keine Ahnung von HTML oder keine Ahnung von PHP oder (wahrscheinlicher) beides.

        Kannst du mir den mal ein paar tips geben was man besser machen könnte!
        Zum Beispiel das mit dem Tabellengeschachtel - ich kenne nur diese art von seitenaufbau! Was kann ich denn noch machen!

        Wie Christ schrieb kann man bei solch brutalen Fehlern darüber noch hinweg sehen. Tabellen-Design gilt als schlechter Stil aber ist immerhin nicht technisch falsch. Was die Seite da ausliefert ist einfach keine HTML-Resource.

        Ebenso die Element htlm, body und head! wieso 4 x auf einer Seite?
        ( ich denke das kommt doch aus der includeten Datei zustande!)
        1x angezeigte Seite + 3x (Kopf, menü links, menü rechts) jaus den includeten Seiten!

        Naja, naheliegend wäre doch die <html> und <body>-Tags, sowie das ganze <head>-Element aus den inkludierten Dateien zu entfernen. Ich persönlich schreibe den Kopf sogar immer in eine Extra-Datei, die dann als erstes von allen direkt aufgerufenen (also denen, die in der Adresszeile stehen) Dateien inkludiert wird.

        Bin über alle Tips und anregungen dankbar!

        Mach das erstmal, entferne alle <body>-Tags, alle <html>-Tags und alle <head>-Elemente. Anschließend schreibst du wieder welche in die Dateien, die als "oberste Ebene" also direkt abgerufen werden. Oder aber (wie oben angeregt) du schreibst eine html_header.php und eine html_footer.php und inkludierst eben diese in den entsprechenden Dateien (weniger Arbeit, falls man mal etwas daran ändern will). Geht "mal eben" natürlich nur, wenn die Kopfdaten auf allen Seiten gleich sein sollen.

        --
        sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(
        1. Hallo Deus Figendi,

          auch Dir ein Dank für Deine Hilfe.

          Du schreibst: Mach das erstmal, entferne alle <body>-Tags, alle <html>-Tags und alle <head>-Elemente. Anschließend schreibst du wieder welche in die Dateien, die als "oberste Ebene" also direkt abgerufen werden. Oder aber (wie oben angeregt) du schreibst eine html_header.php und eine html_footer.php und inkludierst eben diese in den entsprechenden Dateien (weniger Arbeit, falls man mal etwas daran ändern will). Geht "mal eben" natürlich nur, wenn die Kopfdaten auf allen Seiten gleich sein sollen.

          Ich nutze doch eine header Dadeti! Kopfdatei sowie Menüdatei (rechts + links) sind includiert! Ob ich die nun header oder footer nenne ist doch egal!

          Oder habe ich dich da Mißverstanden?

          1. Oder habe ich dich da Mißverstanden?

            Ja.
            Was ich meinte... in meinen Projekten habe ich eine Datei, die zum Beispiel html_header.php heißt und minimalistisch diesen Inhalt hat:

            <?php  
            echo ('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"  
                      "http://www.w3.org/TR/html4/loose.dtd">  
            <html>  
             <head>  
              <title>Titel der Website</title>  
             </head>  
             <body>');  
            ?>
            

            die Datei html_footer.php schaut dann entsprechend so aus

            <?php  
            echo(' </body>  
            </html>');  
            ?>
            

            Wie gesagt, minimalistisch, tatsächlich erfolgt in diesen Dateien keine wirkliche Ausgabe und im Footer habe ich dann idR auch die Ausgabe der gesammelten Fehler... aber das ist alles nebensächlich, der Punkt ist, dass man daraufhin z.B. neue Meta-Daten nur in einer Datei nachtragen muss etc.
            Aber wie geasagt _musst_ du das ja nicht so handhaben du kannst auch gerne in jeder einzelnen direkt angesteuerten Datei (also z.B. Impressum.php oder Versandkosten.php damit klar wird welche Art von Dateien ich meine) das Grundgerüst eintragen, hat auch seine Vorteile.

            Ich meinte tatsächlich, dass besagtes Grundgerüst aus den inkludierten Dateien raus muss. Unter "Header" verstand ich jetzt eben das HTML-Element und nicht eine Tabellenzelle :)

            --
            sh:( fo:| ch:? rl:( br:& n4:& ie:{ mo:} va:) de:µ_de:] zu:) fl:( ss:| ls:[ js:(