Syntax in Include-Dateien
Bertlmusch
- php
Hallo,
Baue mir gerade eine Index.php, die zweisprachig angeboten werden soll.
Dazu habe ich am Anfang folgende Zeilen hinterlegt:
<?
if ($lang == "de") { include "de.inc"; }
elseif ($lang == "es") { include "es.inc"; }
?>
In diesen Include-Dateien stehen alle Texte, Buttonbeschriftungen etc.
Das funktioniert soweit auch ganz gut.
Nun möchte ich beim Anklicken eines bestimmten Links, das ein separates Fenster in einer vordefinierten Größe aufgeht.
In der Index-Datei funktioniert das folgendermaßen:
<a href="javascript:void(0)" onclick="window.open('German_Info.htm', 'Noname', 'width=600px, height=250px, top=0px, left=0px'); return false;">Deutsch</a>
Übernehme ich nun diese funktionierende Zeile in die Include-Datei, dann muss ich das syntaktisch anpassen, in dem ich das doppelte Hochkomma durch ein einfaches Hochkomma ersetze, also:
$deutsch = "<a href='javascript:void(0)' onclick='window.open('German_Info.htm', 'Noname', 'width=600px, height=250px, top=0px, left=0px'); return false;'>Deutsch</a>";
Nun kann ich hier mit den Hochkommas spielen wie ich möchte, ich bekomme immer nur einen Syntaxfehler.
Wie muss das korrekt geschrieben werden ?
Danke für im Voraus
Bertlmusch
Hi Bertlmusch!
Übernehme ich nun diese funktionierende Zeile in die Include-Datei, dann muss ich das syntaktisch anpassen, in dem ich das doppelte Hochkomma durch ein einfaches Hochkomma ersetze
Wieso?
Informiere dich, wie man die "Anführungszeichen maskieren in PHP" kann.
MfG H☼psel
Mahlzeit Bertlmusch,
<?
Short-Open-Tags sind NIE eine gute Idee.
In der Index-Datei funktioniert das folgendermaßen:
<a href="javascript:void(0)" onclick="window.open('German_Info.htm', 'Noname', 'width=600px, height=250px, top=0px, left=0px'); return false;">Deutsch</a>Übernehme ich nun diese funktionierende Zeile in die Include-Datei,
Wieso solltest Du das tun? Habe ich Dich falsch verstanden, oder stehen in Deinen "Sprach-Includes" lediglich "Texte, Buttonbeschriftungen etc."? Was hat dann dort funktionaler Code zu suchen?
Du solltest also lediglich "German_Info.htm" und "Deutsch" jeweils passend "übersetzt" in die beiden Sprach-Includes einfügen und Deinen Code entsprechend ändern.
MfG,
EKKi
echo $begrüßung;
<?
Short-Open-Tags sind NIE eine gute Idee.
Die von dir verlinkte Handbuchstelle ist nicht so radikal wie du, sondern warnt nur vor dem Konflikt mit <?xml. Möchtest du das NIE noch weitergehend begründen (oder eine Begründung verlinken)?
Habe ich Dich falsch verstanden, oder stehen in Deinen "Sprach-Includes" lediglich "Texte, Buttonbeschriftungen etc."? Was hat dann dort funktionaler Code zu suchen?
Umwandlung von Werten gemäß regionaler Anforderungen erfordern auch funktionalen Code.
echo "$verabschiedung $name";
Mahlzeit dedlfix,
<?
Short-Open-Tags sind NIE eine gute Idee.Die von dir verlinkte Handbuchstelle ist nicht so radikal wie du, sondern warnt nur vor dem Konflikt mit <?xml. Möchtest du das NIE noch weitergehend begründen (oder eine Begründung verlinken)?
Nein, möchte ich nicht. Ich behaupte, dass allein schon die Verwechslungsgefahr mit anderen Tags, die für andere Funktionalitäten benötigt werden und gleich beginnen, sowie die mangelnde Übertragbarkeit von Code, der Short-Open-Tags verwendet, auf Server, die die Verwendung nicht erlauben, als Begründung ausreicht.
Nenne mir bitte im Gegenzug ein einziges Argument, das FÜR die Verwendung von Short-Open-Tags spricht (und "Schreibfaulheit", da ja drei Zeichen weniger getippt werden müssen, lasse ich zu Gunsten sauberen Codes nicht gelten).
Habe ich Dich falsch verstanden, oder stehen in Deinen "Sprach-Includes" lediglich "Texte, Buttonbeschriftungen etc."? Was hat dann dort funktionaler Code zu suchen?
Umwandlung von Werten gemäß regionaler Anforderungen erfordern auch funktionalen Code.
Das schon. Das ist im vorliegenden Fall aber nicht derselbige. Also ist es nicht sinnvoll, diesen HTML-Schnipsel samt eingebettenen Javascript "übersetzen" zu wollen ...
MfG,
EKKi
echo $begrüßung;
Nenne mir bitte im Gegenzug ein einziges Argument, das FÜR die Verwendung von Short-Open-Tags spricht (und "Schreibfaulheit", da ja drei Zeichen weniger getippt werden müssen, lasse ich zu Gunsten sauberen Codes nicht gelten).
Schreibfaulheit (7 Zeichen weniger) gepaart mit etwas erhöhter Übersichtlichkeit. Es gibt ja auch noch die Variante
<?=
gegenüber
<?php echo
Wenn man PHP als Template-Sprache verwendet und öfter zwischen PHP- und HTML-Mode wechseln möchte, ist das schon ein Vorteil.
Ob ein Code "sauber" oder nicht ist, ist nicht nur eine Sache der Short-Open-Tags.
Ansonsten preferiere auch ich die Lang-Variante (also <?php, nicht <script language="php">), ich habe nur etwas gegen Absolutismen, besonders wenn sie ohne Begründung vorgetragen werden. Denn dann weiß der Angesprochene nicht, warum ihm grad ein "Verbot" auferlegt wurde.
echo "$verabschiedung $name";
Da du auf deine eigentliche Frage bereits zwei Antworten herhalten hast, beschränke ich mich mal auf diesen Teil:
In der Index-Datei funktioniert das folgendermaßen:
funktionieren kann man das nicht nennen, die Lösung ist sogar äußerst defekt und zudem nicht auf Wiederverwendbarkeit ausgelegt und ein paar Dinge fehlen
defekt: ohne JavaScript funktionierts nicht
Wiederverwendbarkeit: du brauchst das sicher für jede Sprache, warum keine Funktion?
Fehlen: das lang-Attribut sowie ein ordentlicher Wert fürs href-Attribut
<a href="javascript:void(0)" onclick="window.open('German_Info.htm', 'Noname', 'width=600px, height=250px, top=0px, left=0px'); return false;">Deutsch</a>
ich würds so schreiben
<a href="deutsche_information.html" lang="de" onclick="return sprachinformationenpopup(this);">Deutsch</a>
function sprachinformationenpopup(element) {
window.open(element.href, 'sprachinformationen', 'width=600, height=600');
return false;
}
Anm: das top/left hab ich bewusst weggelassen, bei Mehrmonitor-Systemen oder wenn der Benutzer mit sehr großen Desktopdimensionen aber kleinen Fenstern surft, ist das sehr hinderlich wenn das Fenster links oben in einem für den benutzer nicht sichtbaren bereich verfrachtet wird.