Einzelnen Beitrag anzeigen
  #9  
Alt 10.12.2006, 15:13:22
marc26 marc26 ist offline
Anfänger
 
Registriert seit: Apr 2006
Beiträge: 50
AW: Auslesen und beschreiben einer MySQL Datenbank

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>
Mit Zitat antworten