css und php generierte Inhalte?
blaxx
- css
Hallo zusammen,
ich möchte die Darstellung von Inhalten (Text), die ich mit PHP in einem HTML Dokument generiere, mit einer externen CSS Datei bearbeiten.
Mein bisheriger Ansatz sieht in stark gekürzter Form so aus:
Datei ausgabe.php
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="expires" content="0" />
<link rel="stylesheet" type="text/css" href="../format.css" />
<title>blub</title>
</head>
<body>
<div class="sidebar">
<script language="php">
[code lang=php]
echo "<table>";
while($row = mysql_fetch_assoc($result)) {
echo "<tr>";
echo "<th>".$row['artikel_head1_'.$_GET['nav']]."</th>";
echo "</tr>";
echo "<tr>";
echo "<td>".$row['artikel_head2_'.$_GET['nav']]."</td>";
echo "</tr>";
}
echo "</table>";
</script>
<p>Bli Bla Blub</p>
</div>[/code]
[...]
Datei format.css
[...]
.sidebar {
font-size:large;
}
[...]
Das in der format.css definierte Format für die Schriftgröße wirkt sich nur auf "Bli Bla Blub" aus, nicht aber auf den Teil innerhalb des <script> Elements.
Muß ich die CSS Eigenschaften direkt in den echo Befehl einbauen oder gibt es eine Möglichkeit, den PHP generierten Inhalt mit einer externen CSS Datei zu gestalten?
Vielen Dank für Eure Hilfe schon im voraus,
blaxx
Hi
<script language="php">
</script>
_So_ habe ich ja noch nie php eingeleitet... aber gut, wenn's geht.
Das in der format.css definierte Format für die Schriftgröße wirkt sich nur auf "Bli Bla Blub" aus, nicht aber auf den Teil innerhalb des <script> Elements.
Muß ich die CSS Eigenschaften direkt in den echo Befehl einbauen oder gibt es eine Möglichkeit, den PHP generierten Inhalt mit einer externen CSS Datei zu gestalten?
Also eigentlich hätte ich auch gedacht, dass die Tabelle und somit auch die Zellen die Eigenschaften ihrer Eltern (des DIV) erben, aber scheinbar ist das nicht der Fall...
also wirst du es etwa so machen müssen:
echo '<th class="sidebar">'.$row['artikel_head1_'.$_GET['nav']]."</th>";
Bitte bemerke, dass ich deine doppelten Anführungszeichen (") durch einfache ((') auch Hochkomma genannt) ersetzte... sonst sollte aber auch das gehen:
echo "<th class=\"sidebar\">".$row['artikel_head1_'.$_GET['nav']]."</th>";
denke ich.
Auch dir ein herzliches Dankeschön für die Hilfsbereitschaft.
Hi
<script language="php">
</script>
_So_ habe ich ja noch nie php eingeleitet... aber gut, wenn's geht.
War gerade ein bisschen am experimentieren. Ich dachte mein CSS Problem hat damit zu tun, wie ich den PHP Teil einleite. Offenbar liegt der Fehler nicht dort. Inzwischen hab ich auch rausgefunden, dass das language Attribut veraltet ist. Es muß heißen <script type="text/php">. Zumindest steht das so hier in der Dokumentation.
Das in der format.css definierte Format für die Schriftgröße wirkt sich nur auf "Bli Bla Blub" aus, nicht aber auf den Teil innerhalb des <script> Elements.
Muß ich die CSS Eigenschaften direkt in den echo Befehl einbauen oder gibt es eine Möglichkeit, den PHP generierten Inhalt mit einer externen CSS Datei zu gestalten?
Also eigentlich hätte ich auch gedacht, dass die Tabelle und somit auch die Zellen die Eigenschaften ihrer Eltern (des DIV) erben, aber scheinbar ist das nicht der Fall...
Weiß hier vielleicht jemand weiter? Oder ist es so ausgefallen, was ich vorhabe?
also wirst du es etwa so machen müssen:
echo '<th class="sidebar">'.$row['artikel_head1_'.$_GET['nav']]."</th>";
Die Möglichkeit hab ich auch schon durch, leider ohne Erfolg. Selbst wenn ich in der CSS Datei ein Format für das <th>/<td> Tag definiere, reagiert der Browser nicht drauf.
Bitte bemerke, dass ich deine doppelten Anführungszeichen (") durch einfache ((') auch Hochkomma genannt) ersetzte... sonst sollte aber auch das gehen:
echo "<th class=\"sidebar\">".$row['artikel_head1_'.$_GET['nav']]."</th>";
denke ich.
Was genau der Unterschied zwischen " und ' ist, muß ich mir nochmal in einer ruhigen Minute durchlesen.
Danke Trotzdem,
Grüße,
blaxx
hi,
ich möchte die Darstellung von Inhalten (Text), die ich mit PHP in einem HTML Dokument generiere, mit einer externen CSS Datei bearbeiten.
Das jedwedes Darstellungproblem davon völlig unabhängig sein muss, weil der Client kein PHP interpretiert, sondern nur dessen Ausgabe zu sehen bekommt, solltest du dir klar machen.
<script language="php">
Wer benutzt das denn in der Realität?
Spricht irgendwas gegen das weit gebräuchlichere <?php ... ?>
Das in der format.css definierte Format für die Schriftgröße wirkt sich nur auf "Bli Bla Blub" aus, nicht aber auf den Teil innerhalb des <script> Elements.
Das dürfte daran liegen, dass dein Script eine Tabelle ausgibt.
Für Tabellen funktioniert die Vererbung was Schriftformatierungen angeht oftmals nicht, weil die Browser für Tabellen in ihren eigenen Defaultstylesheets explizite Angaben haben.
Muß ich die CSS Eigenschaften direkt in den echo Befehl einbauen oder gibt es eine Möglichkeit, den PHP generierten Inhalt mit einer externen CSS Datei zu gestalten?
Teste zuerst ohne jeglichen PHP-Schnickschnack, mit einem rein statischen HTML-Dokument.
Erst wenn du dieses wie gewünscht formatiert hast, erzeuge HTML dynamisch per Script. Achte dabei darauf, dass etwas gleichwertiges herauskommt.
gruß,
wahsaga
Danke für die rasche Antwort wahsaga,
hi,
ich möchte die Darstellung von Inhalten (Text), die ich mit PHP in einem HTML Dokument generiere, mit einer externen CSS Datei bearbeiten.
Das jedwedes Darstellungproblem davon völlig unabhängig sein muss, weil der Client kein PHP interpretiert, sondern nur dessen Ausgabe zu sehen bekommt, solltest du dir klar machen.
Jup hab ich mir klar gemacht. Hab ichs falsch rübergebracht? Sorry for that ...
<script language="php">
Wer benutzt das denn in der Realität?
Spricht irgendwas gegen das weit gebräuchlichere <?php ... ?>
Das hatte ich ne ganze Weile lang, bin dann aber irgendwo auf das <srcitp> Tag gestossen und dachte mir vielleicht hängt mein css Problem ja damit zusammen (bin noch nicht so fit und vieles läuft über trial&error). Gerade eben ist mir beim Validieren aufgefallen, dass es eigentlich heißen müßte <script type="php">, da das language attribut veraltet ist. Aber offensichtlich ist es Jacke wie Hose, wie man den php teil einleitet ...
Das in der format.css definierte Format für die Schriftgröße wirkt sich nur auf "Bli Bla Blub" aus, nicht aber auf den Teil innerhalb des <script> Elements.
Das dürfte daran liegen, dass dein Script eine Tabelle ausgibt.
Für Tabellen funktioniert die Vererbung was Schriftformatierungen angeht oftmals nicht, weil die Browser für Tabellen in ihren eigenen Defaultstylesheets explizite Angaben haben.
»»
Davon unabhängig funktionieren auch andere (=nicht Schriftformatierung) css eigenschaften nicht.
Muß ich die CSS Eigenschaften direkt in den echo Befehl einbauen oder gibt es eine Möglichkeit, den PHP generierten Inhalt mit einer externen CSS Datei zu gestalten?
Teste zuerst ohne jeglichen PHP-Schnickschnack, mit einem rein statischen HTML-Dokument.
Erst wenn du dieses wie gewünscht formatiert hast, erzeuge HTML dynamisch per Script. Achte dabei darauf, dass etwas gleichwertiges herauskommt.
Deshalb auch das <p> tag mit bliblablub. Das hat da eigentlich nichts verloren. Ich habs da nur hingeschrieben, um zu testen, ob die css Formatierung überhaupt anspringt. Bei statischen Inhalten verhält sie sich so, wie ich will, beim dynamischen Teil geht gar nichts.
gruß,
wahsaga
Trotzdem vielen Dank,
blaxx
Hallo
<script language="php">
Wer benutzt das denn in der Realität?
Spricht irgendwas gegen das weit gebräuchlichere <?php ... ?>Das hatte ich ne ganze Weile lang, bin dann aber irgendwo auf das <srcitp> Tag gestossen und dachte mir vielleicht hängt mein css Problem ja damit zusammen (bin noch nicht so fit und vieles läuft über trial&error). (...) Aber offensichtlich ist es Jacke wie Hose, wie man den php teil einleitet ...
Ich für meinen Teil handhabe es seit ich mit PHP angefangen habe so, dass ich gar kein "normales" HTML mehr ausgebe. Soll heißen, dass ich einfach ganz oben in jeder Datei ein <?php (oder in älteren Dateien noch ein <? ) und ganz am Ende ein ?> habe. Dazwischen gibt es keine dieser Tags.
Soll heißen viele meiner Dateien beginnen so:
<?
echo ('<html>'."\n");
echo ('<head>'."\n");
(...)
Ist aber natürlich Geschmackssache.
Deshalb auch das <p> tag mit bliblablub. Das hat da eigentlich nichts verloren. Ich habs da nur hingeschrieben, um zu testen, ob die css Formatierung überhaupt anspringt. Bei statischen Inhalten verhält sie sich so, wie ich will, beim dynamischen Teil geht gar nichts.
Wie sowohl wahsaga als auch ich dargestellt haben hat dein Problem nichts damit zu tun, ob der Inhalt statisch oder dynamisch ist, sondern damit, dass er in einer Tabelle steht.
Folgendes würde also funktionieren:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="expires" content="0" />
<link rel="stylesheet" type="text/css" href="../format.css" />
<title>blub</title>
</head>
<body>
<div class="sidebar">
<?php
while($row = mysql_fetch_assoc($result)) {
echo "<p>".$row['artikel_head1_'.$_GET['nav']]."</p>";
echo "<p>".$row['artikel_head2_'.$_GET['nav']]."</p>";
}
?>
<!--
<p>Bli Bla Blub</p>
-->
</div>
</body>
</html>
Hi
Deshalb auch das <p> tag mit bliblablub. Das hat da eigentlich nichts verloren. Ich habs da nur hingeschrieben, um zu testen, ob die css Formatierung überhaupt anspringt. Bei statischen Inhalten verhält sie sich so, wie ich will, beim dynamischen Teil geht gar nichts.
Wie sowohl wahsaga als auch ich dargestellt haben hat dein Problem nichts damit zu tun, ob der Inhalt statisch oder dynamisch ist, sondern damit, dass er in einer Tabelle steht.
Folgendes würde also funktionieren:
<body>
<div class="sidebar">
> ~~~php
> <?php
> while($row = mysql_fetch_assoc($result)) {
> echo "<p>".$row['artikel_head1_'.$_GET['nav']]."</p>";
> echo "<p>".$row['artikel_head2_'.$_GET['nav']]."</p>";
> }
> ?>
<!--
<p>Bli Bla Blub</p>
--></div>
</body>
</html>
Die beiden Spalten artikel\_head1\_de und artikel\_head2\_de sind nicht die einzigen mysql spalten, die ich ausgeben möchte. Das Recordset ($result) ist das Ergebnis von zwei join Befehlen (also drei Tabellen insgesamt). Manche Felder aus dem Set sollen nebeneinander, manche übereinander dargestellt werden.
Feld1 (artikel\_head1\_de)
Feld2 (artikel\_head2\_de)
Feld3 | Feld4 | Feld5 | Feld6
Feld1 (artikel\_head1\_de)
Feld2 (artikel\_head2\_de)
Feld3 | Feld4 | Feld5 | Feld6
usw.
Ich dachte mir, für sowas ist die Tabelle besser geeignet als <p>. Gibt es eine Lösung, die das berücksichtigt?
Ich dachte mir, für sowas ist die Tabelle besser geeignet als <p>. Gibt es eine Lösung, die das berücksichtigt?
Also im anderen Thread hast du dargelegt, dass das definieren einer td-Klasse nichts gebracht hat und auch das erweitern des td-Elements mit der Klasse auch nichts...
Dann bleiben noch folgende Lösungsmöglichkeiten:
1. Keine Tabelle nutzen, denn ich habe den Eindruck du stellst hier nicht wirklich tabellarische Daten dar. Nimm doch divs dafür.
<div>
<p>Feld1</p>
<p>Feld2</p>
<div>Feld3</div><div>Feld4</div><div>Feld5</div><div>Feld6</div>
<br />
</div>
nutze hierzu das CSS-Element "float".
2. Doch eine Tabelle nutzen und jede Zelle intern nocheinmal mit einem unsichtbaren, rahmenlosen, abstandslosen DIV füllen.
<tr>
<td colspan="4"><div>Feld1</div></td>
</tr>
<tr>
<td colspan="4"><div>Feld2</div></td>
</tr>
<tr>
<td><div>Feld3</div></td>
<td><div>Feld4</div></td>
<td><div>Feld5</div></td>
<td><div>Feld6</div></td>
</tr>
Unschön, dürfte aber funktionieren.
Und nun noch zu " und '
Also es gibt Unterschiede, mit denen du dich beschäftigen solltest. Für den Anfang reicht aber vieleicht folgendes:
in einfache Anführungszeichen lassen sich keine Variabeln direkt eingliedern:
echo ("Die Zahl lautet $i");
geht
echo ('Die Zahl lautet $i');
geht nicht (bzw. gibt genau das aus also Dollar-i nicht etwa den Wert darin).
Das Selbe gilt für Steuerzeichen ("\n" geht '\n' geht nicht).
Nützlich ist diese Unterscheidung auch, wenn man das jeweils andere Zeichen ausgeben will. Um doppelte Anführungszeichen auszugeben kann man also
echo ('"'); nutzen.
Aus diesem Grund benutze ich für HTML- oder XML-Ausgaben _immer_ die einfachen Anführungszeichen, weil man für die ganzen Attribute eben doppelte Anführungszeichen braucht, die man sonst aufwendig escapen müsste.
<div>
<p>Feld1</p>
<p>Feld2</p>
<div>Feld3</div><div>Feld4</div><div>Feld5</div><div>Feld6</div>
<br />
</div>
nutze hierzu das CSS-Element "float".
- Doch eine Tabelle nutzen und jede Zelle intern nocheinmal mit einem unsichtbaren, rahmenlosen, abstandslosen DIV füllen.
<tr>
<td colspan="4"><div>Feld1</div></td>
</tr>
<tr>
<td colspan="4"><div>Feld2</div></td>
</tr>
<tr>
<td><div>Feld3</div></td>
<td><div>Feld4</div></td>
<td><div>Feld5</div></td>
<td><div>Feld6</div></td>
</tr>
Unschön, dürfte aber funktionieren.
»»
Vielen Dank. Werd Dich morgen mal wissen lassen, obs funktioniert hat.
Und nun noch zu " und ' ...
Ja die escaperei ist nervig und unübersichtlich. Wenn ich mich recht entsinne bin ich auf " umgestiegen, als ich im SELECT einfache Anführungszeichen innerhalb von doppelten brauchte $sql="SELECT ... '".$var."' ... "
Muß morgen mal testen, ob das auch mit deiner Variante klappt, heut ist es zu spät geworden.
Grüße und angenehme Nachtruhe,
blaxx