Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2001 Teil von November

SELFHTML Forumsarchiv
Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Informationsseite
  1. Seite (PHP) Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen von Rainer, 30. 11. 2001, 08:19
nach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: Rainer, 30. 11. 2001, 08:19

Guten Morgen,

ich lese mit PHP aus einer DB

<table>
<?
$x=mysql_query("SELECT * FROM table");
 while $z=(mysql_fetch_array($x)):
  $dat=$z["dat"];

 echo"<tr><td>$dat</td></tr>";

endwhile;
?>
</table>

Soweit so gut. Nun möchte ich die Ergebniszeilen abwechselnd mit Weiss und Grau als Zellenhintergrund ausgeben. Ich find einfach keine Lösung dafür und bitte um Hilfe.

Grüsse aus dem Thüringer Land

Rainer

nach obennach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: Klaus Mock, 30. 11. 2001, 08:40

Hallo,

»» Soweit so gut. Nun möchte ich die Ergebniszeilen abwechselnd mit Weiss und Grau als Zellenhintergrund ausgeben. Ich find einfach keine Lösung dafür und bitte um Hilfe.

Ich bin zwar nicht aus dem PHP-Lager, aber das ist doch in keiner Sprache wirklich ein Problem.
Vor dem echo machst Du irgendetwas wie
if($format == 'so_rum')
  $format = 'anders_rum'
else
  $format = 'so_rum';

und baust es dann in Deine Ausgabe ein.

Grüße
  Klaus

nach obennach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: FICHTL, 30. 11. 2001, 08:43

hi,

<table>
<?
$x=mysql_query("SELECT * FROM table");
$iZeile = 0;
while $z=(mysql_fetch_array($x)):
  $dat=$z["dat"];
  if ($iZeile) {
    echo"<tr><td bgcolor="#ff0000">$dat</td></tr>";
    $iZeile = 0;
  } else {
    echo"<tr><td bgcolor="#00ff00">$dat</td></tr>";
    $iZeile = 1;
  }
endwhile;
?>
</table>

ungetestete grüße
FICHTL

nach obennach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: Andreas, 30. 11. 2001, 08:43

Hallo!

»» Soweit so gut. Nun möchte ich die Ergebniszeilen abwechselnd mit Weiss und Grau als Zellenhintergrund ausgeben. Ich find einfach keine Lösung dafür und bitte um Hilfe.

Lass doch einen Zaehler mitlaufen. Alle Zeilen, die einen ungeraden Zaehler haben waeren grau und Zeilen mit geradem Zaehler sind weiss.

Ob der Zaehler gerade oder ungerade ist erhaelt man mit:

if ($i % 4 == 0)

Das sieht etwa so aus (ungetestet):

<?
$i = 0;
while $z=(mysql_fetch_array($x)) {
 $dat=$z["dat"];
 if ($i % 4 == 0) {
  echo"<tr><td bgcolor=white>$dat</td></tr>";
 } else {
  echo"<tr><td bgcolor=black>$dat</td></tr>";
 }
$i++;
}
?>

Hoffe das hilft Dir

Gruesse

-> Andreas

nach obennach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: Sven Rautenberg, 30. 11. 2001, 10:19

»» Ob der Zaehler gerade oder ungerade ist erhaelt man mit:

»» if ($i % 4 == 0)

$i MOD 4 ergibt aber nicht, ob die Zahl gerade oder ungerade ist, sondern macht alle 4 Zeilen eine weiße Zeile. Ist zwar ein ganz netter Effekt, man kann ihn auch für vier abwechselnde Zeilen einsetzen, aber ($i % 2 == 0) wäre dann für das aktuelle Problem doch besser. ;)

Man kann natürlich auch mit einer boolschen Variablen arbeiten. Das ist dann vielleicht etwas eleganter. Ich bastel mal in deinem Code rum. (Und die Zuweisung aus dem Original vom Hash zum Skalar kann man sich auch sparen) ;)

<?
$i = false;
while $z=(mysql_fetch_array($x)) {
 if ($i) {
  echo"<tr><td bgcolor=white>".$z['dat']."</td></tr>";
 } else {
  echo"<tr><td bgcolor=black>".$z['dat']."</td></tr>";
 }
$i = !$i; // Hier wird zwischen true (erste Zeile) und false (zweite Zeile) umgeschaltet.
}
?>

Vorteil: Der Zähler $i läuft niemals über - wäre vielleicht ein Problem, wenn mehr als 2^32 Zeilen auszugeben sind. ;)

 - Sven Rautenberg

nach obennach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: NameNick, 30. 11. 2001, 11:06

Hi,

warum machst du das so kompliziert? Klaus Mock hat da ein simples Konstrukt gebracht, das ich so ungefähr auch immer einsetze.

if ($bgcolor == $bgcolor1) {
    $bgcolor = $bgcolor2;
    }
else {
    $bgcolor = $bgcolor1;
    }

Gruß NN

nach obennach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: Sönke Tesch, 30. 11. 2001, 12:32

»» warum machst du das so kompliziert? Klaus Mock hat da ein simples
»» Konstrukt gebracht, das ich so ungefähr auch immer einsetze.

»» if ($bgcolor == $bgcolor1) {
»»     $bgcolor = $bgcolor2;
»»     }
»» else {
»»     $bgcolor = $bgcolor1;
»»     }

Wie wär's denn damit:

$farbe[false]="irgendwas";
$farbe[true]="nochmehr";
$cfarbe=false;

while/for (blabla)
 {
  echo $farbe[$cfarbe];
  $cfarbe=!$cfarbe;
 };

Gruß,
  soenk.e

nach obennach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: Christian, 01. 12. 2001, 13:28

»» Wie wär's denn damit:

»» $farbe[false]="irgendwas";
»» $farbe[true]="nochmehr";
»» $cfarbe=false;

»» while/for (blabla)
»» {
»»   echo $farbe[$cfarbe];
»»   $cfarbe=!$cfarbe;
»» };

besser so:

while/for (blabla)
  {
   echo $farbe[$cfarbe = !$cfarbe];
  };

Gruß
  Christian

nach obennach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: Sven Rautenberg, 30. 11. 2001, 10:28

Hm, noch kürzer geht's so:

<?
$i = 0;
while $z=(mysql_fetch_array($x)) {
 if (($i++ % 2) == 0) {
  echo"<tr><td bgcolor=white>".$z["dat"]."</td></tr>";
 } else {
  echo"<tr><td bgcolor=black>".$z["dat"]."</td></tr>";
 }
}
?>

$i++ ist ein Post-Inkrement, d.h. nach der Verwendung des Wertes in $i (hier für die Operation $i % 2) wird der Wert inkrementiert. Der alte Wert von $i wird also genommen, und der neue Wert gleich danach in $i abgelegt. Der Vergleich mit 0 nimmt aber noch den alten Wert von ($i % 2) - genauso wollten wir es.


Ich befürchte, mit meinen ZWEI Postings könnte ich jetzt einen Wettlauf um das beste Coding ausgelöst haben. Wohin sowas führen kann: http://internet.ls-la.net/mirrors/99bottles/ (Übrigens eine sehr gute Referenz zu allen möglichen Programmiersprachen. :) )

 - Sven Rautenberg

nach obennach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: AlexBausW, 30. 11. 2001, 12:35

Hallo Sven,

»» Hm, noch kürzer geht's so:

»» <?
»» $i = 0;
»» while $z=(mysql_fetch_array($x)) {
»» if (($i++ % 2) == 0) {
»»   echo"<tr><td bgcolor=white>".$z["dat"]."</td></tr>";
»» } else {
»»   echo"<tr><td bgcolor=black>".$z["dat"]."</td></tr>";
»» }
»» }
»» ?>

Noch kürzer bzw. eleganter wäre imho:

<? $i = 0;
   while ($z = mysql_fetch_array($x)): ?>

       <tr>
           <td bgcolor="<? echo $i++ % 2 ? 'white' : 'darkgray'; ?>">
               <?= $z["dat"] ?>
           </td>
       </tr>

<? endwhile ?>

Gruß Alex
--
http://www.google.de/search?hl=de&safe=off&q=Rechtschreibung+Standart

nach obennach unten

Nach MySQL auslasen Zeilen abwechselnd 2farbig anzeigen

Die folgende Nachricht zum Thema stammt von: Uhf, 30. 11. 2001, 11:55

Re Moin,

ich finde die Lösung mit dem MOD Operator insofern eleganter, daß sich damit auch beliebig viele Abstufungen machen lassen.

switch ($laufvariable % $anzahl_der_abstufungen)
{
case 1:
$bgcolor = "#ffffff"

case 2:
.
.
.
case $anzahl_der_abstufungen:
$bgcolor = "#000000"
break
}

Naja so mach ichs halt immer. Zumal ich keine While Schleife sondern eine for- Schleife benutze und daher immer eine Laufvariable zur
Verfügung habe.

Gruß


Uhf

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2001 Teil von November

© 1998-2008 Seite Impressum, Software: Classic Forum