Das Auslesen mehrerer Datensätze mit modulo (z.B. abwechselndem Zeilenhintergrund):
Der 'modulo' ist schon fast ein Reizthema in Foren. Deshalb vielleicht nochmal ganz einfach. Der 'modulo' ist ein Zähler, der so lange zählt, wie ihr es ihm sagt und sich ständig wiederholt bis er kein Futter mehr hat.
Ein Beispiel:
PHP-Code:
<?php
// Futter
$total = 10;
for ($i=0;$i<$total;$i++) {
echo 'Futter: '.$i.' - Modulo: '.($i%4).'<br/>'; // modulo Durchläufe: 4, d.h. 0,1,2,3,0,1,2,3 usw.
}
?>
Bei einem 'modulo' von 4 sieht die Ausgabe dann so aus:
Code:
Futter: 0 - Modulo: 0
Futter: 1 - Modulo: 1
Futter: 2 - Modulo: 2
Futter: 3 - Modulo: 3
Futter: 4 - Modulo: 0
Futter: 5 - Modulo: 1
Futter: 6 - Modulo: 2
Futter: 7 - Modulo: 3
Futter: 8 - Modulo: 0
Futter: 9 - Modulo: 1
Dieses Verhalten hilft, wenn man z.B. in einer Tabellenausgabe die Hintergrundfarbe der einzelnen Zeilen abwechselnd weiss und grau darstellen will. Dazu muss man statt eines modulos von 4 (wie im Beispiel) den modulo auf 2 stellen (d.h. er zählt in der Schleife immer nur 0,1,0,1,0,1 usw.). Die Ausgabe der Tabellenzeilen erweitert man jetzt um ein IF und weist an, dass der Hintergrund bei einem modulo-Wert von 0 bitte den Farbwert '#ffffff' haben soll und im Falle des modulo-Werts von 1 den Farbwert '#cccccc'. Das 'Futter' aus dem obigen Beispiel ($total = 10) ergibt sich aus der Gesamtzahl der Datensätze, die man aus der Datenbank abgefragt hat. Sie stehen in der Variable $totalRows_rsGetUserInfo.
Also zunächst die Datenbankabfrage (wie gehabt):
PHP-Code:
<?php
// get user info
mysql_select_db($database_connDB, $connDB);
$query_rsGetUserInfo = "
SELECT *
FROM users
ORDER BY users.user_name ASC
LIMIT 10
";
$rsGetUserInfo = mysql_query($query_rsGetUserInfo, $connDB) or die(mysql_error());
$row_rsGetUserInfo = mysql_fetch_assoc($rsGetUserInfo);
$totalRows_rsGetUserInfo = mysql_num_rows($rsGetUserInfo);
// results in array
do {
$allUserInfo[] = $row_rsGetUserInfo;
} while ($row_rsGetUserInfo = mysql_fetch_assoc($rsGetUserInfo));
?>
Jetzt die HTML Ausgabe erweitert um den 'modulo':
PHP-Code:
<table>
<?php
// reset counter
$i = 0;
// loop array
foreach ($allUserInfo as $item => $value) {
if (($i%2) == 0) { // modulo 2 (0,1,0,1,0,1 etc.)
// bg color: white
echo '
<tr style="background-color:#FFFFFF;">
<td>
<b><?= $value['user_name'] ?></b>
</td>
<td>
<?= $value['user_password'] ?>
</td>
</tr>
';
} else {
// bg color: grey
echo '
<tr style="background-color:#CCCCCC;">
<td>
<b><?= $value['user_name'] ?></b>
</td>
<td>
<?= $value['user_password'] ?>
</td>
</tr>
';
}
// set counter +1
$i++;
}
?>
</table>