Guten Abend ^^
Ich habe eine kleine Anfängerfrage bezüglich des Multiline Echos unter
PHP. Und zwar möchte ich per Echo meinen HTML Code, und Variablen von
PHP mit ausgeben lassen. Normalerweise ist das absolut kein Thema, aber
irgendwie bekomme ich das mit dem Multiline-Echo momentan nicht so
gebacken, wie ich mir das vorstelle, und wollte daher um einen Tipp
bitten.
1
$row = [[ARRAY aus einer SQL Tabelle]]
2
echo $row["id"]; //gibt z.B. "1" aus
3
echo $row["type"]; //gibt z.B. "33" aus etc...
4
5
//Problem Beispiel:
6
7
echo <<<ENDE
8
<table border="$row["border"]">
9
<tr>
10
<td>$row["foo"]</td>
11
<td>$row["bar"]</td>
12
<td>$row["baz"]</td>
13
</tr>
14
</table>
15
ENDE;
Ich wechsel bei Projekten zwischen einigen Sprachen umeinander, aber
richtig beherrschen tuhe ich momentan noch keine - Ich gehe mal davon
aus, dass es nur ein kleines Syntax Problemchen ist, aber ich komme
leider nicht von selber drauf.
Gruß
Mit dem gekürztem Code, so wie er im Beispiel aus dem vorherigen Post
beschrieben ist, bekomme ich folgende Fehlermeldung:
Parse error: syntax error, unexpected '"', expecting identifier
(T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in FILENAME
on line XX
Hier gäbe es noch viele weitere Wege.
da musst du das für dich ubersichtlichste finden.
Tip: ließ dir mal durch, welche unterscheide ' und " haben. (Single
quotes vs double quotes)
Markus Borti schrieb:> Tip: ließ dir mal durch, welche unterscheide ' und " haben. (Single> quotes vs double quotes)
Okay in double Quotes kann man $Variablen einbauen, und sie sind etwas
langsamer als single Quotes, wolltest du darauf hinaus ???
Markus Borti schrieb:> echo '<td>'.$row["baz"].'</td>';Leo-andres H. schrieb:> <HTML>> <?php echo $data; ?>> </HTML>
Beide Wege wollte ich eigentlich vermeiden, wegen der komplexeren
Schreibweise und der Übersichtlichkeit halber. Dennoch danke für die
Tipps. Gibt es nicht eine Multiline-Alternative, wie Print, oder am
besten einen anderen Syntax fürs Echo, um Multilines zu verwirklichen???
Gerne auch über eine Methode oder Class !?? Kann mir da evtl jemand auf
die Sprünge helfen ??
Timmey S. schrieb:> Beide Wege wollte ich eigentlich vermeiden, wegen der komplexeren> Schreibweise und der Übersichtlichkeit halber. Dennoch danke für die> Tipps. Gibt es nicht eine Multiline-Alternative, wie Print, oder am> besten einen anderen Syntax fürs Echo, um Multilines zu verwirklichen???> Gerne auch über eine Methode oder Class !?? Kann mir da evtl jemand auf> die Sprünge helfen ??
der saubere und vernünftige weg es mit php zu machen ist:
1
<table border="<?php echo $row["border"]; ?>">
2
<tr>
3
<td><?php echo $row["foo"]; ?></td>
4
<td><?php echo $row["bar"]; ?></td>
5
<td><?php echo $row["baz"]; ?></td>
6
</tr>
7
</table>
evtl suchst du soetwas wie Smarty ... allerdings ist der obere weg
üblich und durch die verwendung von entwurfsmustern wie MVC sehr sauber
zu implementieren
Andi D. schrieb:> der saubere und vernünftige weg es mit php zu machen...
Okay dann werde ich das so übernehmen / anpassen.
Dankeschön, und gute Nacht.
Sollte funktionieren wie gewünscht, wieso der andere Weg "vernünftiger"
oder "sauberer" ist kann ja Andi nochmal erklären ;-)
Wirklich besser wäre, wie vorgeschlagen, etwas wie Smarty zu verwenden
und nicht PHP direktiven und HTML zu mischen, das macht den Code weitaus
lesbarer und wartbarer.
Das mag ja alles toll und hip sein, hilft dem TE aber nicht wenn sein
Hoster nur PHP anbietet, oder er es gerne benutzen möchte.
Außerdem kann man in PHP genauso 'vernünftig' Programmieren wie in
anderen Sprachen.
Ebenso wie man in 'vernünftigen' Sprachen viel Unsinn treiben kann.
Timmey S. schrieb:> irgendwie bekomme ich das mit dem Multiline-Echo momentan nicht so> gebacken, wie ich mir das vorstelle
Und wie stellst Du Dir das vor?
"Multiline" lässt ja mehrere Zeilen annehmen; Dein Tabellenausgabecode
aber erzeugt eine Tabelle mit einer Zeile und drei Spalten.
ich glaube du solltest deine Variablen in den Multilines kapseln mit den
geschweiften Klammern, da du da Arrays verwendest.
also:
...<table border="{$row["border"]}">...
da du aber bei einer Tabelle in der Regel dynamische Zeilen generierst,
ist dein Ansatz nicht gut, da du ja nur deine kleine Tabelle damit
rausschreibst. Weitere Zeilen lassen sich so nicht mehr erzeugen.
Daher ist eine Lösung wie oben empfohlen besser.
Obwohl sich ja hierbei keine Einigkeit herscht.
ob
HTML<?php echo $var ?>HTML
oder
<?php echo 'HTML'.$var.'HTML'; ?>
besser ist, kann sicherlich nur unter Performancebetrachtung bewertet
werden.
und mal so nebenbei: Lass dich nicht beirren, PHP hat genau so seine
Berechigung wie auch die anderen Sprachen zur webbasierten Ausgabe :)
lg Henry
Zurück zu PHP: Wenn die Tabellen größer sind, lohnt es sich, das ganze
in Funktionen aufzusplitten, um HTML dynamisch zu erzeigen und CSS
dynamisch anzupassen. Ich habe mir das z.B. für eine Messwertanzeige so
gemacht:
tab_open (m. Parameteren für Breite, Spaltenanteile, Hintergrundfarbe
etc)
tab_ropen (f. row)
tab_cell (f. Zelle)
tab_rclose (f. row)
tab_close
und einige globale Variablen für Schriftart-, Größe, Farbe usw.
Das sieht am Anfang nach maßlosem Overkill aus, aber spätestens nach der
vierten Tabelle mit 10 Spalten, weiss man, was man hat - z.B. ein
übersichtliches und kompaktes Main-Programm ohne ständigen
Kontextwechsel zwischen PHP und HTML ...
hallo,
betreffend der ursprünglichen frage:
multiline echos haben ihren reiz, offizell ist das die "here
document"-Syntax.
arrayzugriffe darin muss man aber mit geschweiften klammern markieren.
so funktioniert es:
die keys muss man eimal vorbelegen (Wie auch immer) - danach hat man
aber immer vollständige ausgaben in einer zeile, egal wieviele spalten
pro zeile vorgesehen sind