Zweite Zeile (Tabelle) einfärben (Datenbankausgabe)
Dario
- css
Hallo. Also es geht um folgendes erstmal:
<?php
$dbLink=mysql_connect('.','.','.');
mysql_select_db('.',$dbLink);
$abfrage='SELECT
ID,
Syntax,
Bedeutung,
Beispiel
FROM
jobj
ORDER BY
Syntax ASC';
$ergebnis=mysql_query($abfrage);
?>
<table width="500" border="1">
<tr>
<th>Syntax</th>
<th>Bedeutung</th>
<th>Beispiel</th>
</tr>
<?php
while($row=mysql_fetch_object($ergebnis)){
echo '<tr>'."\r\n";
echo '<td>'.$row->Syntax.'</td>'."\r\n";
echo '<td>'.$row->Bedeutung.'</td>'."\r\n";
echo '<td>'.$row->Beispiel.'</td>'."\r\n";
echo '<tr>'."\r\n";
}
?>
</table>
Ist jetzt durch das kopieren udn einfügen einw enig unformatiert keine ahnung warum o.O
Wie auch immer. Ich habe wie ihr sehen könnt in der mysql tabelle jobj inhalte (Syntax, Bedeutung, Beispiel) eingefügt. Nun denn ich gib das ganze in einer Tabelle aus, klappt auch super dennoch habe ich das Problem, dass die Tabelle ziehmlich langweilig aussieht.
Die wohl bekannteste Frage zu der ich keine richtige Antwort gefunden habe, ich möchte jede zeite Zeile einfärben. Ich habe viel gegoogelt, dennoch habe ich nie was in Verbindung mit einer Datenbankausgabe gefunden. Ich bin mir nun nicht sicher wie ich das ganze bewerkstelligen soll.
Könnt ihr mir da helfen?
Gruß Dario
Hi,
Die wohl bekannteste Frage zu der ich keine richtige Antwort gefunden habe, ich möchte jede zeite Zeile einfärben. Ich habe viel gegoogelt, dennoch habe ich nie was in Verbindung mit einer Datenbankausgabe gefunden.
Wenn ich bspw. mal kurz nach tabelle zeilen abwechselnd farbig google, finde ich als ersten Treffer gleich einen Thread aus dem hiesigen Archiv, der das Thema behandelt.
Und ob das "in Verbindung mit einer Datenbankausgabe" geschieht, oder ob eine Schleife ueber sonstwas anderes laeuft, hat mit dem dahinter stehenden Prinzip nichts zu tun.
MfG ChrisB
Hallo,
ich mache es so:
.bggrau {background:#eee}
$farbe = 0;
while($row=mysql_fetch_object($ergebnis)){
if ( $farbe ) {
$farbe = 0;
echo '<tr>'."\r\n";
}
else
{
$farbe = 1;
echo '<tr class=bggrau>'."\r\n";
}
echo '<td>'.$row->Syntax.'</td>'."\r\n";
...
}
LG Kalle
Hallo,
ich mache es so:
.bggrau {background:#eee}
$farbe = 0;
while($row=mysql_fetch_object($ergebnis)){
if ( $farbe ) {
$farbe = 0;
echo '<tr>'."\r\n";
}
else
{
$farbe = 1;
echo '<tr class=bggrau>'."\r\n";
}
echo '<td>'.$row->Syntax.'</td>'."\r\n";
...
}
>
> LG Kalle
Ich werde es morgen einmal versuchen. Danke vielmals.
Mahlzeit Kalle_B,
ich mache es so:
Ich nicht. Und zwar da eine Benennung wie ...
.bggrau {background:#eee}
... höchst unsinnvoll ist. Was ist, wenn nun jede zweite Zeile statt grau lieber pflaumenlila oder kirschrosa dargestellt werden soll?
Wenn Du schon mit Klassen arbeitest, dann benenne diese vernünftig, z.B. "odd" und "even" (oder ähnlich bzw. in der Sprache Deiner Wahl).
MfG,
EKKi
Hallo, EKKi,
ich mache es so:
wenn ich dann PHP und HTML in einer Datei vermische, muss ich ja in _dieser_ Datei über die Farbe entscheiden. bggrau lässt sich per Editor ja schnell in bghgelb (hellgelb) ändern.
Und class=odd müsste dann im ganzen Projekt dieselbe Hintergrundfarbe haben, wenn ich mal voraussetze, dass es eine zentrale CSS- Datei gibt.
Warum diese Einschränkung?
Kalle
Mahlzeit Kalle_B,
wenn ich dann PHP und HTML in einer Datei vermische, muss ich ja in _dieser_ Datei über die Farbe entscheiden. bggrau lässt sich per Editor ja schnell in bghgelb (hellgelb) ändern.
Das mag sein. Allerdings hat eine Angabe wie "bghgelb" genauso wenig etwas im HTML zu suchen wie "bggrau" - Darstellung ist nicht Aufgabe von HTML, sondern von CSS. HTML ist nur für die Strukturierung von Daten da, also sollten sich im HTML-Code allerhöchstens Informationen zur Struktur finden. Wie etwas aussieht, hat jedoch nichts mit der Struktur zu tun.
Außerdem müsstest Du, wenn Du den Tabellenzeilen lediglich ihrer Struktur entsprechende Klassennamen wie z.B. "odd" und "even" vergibst, nur an einer einzigen Stelle etwas ändern, wenn sie anders aussehen sollen: nämlich an der Stelle im CSS, wo das Aussehen von Tabellenzeilen mit diesen Klassen definiert ist.
Und class=odd müsste dann im ganzen Projekt dieselbe Hintergrundfarbe haben, wenn ich mal voraussetze, dass es eine zentrale CSS- Datei gibt.
Nein, müsste es nicht. Je nachdem, welche anderen Klassen eine Tabellenzeile noch hat, welche Klasse/ID der <tbody> hat, in dem sie sich befindet, welche Klasse/ID die <table> hat, in der sie sich befindet oder ob weitere "äußere" Elemente spezifische Eigenschaften haben, kann man speziellen Tabellenzeilen sehr wohl spezielle Farben verpassen.
Z.B. kann die folgende Tabellenzeile:
<body id="foo">
[...]
<table>
[...]
<tr class="even">
[...]
</tr>
[...]
</table>
[...]
</body>
ganz anders aussehen als diese:
<body>
[...]
<form>
[...]
<table class="bar">
[...]
<tr class="even">
[...]
</tr>
[...]
</table>
[...]
</form>
[...]
</body>
Warum diese Einschränkung?
Keine Einschränkung, sondern eine klarere und logischere Struktur.
MfG,
EKKi
Wenn Du schon mit Klassen arbeitest, dann benenne diese vernünftig, z.B. "odd" und "even" (oder ähnlich bzw. in der Sprache Deiner Wahl).
und wenn man jede dritte zeile (bzw einen dreierwechsel) haben möchte, meinetwegen auch n0, n1 und n2 (oder n1, n2 und n3)
@@Dario:
Fähige Browser verstehen die Selektoren 'tr:nth-child(odd)' und 'tr:nth-child(even)'. [CSS3-SELECTORS §6.6.5]
Fähig sind Opera und Webkits (Safari, Chrome); Firefox ab 3.1.
Live long and prosper,
Gunnar
Fähige Browser verstehen die Selektoren '
tr:nth-child(odd)' und 'tr:nth-child(even)'. [CSS3-SELECTORS §6.6.5]
ich bevorzuge :nth-child(2n+1) und :nth-child(2n+0)
das ist zwar augenscheinlich unverständlicher, ist allerdings praktischer, wenn man erweitern möchte
zb jede dritte zeile
3n+0
3n+1
3n+2
da alles schön untereinander steht, ist es imho leichter lesbar