Datei importieren für Navi aus CSS

B

Badener

Hmm... schwierig zu formulieren.

Ich habe meine Navigation per CSS umgesetzt. Jetzt habe ich aber in jeder .html-Datei beispielsweise folgendes stehen:
Code:
<div id="menu">
		<ul>
			<li><a href="index.html" id="startnav">Startseite</a></li>
			<li><a href="about.html" id="aboutnav">&Uuml;ber uns</a></li>
			<li><a href="service.html" id="servicenav">Service</a></li>
			<li><a href="anfahrt.html" id="anfahrtnav">Anfahrt</a></li>
			<li><a href="links.html" id="linksnav">Links</a></li>
			<li><a href="kontakt.html" id="kontaktnav">Kontakt</a></li>
			<li><a href="impressum.html" id="impressumnav">Impressum</a></li>
		</ul>
	</div>

Kennt jemand eine Möglichkeit, daß ich diese Navigation in einer externen Datei speichere und dann quasi in die .html-Seiten lediglich importiere, sprich, ändere ich die Navigation, muß ich dies nur in einer Datei tun und nicht auf allen Seiten.
Vom Prinzip her denke ich da an den #inlcude-Befehl von c++ - nur für html.

Danke
Badener
 
HTML ist keine Programmiersprache, von daher geht das nicht.

Du wirst also auf eine Scriptsprache deiner Wahl (z.B. php) ausweichen müssen, wenn du das so realisieren willst.

Was für einen einfachen Include auch noch ausreicht wären Server Side Includes (.shtml).

Matt
 
Oder die Navi in einen iFrame bauen, das würde auch gehen. Ich bau grundsätzlich nur noch PHP-Seiten, damit ich genau dem Problem aus dem Weg gehen kann.

Frank
 
Ich würde auch zu PHP raten.

Lager die komplette Navigation einfach in eine andere Datei aus, nenn sie wie du willst, und an der entsprechenden Stelle, wo die Navigation erscheinen soll, kommt dann ein
PHP:
require("dateidieichgenannthabewieichwill.php");
.

Die Inhalts-Datei, also die Datei mit dem "require()" sollte dann auch die Dateienung PHP haben.
(klar, gibt auch noch die Möglichkeit dem Server zus agen, er möge auch Datein mit endung HMTL durch den PHP-Parser werfen, aber das würde zu weit gehen, oder?)

Oder, auch eine Möglichkeit: Auf Windows umsteigen, und mit Phase5 arbeiten, der kann sowas auf Editorebene.
(Ich weiß, nicht der beste Tipp, aber das ist das einzige Programm, was ich unter MacOsX vermisse...).

gruß
Lukas
 
Das mit dem PHP hört sich gut an - aber irgendwie habe ich da noch einen Denkfehler drin....

Also: In der Seite, in die die Navigation soll, habe ich jetzt
Code:
	<div id="menu">
	<?php require("navigation.php"); ?> 
	</div>
stehen und in der navigation.php steht
Code:
		<ul>
			<li><a href="index.html" id="startnav">Startseite</a></li>
			<li><a href="about.html" id="aboutnav">&Uuml;ber uns</a></li>
			<li><a href="service.html" id="servicenav">Service</a></li>
			<li><a href="anfahrt.html" id="anfahrtnav">Anfahrt</a></li>
			<li><a href="links.html" id="linksnav">Links</a></li>
			<li><a href="kontakt.html" id="kontaktnav">Kontakt</a></li>
			<li><a href="impressum.html" id="impressumnav">Impressum</a></li>
		</ul>

Funktioniert aber nicht.
Nehme ich das div id=... mit in die php-Datei, geht es auch nicht.
Wo liegt mein Fehler? Danke
 
Mach mal nach dem "<?" ein Leerzeichen.
Und die Datei, wo das Require drin steht ist auch eine PHP-Datei, oder?
Ist jetzt so das, was ich in den ersten drei Sekunden gesehen habe. (Sorry, Zeit eion wenig knapp heute)
 
Badener schrieb:
Funktioniert aber nicht.

Ein bessere Fehlerbeschreibung hast du nicht? Wie sieht der Quellcode aus wenn du dir das Ergebnis im Browser anschaust? Und du versuchst das schon auf einem Webspace, der php-fähig ist, oder?

Matt
 
Ich mache es lokal auf meinem Rechner über den Apache 1.3, PHP5 ist installiert (von entropy) und funktioniert auch (zumindest phpmyadmin funktioniert.

Fehlermeldung kommt keine - es fehlt einfach die Navigation. Quelltext wie oben angegeben - die Dateien sind (mittlerweile :D) alle php-Dateien....
 
Dann musst Du auch nicht mehr mit HTML-Dokumenten rumhantieren, sondern kannst alles in PHP-Files schreiben. Also direkt mit "<?php..." beginnen und die HTML Dokumente vom Skript erzeugen lassen.

Es reicht nicht, in eine PHP-Datei einfach HTML-Tags reinzuschreiben, das gibt Parse-Errors. HTML-Tags werden mit z. B. mit 'echo "<ul><li>Punkt 1</li>";' vom Skript erzeugt.

Für die Navigation wäre das dann:

PHP:
<?php
echo "<ul>
			<li><a href=\"index.html\" id=\"startnav\">Startseite</a></li>
			<li><a href=\"about.html\" id="aboutnav">&Uuml;ber uns</a></li>
			<li><a href="service.html" id="servicenav">Service</a></li>
			<li><a href="anfahrt.html" id="anfahrtnav">Anfahrt</a></li>
			<li><a href="links.html" id="linksnav">Links</a></li>
			<li><a href="kontakt.html" id="kontaktnav">Kontakt</a></li>
			<li><a href="impressum.html" id="impressumnav">Impressum</a></li>
		</ul>";

?>

Beachte, dass die Ausrufungszeichen für die Attribute und Links in einem PHP-Dokument mit dem Backslash maskiert werden müssen. Aus attr="wert" wird attr=\"wert\". So wie ich es in den ersten beiden Zeilen gemacht habe, die anderen Zeilen sind noch nicht korrekt!

F.
 
2ndreality schrieb:
Es reicht nicht, in eine PHP-Datei einfach HTML-Tags reinzuschreiben, das gibt Parse-Errors. HTML-Tags werden mit z. B. mit 'echo "<ul><li>Punkt 1</li>";' vom Skript erzeugt.

Natürlich geht das. Parse error gibt es nur wenn ich das auch an den Parser verfüttern will.

@Badener: Und du führst das auch über den Webserver aus (http://localhost/test.php) und nicht irgendwie per Doppelklick in Safari geöffnet (file:///Users/Badener/Desktop/test.php)?

Matt
 
2ndreality schrieb:
PHP:
<?php
echo "<ul>
			<li><a href=\"index.html\" id=\"startnav\">Startseite</a></li>
			<li><a href=\"about.html\" id="aboutnav">&Uuml;ber uns</a></li>
			<li><a href="service.html" id="servicenav">Service</a></li>
			<li><a href="anfahrt.html" id="anfahrtnav">Anfahrt</a></li>
			<li><a href="links.html" id="linksnav">Links</a></li>
			<li><a href="kontakt.html" id="kontaktnav">Kontakt</a></li>
			<li><a href="impressum.html" id="impressumnav">Impressum</a></li>
		</ul>";

?>

Beachte, dass die Ausrufungszeichen für die Attribute und Links in einem PHP-Dokument mit dem Backslash maskiert werden müssen. Aus attr="wert" wird attr=\"wert\". So wie ich es in den ersten beiden Zeilen gemacht habe, die anderen Zeilen sind noch nicht korrekt!

Genau, warum einfach, wenns auch umständlich geht ;-)

Du hast da übrigens einen parse error in Zeile 4. Wenn du das ganze mit
PHP:
echo '<ul>[...]</ul>';
schreibst sparst du dir das maskieren der ". Allerdings werden dann nicht mehr die Inhalte der Variablen ausgegeben, die sich im String befinden, sondern deren Name (vgl. auch die Beispiele unter http://de.php.net/echo).

Matt
 
Ich kann doch auch normales HTML mit in die include-Datei schreiben, was der dann normal ausgibt....

das require verlässt doch den PHP-Mode, und führt dann die requierte Datei aus. Deshalb muss ja auch PHP-Code innerhalb von den PHP-Klammern stehen...

aber ich werd das gleich noch einmal nachgucken..

Gruß
Lukas
 
eben noch einmal nachgeschaut:
"require" verlässt den PHP-Modus. Das heißt, dass der Inhalt der Datei, welche "Required" wird folgendermaßen in das Script eingebaut wird:

Die beiden Dateien:
test.php
PHP:
<?
echo "Ich werde von PHP ausgegeben";
require("html.php");
echo "Und ich werde ebenfalls von PHP ausgegeben";
?>

html.php
PHP:
Ich stehe in einer externen Datei, und werde NICHT von PHP ausgegeben.
<?
echo "Auch ich stehe in der externen Datei, werde aber mit einem echo ausgebenen.";
?>

wie das ganze interpretiert wird:
PHP:
<?
echo "Ich werde von PHP ausgegeben";
?>
Ich stehe in einer externen Datei und werde NICHT von PHP ausgegeben.
<?
echo "Auch ich stehe in der externen Datei, werde aber mit einem echo ausgebenen.";
?>
<?
echo "Und ich werde ebenfalls von PHP ausgegeben";
?>

wusste doch, dass das geht, hab nämlich früher so meine HTML-Header und Footer auf die Art und weise eingebunden, bevor ich das nun mit SQL mache...

Um die Fehler bei dem ersten Script zu beheben, mach mal folgendes:

Ganf am Anfang von der Datei, wo das Require steht (ich nenn sie mal index.php), füge da mal folgendes ein:
PHP:
<?
error_reporting(E_ALL);
?>
Falls dann immer noch keine Fehlermeldung kommt, prodozier einmal einen Fehler (was weiß ich, eine Funktion aufrufen, die es nicht gibt, asdf() oder sowas).
Gibt es immer noch keine Fehlermeldung, dann werden die wohl ausgeblendet. und in eine Extra-Datei geschrieben werden (auch wenn dus nicht benutzt, ist bei der Standarteinstellung von MAMP so).

Ansonsten, immer fleißig posten, was es für Fehlermeldungen gibt.
Und Dateinamen mal mit Copy&Paste einfügen, oder kurzfristig auf einen Buchstaben plus Endung reduzieren, passiert mir häufig, dass ich da einen kleinen Buchstabendreher drin habe.

Was mir auch noch einfällt, ist, dass die Datei Navigation.php nicht gespciert ist (wie oft bin ich über diese Falle gestolpert....).

gruß
Lukas
 
Matt schrieb:
Natürlich geht das. Parse error gibt es nur wenn ich das auch an den Parser verfüttern will.

Ich bin davon ausgegangen, dass die Datei mit <?PHP geöffnet und mit ?> wieder geschlossen wird.

Matt schrieb:
Du hast da übrigens einen parse error in Zeile 4. Wenn du das ganze mit

Meinst Du die fehlenden Backslashes ab Zeile 4, bzw. schon ab 3? Habe ich doch geschrieben, dass ich nur die ersten ' " ' und nicht alles komplett ausmaskiert habe ;)

Matt schrieb:
Allerdings werden dann nicht mehr die Inhalte der Variablen ausgegeben, die sich im String befinden, sondern deren Name

Damit mache ich mir dann aber einen der grossen Vorteile beim Einsatz von PHP kaputt.

Frank
 
Seltsam....

Ich bekomme immer nur leere Seiten.

Jetzt habe ich mal eine Datei mit
Code:
<?
phpinfo();
?>
geschrieben. Resultat: Leere Seite

Schreibe ich aber
Code:
<?
phpinfo();
?>
zeigt er mir, welches PHP ich installiert habe.

Werde jetzt Eure obigen Tipps ausprobieren.
Schon mal vielen Dank für Eure Mühen!
 
Nochmal ich, habe gerade auch getestet:

PHP:
<?php
    $test = "ich bin der Inhalt";
?>

$test<br>

<?php
    echo "Der Inhalt der Testvariable ist: $test<br>";
    echo 'Der Inhalt der Testvariable ist: $test<br>';
?>

Ich habe bisher nie im Mix HTML/PHP mit exkludierten Parserbereichen in einem Dokument gearbeitet, da ich von der Möglichkeit, Variablen zu benutzen, ausgiebig Gebrauch mache. D. h. Texte und andere temporäre Konstanten liegen entweder in einer SQL DB oder in einem anderen PHP-Dokument. Somit wird die Wartbarkeit m. E. nach stark verbessert, da ich nicht in jedem Script rumsuchen muss, sondern zentral alles ändern kann.

Bei exkludierten HTML Tags verliere ich die Möglichkeit, an die Variableninhalte ranzukommen, ebenso bei einfachen Anführungen.

Frank
 
Öhm, jetzt bin ich verwirrt...

die beiden Code-Schnipsel sehen für mich total gleich aus...
Wo schreibst Du denn phpinfo(), und bekommst die Info, welches PHP installiert ist?
Ansonsten würde ich darauf tippen, dass die Fehlermeldungen nur in ein Protokoll geschrieben werden, und nicht im Browser ausgegeben...
Kann man aber umstellen. Entweder httpd.conf oder php.ini, frag mich jetzt nicht wo... Ist schon lange her, das ich das gemacht habe...

gruß
Lukas
 
Einmal habe ich die PHP eingeleitet mit <? --> dann geht es nicht
und mit <?php --> dann kommt die Ausgabe.....
 
Zurück
Oben Unten