Tabellenzeilen einfärben

  • #1
N

noah1

Bekanntes Mitglied
Themenersteller
Dabei seit
16.08.2002
Beiträge
1.415
Reaktionspunkte
0
Ort
Hamburg
Ich habe eine Tabelle die auf der HP ausgegeben wird und in der ich gerne jede zweite Zeile z.B. grau einfärben würde, da die Tabelle recht groß ist und es so dann ja besser überschaubar ist.
Ich habe mir jetzt gedacht daß ich ja einen Zähler mit jedem ausgelesenen Tabelleneintrag hochzählen lassen könnte, und bei ungeraden Zahlen ist die Farbe grau, bei geraden weiß.
Aber wie ermittele ich ob es eine gerade oder ungerade Zahl ist?
Oder ist das ganze noch einfacher zu machen?
 
  • #2
Sowas kannst du nur mit Hilfe einer Script Sprache lösen. Wäre erstmal gut zu wissen ob dein Webspace sowas überhaupt Unterstützt. PHP ist da wohl die einfachste und beste Variante. Schau mal nach ob dein Webspace PHP unterstützt.
 
  • #3
Übrigens, >> << ist ein praktisches Beispiel in PHP. Mit einem Template System geht das übrigens deutlich besser. Aber ich bezweifle das das sinnvoll für dich ist. Das wäre mit Kanonen auf Spatzen schiessen.
 
  • #4
Mit dem Script aus Deinem Link kamen nur Fehlermeldungen.
Ich habe es jetzt sehr simpel selber geschrieben - ich habe einfach vor der Schleife zur Ausgabe der Tabelle die Hintergrundfarbe bestimmt, ind in der Schleife habe ich
Code:
if ($backgcolor == White){
						$backgcolor = #CCCCCC;
							}
					else{
						$backgcolor = White;
						}
eingefügt...

Funzt wunderbar...
 
  • #5
Hä, das konstrukt versteh ich jetzt mal so gar nicht. Erklär doch bitte mal was das genau bewirken soll?! Hast du die Tabelle schon irgendwie vorformatiert?
 
  • #6
Der korrekte Weg in diesem Fall währe ungefähr so:

Beispiel mit for geht natürlich mit jeder anderen Schleife auch

Code:
<?php

for($i=0; $i < $wert; $i++) {
  
  if($i % 2 == 0) { $bg = $cccccc; }
  else { $bg = #cdcdcd; } 

  // Ausgabe 

}
?>

oder in Kurzform

Code:
<?php

for($i=0; $i < $wert; $i++) {
  
  $bg = ($i % 2 == 0) ? $cccccc : #cdcdcd; 

  // Ausgabe 

}
?>

gruss conny

PS: Viele Wege führen nach Stuttgart ( oder war es Rom ??? )
 
  • #7
Gandalf_the_Grey schrieb:
Hä, das konstrukt versteh ich jetzt mal so gar nicht. Erklär doch bitte mal was das genau bewirken soll?! Hast du die Tabelle schon irgendwie vorformatiert?

Klar habe ich die Tabelle schon vorformatiert,
Ich habe eine Tabelle die auf der HP ausgegeben wird...

Und der Codeschnipsel den ich gepostet habe ist in der Schleife zur Ausgabe der Daten aus der Tabelle.
Und da taucht die Variable $backgcolor wieder auf: <tr bgcolor=$backgcolor>...
 
  • #8
Ja, aber ich kapiere nicht wie dein Schnipsel funktionieren soll.

Ich kapiere nicht wie du hier ein Unterscheidung triffst welche Tabellen zeile du wie einfärbst. Kannst du mal einen Auszug aus deinem Quellcode zeigen der die Tabelle enthält.

Du wolltest ja unabhängig von der Anzahl die Tabelle abwechselnd einfärben. Dazu musst du jede zweite Tabellenzeile anders einfärben. Um das zu stemmen musst du ermitteln welches die letzte Zeile ist. Dann hast du eine start und eine Ziel Position. Dann musst du nur noch mit einer Schleife bis zur End Position durchfahren. Jede Position die sich ohne Rest durch 2 teilen lässte wird anders eingefärbt. Ist eigentlich ne ganz einfache Sache. (Also eigentlich genau so wie es Conny eben gesagt hat)

Aber wie du das realisiert hast würde mich echt mal interessieren.
 
  • #9
Hi

Indem er den Variablenwert immer wechseln lässt. Ist wie ein Flag
if (false) true else false

Gruß, Michael
 
  • #10
Ja, aber den Variablen Wert wechselt auch nicht von ungefähr. Wenn ich eine solche Vorformatierung erst treffen muss, dann verliert das ganze doch seinen Sinn. Ich arbeite auch mit einer solchen Tabelleneinfärbung in einigen Projekten. (Allerdings derzeit alle auf Basis von XML/XLST so das ich aus dem Stehgreif keine direkte Umsetzung für PHP parat hatte) Der Sinn ist es ja, das wenn z.B. ein Eintrag in der Tabelle hinzu kommt ich nicht irgendwas vor deffinieren muss sondern das Automatisch anders eingefärbt wird als die vorherige Zeile!
 
  • #11
Ich glaub da ist einer mit seinen Gedanken noch im Wochenende *ROTFL*

Das:

Code:
<?php
if ($backgcolor == White){
  $backgcolor = #CCCCCC;
}
else{
  $backgcolor = White;
}
?>

ist im Prinzip das gleiche wie mein Bsp.

NUR, mein Beispiel mit Modulo funktioniert immer, egal ab nun % 3 oder % 4 usw.
das andere funktioniert NUR im Wechsel 0 - 1 - 0 - 1 - 0 - 1

guten Morgen und gruss conny
 
  • #12
Nö, das ist IMHO mal so gar nicht das gleiche!

Dein Beispiel ist ok. Seines funktioniert nur wenn der Wert backgcolor Withe ist! Dann färbt er das ganze nach #CCCCCC (bin zu faul nach zu sehen welche Farbe das ist) Ansonsten färbt er nach White. So, demnach muss er vorher schon irgendwo für JEDE Tabellenzeile einen Wert mit backgcolor hinterlegt haben! Oder sehe ich da was falsch?

Was macht das ganze denn dann aber noch für einen Sinn?! Wenn ich vorher erst irgendwo ein Flags setzen muss ist die Idee doch ad absurdum geführt!
 
  • #13
Nochmal für Offenbächer *LOL*

ich schreib das gleiche mal für dich etwas um:

Code:
<?php
if ($backgcolor == false){
  $backgcolor = #CCCCCC; // jetzt ist $backgcolor => true Farbe wird auf #cccccc gesetzt
}
else{
  $backgcolor = false; // keine Farbe nur normale Hintergrundfarbe
}
?>

1. Durchlauf Farbe = #cccccc
2. Durchlauf = keine Farbe
3. Durchlauf Farbe = #cccccc
4. Durchlauf = keine Farbe
usw.

BTW: #cccccc ist grau ;)

gruss conny
 
  • #14
Egal was du sagst, du drückst dich immer um die Tatsache das eine Vorformatierung der einzelnen Tabellenzeilen getroffen worden ist. Bring doch mal ein praktisches Beispiel wie die <td> Elemente aussehen sollen! Übrigens ich bin KEIN Offenbacher
 
  • #15
Oh mann, was habe ich hier blos losgetreten... 8)

Code:
$sql = mysql_query(SELECT * FROM counterhits order by id DESC LIMIT 0, 150);
			while ($ds = mysql_fetch_object($sql)){
					$id = $ds -> id;
					$ipadr = $ds -> ipadr;
					$client = $ds -> client;
					$clientganz = $ds -> client;
					$countflag = $ds -> countflag;
					$date = $ds -> datum;
					$zeitmitsec = $ds -> zeit;
					$zeit=split(:,$zeitmitsec);
					$zeitohnesec = $zeit[0].:.$zeit[1];									
				 echo<tr bgcolor=\$backgcolor\><td class=\statnr\><a title=\$id\>$id</a></td><td class=\statdatum\><a title=\$date\>$date</a></td><td class=\statzeit\><a title=\$zeitohnesec\>$zeitohnesec</a></td><td class=\statip\><a title=\$ipadr\>$ipadr</a></td>;
				 if(strlen($client) < 70){
				 echo<td class=\statbrowser\><a title=\$client\>. substr($client, 0, 70) .</a></td></tr>;
					}
				else if(strlen($client) > 69){
					echo<td class=\statbrowser\><a title=\$client\>. substr($client, 0, 67) ....</a></td></tr>;
					}
					if ($backgcolor == White){
						$backgcolor = #FFFFCC;
							}
					else{
						$backgcolor = White;
						}
					}
			echo</table>;

So sieht die Tabelle jetzt aus.
Und mit den Farbe stimmt es spätestens ab dem zweiten Durchlauf der Schleife, denn wenn $backgcolor nicht White ist dann ist es das spätestens jetzt...

#CCCCCC wäre übrigens ein helles Grau gewesen...
 
  • #16
Code:
,
<table align=center width=200>

<?php

for($i = 0; $i < 10; $i++) {
 if ($backgcolor == false){
  $backgcolor = #CCCCCC; // jetzt ist $backgcolor => true Farbe wird auf #cccccc gesetzt
 }
 else{
  $backgcolor = false; // keine Farbe nur normale Hintergrundfarbe
 }
 echo <tr bgcolor='.$backgcolor.'><td>Ich bin Zeile .($i+1).</td><tr>; 
}
?>

</table>

Wo bitte ist hier etwas Vorformartiert ???

noah1 schrieb:
Oh mann, was habe ich hier blos losgetreten... 8)

Egal, das muss geklärt werden :D ;D
 
  • #17
*augenroll* vergesst es einfach Leute. Wir reden glaube ich ganz gewaltig aneinander vorbei.
Ist aber auch egal. Begraben wir das ganze und gut ist.

Wir schieben das ganz einfach mal auf eine Denkblockade meinerseits.
 
Thema:

Tabellenzeilen einfärben

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben