Navigation per php-Include einbinden funktioniert nicht

  • Hallo zusammen,
    ich habe erst vor kurzem (drei Tagen) begonnen, mich mit HTML und CSS zu beschäftigen und stehe bei meinen ersten Gehversuchen vor einem Problem, dessen Lösung in diesem Unterforum bei den FAQ's beschrieben wird. Leider funktioniert es bei mir nicht.

    Zum Problem:
    Ich möchte die Navigation (Menuleiste) per php-Include einbinden.

    Folgendes habe ich dann getan:
    1. XAMPP installiert (ohne genau zu wissen, was ich da mache, aber O.K.)
    2. Den HTML-Code meiner Navigation in eine separate Datei "menubar.php"
    verschoben.
    3. Sämtliche htm-Dateiendungen auf php geändert.
    4. php-Include-Befehl in meine index.php eingebaut.

    Das ist meine index.php:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>Homepage - Startseite</title>
    <meta name="description" content="Homepage - Startseite">
    <meta name="author" content="R">
    <meta name="editor" content="html-editor phase 5">
    <link rel="stylesheet" type="text/css" href=".\design\styles.css">
    </head>

    <body>
    <?php include ("./common/menubar.php"); ?>

    </body>
    </html>

    Die Dateiangabe im Include habe ich sowohl mit / als auch mit \ ausprobiert.

    Das ist die Menuleiste:

    <ul class="menubar">
    <li><a href="..\index.php">Start</a></li>
    <li><a href="..\aboutme.php">Über mich</a></li>
    <li><a href="..\myclaudi.php">Meine Claudi</a></li>
    <li><a href="..\mycats.php">Meine Katzen</a></li>
    <li><a href="..\contact.php">Kontakt</a></li>
    </ul>

    und der Vollständigkeit wegen noch die Styles:

    body {
    background-color:#008080;
    }

    .menubar {
    background-color:#007070;
    border-top-color:#DFDFDF;
    border-top-style:solid;
    border-top-width:thin;
    border-bottom-color:#DFDFDF;
    border-bottom-style:solid;
    border-bottom-width:thin;
    font-family:Helvetica;
    font-size:medium;
    font-weight:normal;
    text-align:right;
    margin-left:auto;
    padding-top:4px;
    padding-bottom:4px;
    }

    .menubar li {
    display:inline;
    padding-left:10px;
    padding-right:10px;
    }

    .menubar li a {
    color:#DFDFDF;
    text-decoration:none;
    }

    .menubar li a:hover {
    color:#FFFFFF;
    }

    Wie bereits erwähnt, sind meine Kenntnisse der Materie noch sehr gering. Das Fass mit php habe ich (vorerst) auch nur des Includes wegen aufgemacht, weil ich mit HTML und CSS für's erste voll ausgelastet bin.

    Vielleicht kann mir da jemand weiterhelfen.

    Lieben Gruß

  • eigendlich sollte das so gehen mal ne andere frage ?? Warum willst du so eine kleine navi includen ?? ....sehe den sinn darin nicht

  • @ autor

    ich vermute mal des liegt an deiner pfadstruktur.
    passen die ordner auch wirklich so ?

    @ macro

    äh.. ne navi includet man auch nicht wegen der größe,
    sondern damit man sie nur 1x ändern muss, aber auf zig-seiten
    einbinden kann... ;|

  • okay driver gut .....hätt ich mir eig auch denken können *gegen kopf hau*

  • Vielen Dank für die schnellen Antworten.

    Als Fehlerquelle kommt evtl. auch XAMPP in Frage. Wie bereits erwähnt, habe ich nicht wirklich gewusst, was ich bei Installation und Konfiguration getan habe. In dem Control Panel habe ich nur den Service "Apache" gestartet. Ist das korrekt ?

    Der Hinweis mit der Pfadstruktur ist auch gut. Ich habe mit meinem Editor (Phase 5) zwar die Links überprüft, zeige Euch hier aber die gesamte Struktur noch einmal:

    1. R<dir>
    1.1 common<dir>
    1.1.1 menubar.php
    1.2 design<dir>
    1.2.1 styles.css
    1.3 aboutme.php
    1.4 contact.php
    1.5 index.php
    1.6 mycats.php
    1.7 myclaudi.php

    Wie kann man denn so eine Struktur schöner darstellen ?:confused:

    Müssen die Pfadangaben eigentlich mit / oder \ gemacht werden ?

    Dass dieses Projekt sehr klein ist, ist mir schon klar. Es dient auch nur zum Üben. Trotzdem will ich von Anfang an Code-Redundanzen vermeiden und elegante Techniken einsetzen. Deswegen auch mein fast gleichzeitiger Beginn mit HTML und CSS.

  • ähm... du musst in deinem xampp-verzeichnis unter htdocs nen neuen
    ordner erstellen und dann dort alle dateien hinterlegen... dann ises am
    einfachsten...

  • O.K.,

    was heißt jetzt im Web ? Die Dateien sind ja zur Zeit noch auf meinem Windows-Rechner.

    Die Links habe ich alle mit \ angegeben.

    Ich glaube, ich habe die Sache mit XAMPP noch nicht gerafft. Wird da ein Web simuliert bzw. habe ich jetzt etwas wie meinen späteren Web-Server auf dem PC ?

    Was meinst Du mit out of the box ? Bei mir musste ich da noch etwas konfigurieren (Benutzer und Passworte etc.). Ich hab's halt nur installiert, weil's Vorraussetzung für php ist.

    Ich ahne fast, was für einen Eindruck diese Anfänger-Fragen auf versierte Web-Entwickler machen. Trotzdem muss ich ja irgendwie diese recht einfache Sache zum Laufen kriegen, oder ?

    Vielen Dank noch einmal bis hierhin...

    Habe das letzte Post von driver während des Schreibens verpasst.

    Muss ich die komplette Verzeichnis-Struktur dorthin verschieben ? Wofür ist denn der Ordner htdocs gedacht ? Sollte ich dieses Verzeichnis auch bei meinen Editor-Einstellungen verwenden ?

    Einmal editiert, zuletzt von zaunbauer (18. März 2009 um 18:19) aus folgendem Grund: Nachtrag

  • Leider nein.

    Ich habe jetzt in htdocs einen Ordner namens "Meine Websites" angelegt und in diesem wiederum einen mit dem Projektnamen. An der Struktur hat sich nichts geändert.

    Hat noch jemand eine Idee ?

  • ich glaub so geht das nicht. ich befürchte deine ordnerstruktur is
    total durcheinander... leg mal im ordner htdocs EINEN ordner an
    mit dem namen deines projektes. in diesen ordner kopierst du
    alle dateien (keine unterordner, die dateien direkt). anschließend
    öffnest du alle php, html und css dateien und passt die pfade
    jeweils so an, dass nur der dateiname drinsteht. kein punkt davor
    und kein ordnername...

  • Prima,

    wieder einmal Danke für die schnellen Antworten. Den Ordner "Meine Websites" zu nennen war wirklich nicht clever.

    Ich werde jetzt dies alles nach Anleitung von Euch abändern, wüsste jedoch trotzdem gern, was der Ordner htdocs für ein besonderer Ordner ist.

    driver:
    Dass ich jetzt ohne Unterordner arbeiten soll, ist nur ein Provisorium, um es zum Laufen zu bekommen, oder ?

    @bandit600 (Suzuki?):
    Hab' ich nicht kapiert! Wann muss ich das eingeben ? Wenn ich die HP testen möchte ?

    Gruß

  • Ja, klappt alles. Vielen vielen Dank. Wirft bei mir allerdings folgende Fragen auf:

    1. Warum muss ich nur den Verzeichnisnamen angeben ? Sucht er automatisch nach einer index-Datei ?
    2. Warum funktioniert es nicht, wenn ich aus dem Explorer heraus die index.php anklicke ?

    Eine weitere Frage, die mit dem eigentlichen Problem nichts zu tun hat:

    Warum geht meine Nav-Leiste nicht von ganz links nach ganz rechts ? Da sie farblich vom Body abgesetzt ist, kann ich sehen, dass links und rechts etwas fehlt.

    Wer Zeit und Lust hat, kann sich ja mal die css dazu anschauen.

    Gruß

  • 1. jup, automatisch wird immer eine index.html oder index.php aufgerufen.
    du kannst diese natürlich auch direkt beim aufruf angeben, wenn nix angegeben
    wird, sucht er sich seine index.*

    2. weil du da eine lokale datei öffnest. mit html-files klappt des auch, aber php
    kann eben nur auf einem webserver ausgeführt werden - deshalb musst des auch
    immer über einen webserver aufrufen.

    wegen dem htdocs steht leider nicht viel in der xampp-doku.. nur dieses hier

    Zitat

    Document is called a folder the $path-to-xampp\xampp\htdocs. There is the index site (index.html) the real start page which is initialized after executing of http://localhost. Alternatively, this page can also be deleted and replaced by "index.php" or "index.cgi" (etc.).

    im prinzip is htdocs dein standard-verzeichnis in dem alle webseiten liegen.
    du kannst die webseite direkt reinlegen,oder unterverzeichnisse erstellen,falls
    du mehrere projekte hast.

    zu deinem css problem... ich seh keine width-angabe...

  • O.K.,
    ich denke, ich komme dem Verständnis des Localhosts etwas näher. Ich werde als nächstes mal testen, ob ich das ganze wieder mit Unterverzeichnissen in htdocs hinbekomme, weil ich's gerne strukturiert mag (auch wenn's bei der Größe des Prokekts mehr Aufwand als Nutzen bedeutet).

    Zur width-Angabe:
    Ich habe jetzt in .menubar eine width=100% Angabe gemacht, weil es dies vom Body-Element erben soll. Hab ich das soweit richtig verstanden ?

    Das Body-Element hat allerdings keine explizite Angabe. Muss ich dort eine in px angeben ?

    Das Ergebnis dieser Änderung ist folgendes:
    Links sieht es aus wie vorher, rechts wie gewünscht. Allerdings passt die Seite in der Breite nicht mehr auf den Bildschirm, so dass dort jetzt eine Scroll-Bar betätigt werden muss.

    Hat das etwas mit relativen und absoluten Angaben zu tun ?

    Gruß und Vielen Dank für Deine Mühe.

  • Noch mal zum Thema XAMPP. Die Erfahrung zeigt, dass man seine Projekte eben nicht in das htdocs-Verzeichnis von XAMPP packen sollte. Sinnvoller ist es, wenn man sich ein eigenes Verzeichnis für seine Projekte anlegt, egal wo (ich habe bei mir sogar eine eigene Partion dafür). Und für jedes Projekt passt man dann die httpd-xampp.conf im Verzeichnis \xampp\apache\conf\extra an.

  • Weil ich hier alles korrekt machen möchte, habe ich die Datei httpd-xampp.conf mit dem Editor geöffnet, um sie "mal eben" anzupassen ...

    So sieht die (wahrscheinlich nicht nur bei mir) aus:

    # XAMPP settings
    #
    <IfModule alias_module>
    <IfModule mime_module>
    #ScriptAlias /php/ "C:/Programme/xampp/php/"
    #Action application/x-httpd-php "/php/php-cgi.exe"
    LoadModule php5_module "C:/Programme/xampp/apache/bin/php5apache2_2.dll"
    AddType application/x-httpd-php-source .phps
    AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt

    <Directory "C:/Programme/xampp/htdocs/xampp">
    <IfModule php5_module>
    <Files "status.php">
    php_admin_flag safe_mode off
    </Files>
    </IfModule>
    </Directory>

    Alias /security "C:/Programme/xampp/security/htdocs/"
    <Directory "C:/Programme/xampp/security/htdocs">
    <IfModule php5_module>
    <Files "xamppsecurity.php">
    php_admin_flag safe_mode off
    </Files>
    </IfModule>
    Order deny,allow
    Deny from all
    Allow from localhost
    </Directory>

    Alias /phpmyadmin "C:/Programme/xampp/phpMyAdmin/"
    <Directory "C:/Programme/xampp/phpMyAdmin">
    AllowOverride AuthConfig
    Order allow,deny
    Allow from all
    </Directory>

    Alias /webalizer "C:/Programme/xampp/webalizer/"
    <Directory "C:/Programme/xampp/webalizer">
    <IfModule php5_module>
    <Files "webalizer.php">
    php_admin_flag safe_mode off
    </Files>
    </IfModule>
    AllowOverride AuthConfig
    Order allow,deny
    Allow from all
    </Directory>

    Alias /contrib "C:/Programme/xampp/contrib/"
    <Directory "C:/Programme/xampp/contrib">
    <IfModule php5_module>
    <Files "webalizer.php">
    php_admin_flag safe_mode off
    </Files>
    </IfModule>

    Order deny,allow
    Deny from all
    Allow from localhost
    </Directory>
    </IfModule>
    </IfModule>


    # Access restriction via Remote
    <IfModule auth_remote_module>
    <Directory "C:/Programme/xampp/htdocs/fonts">
    AllowOverride All
    AuthType Basic
    AuthName "AUTH REMOTE TEST"
    AuthRemoteServer localhost
    AuthRemotePort 80
    AuthRemoteURL /forbidden/
    Require valid-user
    #User: user / Password: pass
    </Directory>
    </IfModule>

    # Access restriction via MySQL
    <IfModule mysql_auth_module>
    <Location /restricted>
    AuthMySQLEnable On
    AuthName "MySQL Secured Place"
    AuthType Basic
    require valid-user
    AuthMySQLHost localhost
    AuthMySQLUser root
    # AuthMySQLPassword
    AuthMySQLDB webauth
    AuthMySQLUserTable user_pwd
    AuthMySQLNameField name
    AuthMySQLPasswordField pass
    AuthMySQLPwEncryption none
    </Location>
    </IfModule>

    Wie oder wo muss ich hier etwas ändern bzw. anpassen ?

    Vielen Dank bis hierhin und Gruß.

  • Gehen wir mal davon aus, dass du ein Projekt "projekt1" anlegen möchtest und dieses Verzeichnis auf e:\web\projekt1 abgelegt werden soll. Dafür fügst du diesen Block ein:

    Code
    Alias /projekt1 "E:/webs/projekt1/"
    <Directory "E:/webs/projekt1">
    AllowOverride AuthConfig
    Order allow,deny
    Allow from all
    </Directory>