Wohin mit PHP-Code in einer XHTML Seite
Yin
- php
Hi,
erstelle eine Login-Bereich mit diesem Tutorial.
Generell stellt sich mir die Frage, wo ich PHP code (der zum Teil auch html code erzeugt) in das Grundgerüst meiner XHTML Datei packen soll.
Kommt das üblicherweie zwischen Ende head und Anfang body oder in den header oder ganz woanders hin?
Möglich wäre ja auch, das Grundgerüst auch komplett durch PHP erzeugen zu lassen
<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Beschreibung der Seite</title>
</head>
<body>
</body>
</html>
Den PHP-Code kann man grundsätzlich hinschreiben wo man will. Ich persönlich schreibe ihn meistens an den Anfang der Seite.
Wenn der PHP-Code HTML-Code erzeugen soll, kann man das z.B. so machen:
Anfang der Seite:
<?php
$inhalt="Test";
?>
Im HTML-Code:
<html>
<body>
<?php echo $inhalt ?>
~~~html
</html>
</body>
So wird der Code oben erzeugt und dann über Variablen in den HTML-Code gebracht.
hi,
grundsätzlich kannst du machen (trennung von datenerfassung und ausgabe):
<?php
$user = MyDataClass::getUser();
$tasks = MyDataClass::getTasks();
?>
<html>
<p>hallo <i><?php echo $user?></i></p>
<ul>
<?php foreach($tasks as $task):?>
<li><?php echo $task?></li>
</ul>
<?php endforeach;?>
</html>
ungetestet.
mfg
tami
Hi,
habe gerade mal das hier gemacht und so erhalte ich valide XHTML Dateien und der Code bleibt auch noch übersichtlich:
<?php
echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n";
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"de\" lang=\"de\">\n";
echo "<head>\n";
echo "<title>Registrierung</title>\n";
echo "</head>\n";
echo "<body>\n";
//Seiteninhalt mit PHP erzeugt
echo "</body>\n</html>";
?>
Viele Grüße
Yin
Om nah hoo pez nyeetz, Yin!
Es ist nur unsäglicher Schreibaufwand, wenn jede Zeile ge-echot wird.
Matthias
Om nah hoo pez nyeetz, Yin!
:-)
Es ist nur unsäglicher Schreibaufwand, wenn jede Zeile ge-echot wird.
Ja, ist es und ich wüsste auch gerne wie man das anders macht, aber folgendes Beispiel:
Ein Login-Formular soll sich selbst überprüfen und Fehelreingaben etc. direkt aufzeigen. Im Grunde so wie in diesem Tutorial:
Link zum Tutorial
Also muss ich defakto die Anzeige des Formulars case-sensitiv machen, also in eine If Then Else Überprüfung packen.
Und damit das Formular dann bei erfüllter Bedingung X auch auf der Seite erscheint, muss ich den Code für das Formular mit echo ausgeben...
Viele Grüße
Yin
Tach!
Es ist nur unsäglicher Schreibaufwand, wenn jede Zeile ge-echot wird.
Ja, ist es und ich wüsste auch gerne wie man das anders macht, aber folgendes Beispiel:
Also muss ich defakto die Anzeige des Formulars case-sensitiv machen, also in eine If Then Else Überprüfung packen.
Zwei Wege bieten sich da an. Der erste hört auf die Namen Heredoc und Nowdoc (bei Strings zu finden) und der zweite heißt alternative Kontrollstruktur-Syntax (oberes Beispiel). Letzeres ist näher an der PHP-Philosophie der eingebetteten Sprache dran.
dedlfix.
In diesem Zusammenhang gefunden und hilfreich für alle, die sich die gleiche Frage stellen:
Heredoc und Nowdoc - eine gute Erläuterung
und
Unterschied Single und Double Quotes
Viele Grüße
Yin
hi,
;-). ja, das geht auch. aber willst du ganz viel html- oder xml-code mit php ausgeben (ohne das entsprechende syntaxhighlighting?), oder willst du ein bisschen php-code ins html schreiben, weil php genau dafür gemacht wurde?
große frameworks, wie das zend-framework, machen das auch so.
mfg
tami
Moin,
Möglich wäre ja auch, das Grundgerüst auch komplett durch PHP erzeugen zu lassen
Idealerweise erzeugst Du das "Grundgerüst" als Template und hast den Code getrennt davon. Beginne die Datei mit
<?php
// code
?>
<!-- XML/HTML Template -->
dann hast Du auch die Möglichkeit, eigene Header zu erzeugen, was sonst nicht mehr möglich ist (wichtig für Login's mit session_start() und spätere Location-Header).
Alles, was ins "Template" soll und mit Code erzeugt wird, gibtst Du entweder mit echo() da rein, oder mit einer Callbackfunktion (Listen, Tabellen...).
Hotti
Hi,
Generell stellt sich mir die Frage, wo ich PHP code (der zum Teil auch html code erzeugt) in das Grundgerüst meiner XHTML Datei packen soll.
das ist die falsche Frage. Die Frage muss lauten: Wie trenne ich am Besten Programmierlogik und (HTML)-Output voneinande? Oder anders: wo innerhalb meiner Applikation packe ich meinen HTML-Code hin? Auch bei (anfänglich) kleinen Projekten sollte man eine strikte Trennung von Logik und Ausgabe einhalten. Das erleichtert die Arbeit und Pflege der Software ungemein.
Tach!
Generell stellt sich mir die Frage, wo ich PHP code (der zum Teil auch html code erzeugt) in das Grundgerüst meiner XHTML Datei packen soll.
das ist die falsche Frage. Die Frage muss lauten: Wie trenne ich am Besten Programmierlogik und (HTML)-Output voneinande? Oder anders: wo innerhalb meiner Applikation packe ich meinen HTML-Code hin? Auch bei (anfänglich) kleinen Projekten sollte man eine strikte Trennung von Logik und Ausgabe einhalten. Das erleichtert die Arbeit und Pflege der Software ungemein.
Ja, wobei ich zu unterscheiden vorschlage, zwischen der Datenverarbeitungslogik und der Darstellungslogik. Wenn man tabellarische oder anderweitige Massendaten auszugeben hat, gehört für mich die Schleife dafür zur Ausgabelogik. Anderenfalls müsste man im Geschäftslogikteil auch dafür sorgen, dass die für diese Wiederholung benötigten Teile des Templates mit den Daten zusammengebracht werden. Damit hat man nicht nur eine Schnittstelle zwischen den Daten und dem Ausgabeteil sondern noch eine weitere Abhängigkeit für diese Massendaten, denn die in der Geschäftslogik untergebrachte Ausgabelogik muss nun auch noch die Elemente des Template kennen, in die die Daten geschrieben werden müssen.
dedlfix.