Vollautomatisierte Sprachnavigation

Schau mal bitte auf welcher Seite du bist.

Auf welcher Seite von was? Wenns um den Thread hier geht, dann eindeutig auf Seite 1. Ansonsten: Vor dem Mond.

Aber schon okay, ich halt mich raus. Kocht ihr mal weiter euer Süppchen... ;-)
 
Gemeint war die Webseite.
Und wir werden unser "Süppchen" gerne weiter kochen auch ohne derartige überflüssige Kommentare... :nospam:
 
Ich würde dir empfehlen auf deinem Test/Entwicklungsserver die Notices in deiner php.ini anzeigen zu lassen (E_ALL).
Das nervt am Anfang aber damit lernst du richtig sauberen php code zu entwickeln.
Hier mal alle Notices der ersten Seite:
Code:
Notice: Undefined index: lang in X:\htdocs\zyclop\_nav\nav.php  on line 3
href="index.php?lang=de"> german
Notice: Undefined index: lang in X:\htdocs\zyclop\_nav\nav.php on line 6
href="index.php?lang=en"> englisch
Notice: Undefined index: lang in X:\htdocs\zyclop\_nav\nav.php on line 9
href="index.php?lang=fr"> france
Notice: Undefined index: lang in X:\htdocs\zyclop\_nav\nav.php on line 12
href="index.php?lang=it"> italian

Notice: Use of undefined constant LANG - assumed 'LANG' in X:\htdocs\zyclop\_nav\nav.php on line 18
Notice: Undefined variable: lang in X:\htdocs\zyclop\_nav\nav.php on line 18
Notice: Use of undefined constant LANG - assumed 'LANG' in X:\htdocs\zyclop\_nav\nav.php on line 19
Notice: Undefined variable: lang in X:\htdocs\zyclop\_nav\nav.php on line 19
Notice: Use of undefined constant LANG - assumed 'LANG' in X:\htdocs\zyclop\_nav\nav.php on line 20
Notice: Undefined variable: lang in X:\htdocs\zyclop\_nav\nav.php on line 20
Notice: Use of undefined constant LANG - assumed 'LANG' in X:\htdocs\zyclop\_nav\nav.php on line 21
Notice: Undefined variable: lang in X:\htdocs\zyclop\_nav\nav.php on line 21
Notice: Use of undefined constant LANG - assumed 'LANG' in X:\htdocs\zyclop\_nav\nav.php on line 22
Notice: Undefined variable: lang in X:\htdocs\zyclop\_nav\nav.php on line 22
Notice: Use of undefined constant LANG - assumed 'LANG' in X:\htdocs\zyclop\_nav\nav.php on line 23
Notice: Undefined variable: lang in X:\htdocs\zyclop\_nav\nav.php on line 23
Notice: Use of undefined constant LANG - assumed 'LANG' in X:\htdocs\zyclop\_nav\nav.php on line 24
Notice: Undefined variable: lang in X:\htdocs\zyclop\_nav\nav.php on line 24
Notice: Use of undefined constant LANG - assumed 'LANG' in X:\htdocs\zyclop\_nav\nav.php on line 25
Notice: Undefined variable: lang in X:\htdocs\zyclop\_nav\nav.php on line 25
Notice: Use of undefined constant LANG - assumed 'LANG' in X:\htdocs\zyclop\_nav\nav.php on line 26
Notice: Undefined variable: lang in X:\htdocs\zyclop\_nav\nav.php on line 26

Notice: Undefined index: lang in X:\htdocs\zyclop\_nav\nav.php  on line 3
href="index.php?lang=de"> german
Notice: Undefined index: lang in X:\htdocs\zyclop\_nav\nav.php on line 6
href="index.php?lang=en"> englisch
Notice: Undefined index: lang in X:\htdocs\zyclop\_nav\nav.php on line 9
href="index.php?lang=fr"> france
Notice: Undefined index: lang in X:\htdocs\zyclop\_nav\nav.php on line 12
href="index.php?lang=it"> italian

Aber ich seh schon in dem was du geschickt hast isr die language.php nicht eingebunden....
Code:
Fatal error: Cannot use string offset as an array in X:\htdocs\zyclop\_nav\nav.php on line 18
Der bedeutet in dem Fall dass du auf einen Index eines Arrays zugreifen willst der nicht existiert. (Weil das Array nicht existiert)

Ausserdem die sache mit dem output buffering.
Es macht nur sinn um Ausgaben abzufangen und in Variablen zu buffern.

Ich hab dir die index.php nav.php und language.php angepasst.
Dabei hab ich dir das EVA Prinzip eingebaut. Immer die Logik oben im Skript dann erst die Ausgabe.
Die language.php hab ich dir ins Hauptverzeichnis gezogen da die von mir universaler gedacht war. (Für spätere Verwendung)
Schau es dir mal durch und bei Fragen einfach Fragen :)

index.php
PHP:
<?php
$language = isset($_GET['lang']) ? $_GET['lang'] : "de";
$content = isset($_GET['cont']) ? $_GET['cont'] : "home";
switch($language) 
{ 
	case "de": 
		define("LANG", "de");
		break; 
	case "en": 
		define("LANG", "en");
		break; 
	case "fr": 
		define("LANG", "fr");   
		break;
	case "it": 
		define("LANG", "it");  
		break; 
}


include('language.php');

$idmenu = 'menu_normal';
$idcontentground = 'content_ground_normal';				
$idcontent = 'content_normal';

ob_start();  
switch($content) 
{

	default: 
		include('_cont/cont.home.php');
		$idmenu = 'menu_forth';
		$idcontentground = 'content_ground_forth';
		$idcontent = 'content_forth';
		break;
		
	case 'fly':
		include('_cont/cont.fly.php');
		break;

	case 'links':
		include('_cont/cont.links.php');
		break;

	case 'partner':
		include('_cont/cont.partner.php');
		break;

	case 'contact':
		include('_cont/cont.contact.php');
		break;

	case 'hotel':
		include('_cont/cont.hotel.php');
		break;

	case 'interhome':
		include('_cont/cont.interhome.php');
		break;

	case 'car':
		include('_cont/cont.car.php');
		break;

	case 'bus':
		include('_cont/cont.bus.php');
		break;
}
$navcontent = ob_get_clean(); 

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
...
	</head>
	<body> 
		<div id="ballina">
			...
			<!-- Navigation Links oben -->

			<div id="<?=$idmenu;?>"> 
				<ul>
<?php include('_nav/nav.php');?>
				</ul>
			</div>
				
			<div id="<?=$idcontentground;?>">				
				<div id="<?=$idcontent;?>"> 
					<?=$navcontent;?> 
				</div> 
<?php include('_nav/nav.r.php');?> 
			</div>
			...
		</div>
		...
	</body>
</html>
nav.php
PHP:
<!-- Fahnen und Sprachwahl -->
<div style="padding-top:5px; text-align:center; padding-bottom: 5px;">
	<a <?=(LANG == "de") ? "id='aktiv'" : "";?> href="index.php?lang=de">
	<img src="http://www.tutorials.de/forum/images/lang/german.jpg" alt="german" width="20" height="13" border="0" />
	</a>
	<a <?=(LANG == "en") ? "id='aktiv'" : "";?> href="index.php?lang=en">
	<img src="http://www.tutorials.de/forum/images/lang/englisch.jpg" alt="englisch" width="20" height="13" border="0" />
	</a>
	<a <?=(LANG == "fr") ? "id='aktiv'" : "";?> href="index.php?lang=fr">
	<img src="http://www.tutorials.de/forum/images/lang/france.jpg" alt="france" width="20" height="13" border="0" />
	</a> 
	<a <?=(LANG == "it") ? "id='aktiv'" : "";?> href="index.php?lang=it">
	<img src="http://www.tutorials.de/forum/images/lang/italian.jpg" alt="italian" width="20" height="13" border="0" />
	</a>
</div>

<!-- Navigation -->
<li><a href="index.php?cont=home&lang=<?=LANG;?>"><?=$lang[LANG]["nav"]["home"];?></a></li>
<li><a href="index.php?cont=fly&lang=<?=LANG;?>"><?=$lang[LANG]["nav"]["fly"];?></a></li>
<li><a href="index.php?cont=contact&lang=<?=LANG;?>"><?=$lang[LANG]["nav"]["hotel"];?></a></li>
<li><a href="index.php?cont=contact&lang=<?=LANG;?>"><?=$lang[LANG]["nav"]["interhome"];?></a></li>
<li><a href="index.php?cont=contact&lang=<?=LANG;?>"><?=$lang[LANG]["nav"]["car"];?></a></li>
<li><a href="index.php?cont=contact&lang=<?=LANG;?>"><?=$lang[LANG]["nav"]["bus"];?></a></li>
<li><a href="index.php?cont=contact&lang=<?=LANG;?>"><?=$lang[LANG]["nav"]["partner"];?></a></li>
<li><a href="index.php?cont=contact&lang=<?=LANG;?>"><?=$lang[LANG]["nav"]["links"];?></a></li>
<li><a href="index.php?cont=contact&lang=<?=LANG;?>"><?=$lang[LANG]["nav"]["contact"];?></a></li>

Die HTML/CSS Fehler hab ich jetzt nicht ausgebügelt da musst du selber noch mal ran das war mir dann etwas zu aufwendig ;)
 
Zuletzt bearbeitet:
Hey Da_Chris.

Danke für deinen Einsatz. Funktioniert alles Prima. Auch das Design passt. Welchen Browser hattest du?

Kannst evtl. das google Script, den Footer Inhalt, das Banner Div, und den Meta Title entfernen? Damit wird dann die Seite nicht über google gefunden.

Betreffend den Notices muss ich mich nochmals schlauer machen. Habe da eine 0815 Xampp Version. Mal schauen ob das funktioniert.

Sollte ich das immer so machen, dass der PHP Code vor dem Header steht? Also nur die Logik? Die Ausgabe folgt dann im HTML Code, jeweils eingegliedertmit <? >.
Wenn ich das richtig verstehe?

Die language.php hab ich dir ins Hauptverzeichnis gezogen da die von mir universaler gedacht war. (Für spätere Verwendung)

Das wird meine nächste Aufgabe. Den Inhalt wie z.B. Öffnungszeiten Dynamisch anzuzeigen. :D

Vielen Dank nochmals für deine Hilfe und deinen Einsatz.

gruss zyclop


PS: Könntest du noch deinen Upload entfernen oder mindestens den Content Ordner in dem Zip. Da sind Links zu Buchungssystemen drin.

Danke!
 
Zuletzt bearbeitet:
Danke für deinen Einsatz. Funktioniert alles Prima. Auch das Design passt. Welchen Browser hattest du?
Jo kein Ding. Habe es unter Firefox getestet.

Kannst evtl. das google Script, den Footer Inhalt, das Banner Div, und den Meta Title entfernen? Damit wird dann die Seite nicht über google gefunden.
woran scheitert es da bei dir?

Betreffend den Notices muss ich mich nochmals schlauer machen. Habe da eine 0815 Xampp Version. Mal schauen ob das funktioniert.
Xampp ist dafür die beste wahl. Kann man alles wunderbar einstellen. Entweder stellst du dynamisch error_reporting() ein oder dauerhaft in deiner Testumgebung in der php.ini.

Sollte ich das immer so machen, dass der PHP Code vor dem Header steht? Also nur die Logik? Die Ausgabe folgt dann im HTML Code, jeweils eingegliedertmit <? >.
Wenn ich das richtig verstehe?
ja das nennt man EVA Prinzip (Eingabe-Verarbeitung-Ausgabe). Das macht dir Änderungen viel einfacher da übersichtlicher.
Am besten lagert man sogar alles HTML in tpl Files aus bei denen man eben die PHP-Kurzschreibweise verwenden kann. Das wäre die einfachste Version eines Templatesystems. Ich mach das fast nur so :D


PS: Könntest du noch deinen Upload entfernen oder mindestens den Content Ordner in dem Zip. Da sind Links zu Buchungssystemen drin.
jo mach ich
 
woran scheitert es da bei dir?
Du hast in der Index.php noch einige Informationen die ich nicht unbedingt im Forum haben will. Kannst evtl. das google Script, den Footer Inhalt, das Banner Div, und den Meta Title entfernen? Sonst kann man dann z.B. nach .. Reisen suchen und kommt auf den Forum Eintrag.

Xampp ist dafür die beste wahl. Kann man alles wunderbar einstellen. Entweder stellst du dynamisch error_reporting() ein oder dauerhaft in deiner Testumgebung in der php.ini.
Ich denke ich versuche den weg mit der ini

ja das nennt man EVA Prinzip (Eingabe-Verarbeitung-Ausgabe). Das macht dir Änderungen viel einfacher da übersichtlicher.
Am besten lagert man sogar alles HTML in tpl Files aus bei denen man eben die PHP-Kurzschreibweise verwenden kann. Das wäre die einfachste Version eines Templatesystems. Ich mach das fast nur so :D

Das mit HTML und tpl Files muss ich mir nochmals anschauen. Wäre der sinn, dass ich den Inhalt in tpl Files auslagere und dann include?

gruss zyclop
 
ah jetzt versteh ich du meinst in meinem Beitrag :D
habs "zensiert" ;)

Das mit HTML und tpl Files muss ich mir nochmals anschauen. Wäre der sinn, dass ich den Inhalt in tpl Files auslagere und dann include?
ja
könnte so aussehen:
PHP:
include("tpl/template.tpl");
und darin dann deine HTML mit einigen wenigen php Ausgaben.
 
Zuletzt bearbeitet:
Ah ok. Noch eine Verständnis Frage. Was ist denn der Unterschied, wenn ich eine HTML include oder eine tpl?

gruss zyclop
 
mh also eine html file hab ich ehrlichgesagt noch nicht getestet :)
Aber laut Manual:
The include() statement includes and evaluates the specified file.
Es macht also keinen unterschied was für einen Dateityp du inkludierst. Es kommt auf den Inhalt an ;)
HTML-Quellcode bzw Text wird ausgegeben und PHP-Anweisungen ausgeführt.
 
Zurück