einbinden von HTML in PHP
Stefan
- meinung
Hallöchen,
und wieder einmal ein Frage:
wenn ich eine php-Datei habe, in der ich diverse Sachen mache (z.B. DB auslesen, Schleifen, usw.) und dann die Sachen am Bildschirm ausgeben möchte, wie ist es dann sauber?
1.
<?php include("data.php"); ?>
<html>
<head>
<link rel=stylesheet type="text/css" href="style.css">
<?php
$id = $_GET['id'];
$abfrage = "SELECT * FROM tabelle WHERE id LIKE $id";
$ergebnis = mysql_query($abfrage);
$tabelle = mysql_fetch_object($ergebnis);
mysql_close($connect);
?>
</head>
<body>
<h1>
<?php echo "$tabelle->titel"; ?>
</h1>
2.
<?php
include("data.php");
echo "<html>";
echo "<head>";
echo "<link rel=stylesheet type="text/css" href="style.css">";
$id = $_GET['id'];
$abfrage = "SELECT * FROM tabelle WHERE id LIKE $id";
$ergebnis = mysql_query($abfrage);
$tabelle = mysql_fetch_object($ergebnis);
mysql_close($connect);
echo "</head>";
echo "</body>";
echo "<h1>";
echo "$tabelle->titel";
echo "</h1>";
?>
3.
<?php
include("data.php");
echo ("<html><head><link rel=stylesheet type='text/css' href='style.css'>");
$id = $_GET['id'];
$abfrage = "SELECT * FROM tabelle WHERE id LIKE $id";
$ergebnis = mysql_query($abfrage);
$tabelle = mysql_fetch_object($ergebnis);
mysql_close($connect);
echo ("</head><body><h1>$tabelle->titel"</h1>");
?>
Was denkt Ihr *g* darüber?
Guten Morgen,
und wieder einmal ein Frage:
wenn ich eine php-Datei habe, in der ich diverse Sachen mache (z.B. DB auslesen, Schleifen, usw.) und dann die Sachen am Bildschirm ausgeben möchte, wie ist es dann sauber?
Alle drei von dir vorgestellten Varianten sind IMO suboptimal. Gewöhne dir an, das Eingabe-Verarbeitung-Ausgabe-Schema, nach dem _jedes_ Programm "geordnet" sein sollte, zu verwenden.
Also in etwa so:
<?php
//Import der Funktionsbibliotheken
//Einlesen der Globalvariablen, die benötigt werden in normale Skalare.
//Verarbeiten der Informationen
//Debugging
//Ausgeben der generierten HTMl-Seite
?>
Grüße aus Barsinghausen,
Fabian
Huhu!
Also in etwa so:
<?php
//Import der Funktionsbibliotheken
//Einlesen der Globalvariablen, die benötigt werden in normale Skalare.
//Verarbeiten der Informationen
//Debugging
//Ausgeben der generierten HTMl-Seite
?>
Debugging? Wozu brauche ich das denn zur Anzeige?
Zum Ausgeben: wenn ich zum Beispiel ein Änderungsformular habe, in dem Radiobuttons vorkommen, möchte ich später den, der in der DB gewählt wurde aktivieren. Da kann ich doch erst zwischen der Ausgabe eine If-Abfrage machen, oder?
Stefan
Huhu!
Huhu! :)
Also in etwa so:
<?php
//Import der Funktionsbibliotheken
//Einlesen der Globalvariablen, die benötigt werden in normale Skalare.
//Verarbeiten der Informationen
//Debugging
//Ausgeben der generierten HTMl-Seite
?>Debugging? Wozu brauche ich das denn zur Anzeige?
Um sicherzustellen, dass _alle_ Funktionen (oder schreibst du etwa alles in einer Funktion...?) was ordentliches zurückgegeben haben und kein Müll in deiner Text-Variable steht. Woie gesagt: Muss man nicht machen, bei einigermaßen ordentlichen CM-Systemen sollte es aber schon drin sein.
Zum Ausgeben: wenn ich zum Beispiel ein Änderungsformular habe, in dem Radiobuttons vorkommen, möchte ich später den, der in der DB gewählt wurde aktivieren. Da kann ich doch erst zwischen der Ausgabe eine If-Abfrage machen, oder?
Ja. Du kannst natürlich auch den gesamten generierten HTML-Code in _eine_ Variable packen und zum Schluss _einmal_ ausgeben.
Grüße aus Barsinghausen,
Fabian
Hallo,
Ich würde die Ausgabe nicht in einer Zeile machen, da dann die Übersicht verloren geht. Solange man mit PHP Zeilenumbrüche erzeugen kann, sollte man sie auch nutzen.
Heiner
Hallo,
Ich würde die Ausgabe nicht in einer Zeile machen, da dann die Übersicht verloren geht. Solange man mit PHP Zeilenumbrüche erzeugen kann, sollte man sie auch nutzen.
Erzeugen kann ich diese ja mit \n ... würdest Du es denn dann in einer Zeile schreiben? So spart man sich doch wenigstens bei so einfachen Dingen wie <html> die ganzen echos.
Stefan
Hi!
Erzeugen kann ich diese ja mit \n ... würdest Du es denn dann in einer Zeile schreiben? So spart man sich doch wenigstens bei so einfachen Dingen wie <html> die ganzen echos.
Verwende keion echo um solche Dinmhge auszugeben. Für größere zusammenhängende Teile HTML solltest Du einfach in den HTML-Modus wechseln, also
<?php
// php
?
<!-- html... -->
<?php
//php
?>
Ich würde echo nur verwenden, wenn Variablen im Spiel sind, oder wirklich nur ganz wenig ausgegeben wird.
Grüße
Andreas
Hi!
und wieder einmal ein Frage:
wenn ich eine php-Datei habe, in der ich diverse Sachen mache (z.B. DB auslesen, Schleifen, usw.) und dann die Sachen am Bildschirm ausgeben möchte, wie ist es dann sauber?
Wenn Du es wirklich sauber haben willst, trenne Design und "business-logic", indem Du z.B. eine Template.Engine verwendest, z.B. smarty(http://smarty.php.net/):
datei.php:
<?php
require_once('smarty.class.php');
require_once('data.php');
$id = $_GET['id'];
$abfrage = "SELECT * FROM tabelle WHERE id LIKE $id";
$ergebnis = mysql_query($abfrage);
$tabelle = mysql_fetch_object($ergebnis);
mysql_close($connect);
$tpl = new Smarty;
$tpl->assign('titel',$tabelle->titel);
$tpl->display('datei.tpl');
?>
datei.tpl:
<html>
<head>
<link rel=stylesheet type="text/css" href="style.css">
</head>
<body>
<h1>
{$titel}
</h1>
Was denkt Ihr *g* darüber?
Das lohnt sich vielleicht nicht bei kleiner Projekten, aber wenn es ein paar mehr Seiten werden ist das so erheblich angenehmer und besser wartbar.
Sonst stimme ich Fabian im Prinzip zu, was ich noch ergänzen würde: das besondere an PHP ist ja gerade die Möglichkeit, PHP-Code mit <?php ?> in HTML-Dateien einzubinden. Davon sollte man auch Gebrauch, zumal das auch die perforemanteste Variante ist, wenn man eben keine Templates einsetzen will. Smarty ist IMHO eine sehr gute Template-Engine, dazu noch gut dokumentiert und Teil von php.net.
Grüße
Andreas
PS: Obiger Code ist nicht getestet und funktioniert nur wenn die smarty Klasse an korrekter Stelle entsprechend vorhanden ist (Smarty ist komplett in PHP geschrieben)
Hallo!
und wieder einmal ein Frage:
wenn ich eine php-Datei habe, in der ich diverse Sachen mache (z.B. DB auslesen, Schleifen, usw.) und dann die Sachen am Bildschirm ausgeben möchte, wie ist es dann sauber?Wenn Du es wirklich sauber haben willst, trenne Design und "business-logic", indem Du z.B. eine Template.Engine verwendest, z.B. smarty(http://smarty.php.net/):
Vielen Dank für den Hinweis.
Gibt es dazu nur eine englische Doku?
Ich habe derzeit etwas über 100 Seiten in meinem Projekt, würde sich das da lohnen?
Stefan
OK, die deutsche Doku hab ich dann doch schon gefunden *g*!
Hi!
Vielen Dank für den Hinweis.
Gibt es dazu nur eine englische Doku?
hast Du ja bereits gefunden ;-) Aber bedenke dass die englische oft aktueller ist, also bei Problemen auch mal da reinschauen.
Auf der verlinkten Seite findest Du ne Menge zusätzlicher Hilfen, ein paar Beispiele:
http://smarty.php.net/crashcourse.php
http://smarty.incutio.com/
http://smarty.incutio.com/?page=SmartyFrequentlyAskedQuestions
http://smarty.php.net/resources.php?category=0
Ich habe derzeit etwas über 100 Seiten in meinem Projekt, würde sich das da lohnen?
Auf jeden Fall. Kann man sich einiges mit erleichtern, es wird einfacher zu debuggen und zu warten... so schön das ist dass man im PHP HTML + PHP-Code eifnach mischen kann, aber bei größeren Projekten wird das sehr unübersichtlich. Lies auch mal: http://smarty.php.net/whyuse.php hierzu.
Grüße
Andreas
hi,
und wenn du längere html-bereiche ausgeben willst, in denen ab und zu mal eine php-variable eingesetzt werden soll, empfiehlt sich die HERE DOC(UMENT)-syntax.
so brauchst du nicht -zig echos verwenden, kannst den code trotzdem im php-code schön strukturiert hinschreiben, und erhältst auch eine schön strukturierte ausgabe.
http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
gruss,
wahsaga
Hallo wahsaga,
und wenn du längere html-bereiche ausgeben willst, in denen ab und zu mal eine php-variable eingesetzt werden soll, empfiehlt sich die HERE DOC(UMENT)-syntax.
Warum? Welchen Vorteil hat heredoc im Vergleich zur Methode, welche PHP als Präprozessor nutzt, siehe Andreas' Postings?
so brauchst du nicht -zig echos verwenden, kannst den code trotzdem im php-code schön strukturiert hinschreiben, und erhältst auch eine schön strukturierte ausgabe.
Wieso sollte man längere Markup-Passagen überhaupt im PHP-Code notieren und dann auch noch parsen lassen, obwohl nur ab und zu Variablen ausgegeben werden?
Mathias
hi,
Warum? Welchen Vorteil hat heredoc im Vergleich zur Methode, welche PHP als Präprozessor nutzt, siehe Andreas' Postings?
es schreibt sich m.e. einfacher, als wenn man für jede werteausgabe den php-bereich wieder öffnen und schliessen muss.
Wieso sollte man längere Markup-Passagen überhaupt im PHP-Code notieren und dann auch noch parsen lassen, obwohl nur ab und zu Variablen ausgegeben werden?
macht es einen grossen unterschied, ob nun ein text nach dem auftauchen eines dollarzeichens gefolgt von einem variablennamen durchsucht werden muss, oder nach einem erneuten öffnen des php-bereiches?
gruss,
wahsaga
Hi!
Wieso sollte man längere Markup-Passagen überhaupt im PHP-Code notieren und dann auch noch parsen lassen, obwohl nur ab und zu Variablen ausgegeben werden?
macht es einen grossen unterschied, ob nun ein text nach dem auftauchen eines dollarzeichens gefolgt von einem variablennamen durchsucht werden muss, oder nach einem erneuten öffnen des php-bereiches?
Performance-mäßig schon, durchaus.
Grüße
Andreas