WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   warum zählt diese schleife schlecht? (http://www.wcm.at/forum/showthread.php?t=227889)

le bart 13.04.2008 14:15

warum zählt diese schleife schlecht?
 
in einer schleife die so oft durchlaufen wird wie einträge im dir sind will ich die farben alternieren, aber das muster das erzeugt wird ist: 12313123..

$zaehler=0;
<anfang schleife>

$zaehler=$zaehler+1;
if ($zaehler==1){$colour='rot';}
if ($zaehler==2){$colour='green';}
if ($zaehler==3){$colour='blue';}

<anfang textausgabe in farbe $colour>

if ($zaehler==3){$zaehler=0;}



<ende schleife>


danke!

zAPPEL 13.04.2008 15:28

Kannst du den ganzen Code posten? Also was steht z.B. in <Anfang Schleife> ? In PHP?

Hier mal ein PHP-Code der das machen sollte was du willst:
PHP-Code:

$i=0;
$j=0;
while(
$j<100) {
    
$i++;
    echo 
$i;
    if (
$i ==3)
        
$i=0;
    
$j++;


Ausgabe:
Code:

1231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231231
lg

pong 13.04.2008 15:38

1. auch PHP kennt eine Mehrfachauswahl ... denn 3x if von denen je Durchlauf garantiert 2 NOK sind, lässt vermuten, dass es sich hier um einen absoluten Anfänger handelt?
2. Wo ist da eine Schleife?
3. dein ausgegebenes "Muster" wäre "123123...."
4. den Anweisungsblock des 4ten If setzt man in den then Zweig des 3tens rein
5. auch hier gibt es den CODE Tag

pong

Satan_666 13.04.2008 17:29

Zitat:

Zitat von le bart (Beitrag 2268797)
in einer schleife die so oft durchlaufen wird wie einträge im dir sind will ich die farben alternieren, aber das muster das erzeugt wird ist: 12313123..

$zaehler=0;
<anfang schleife>

$zaehler=$zaehler+1;
if ($zaehler==1){$colour='rot';}
if ($zaehler==2){$colour='green';}
if ($zaehler==3){$colour='blue';}

<anfang textausgabe in farbe $colour>

if ($zaehler==3){$zaehler=0;}



<ende schleife>


danke!

Was glaubst Du, macht die rot definierte Zeile?

*grübel*

zAPPEL 13.04.2008 18:03

Geht natürlich noch einfacher mit Modulo (wobei die 100 natürlich mit der Gesamtanzahl deiner Datensätze ersetzt werden muss)
PHP-Code:

$i 0;
while (
$i 100) {
        
$j $i%3;
        echo 
$j;
        
// Gibt 012012012 etc. aus
        // Hier entsprechend weitermachen mit z.B. switch($j)
        
$i++;


bzw. dann auch mit einer for-Schleife:
PHP-Code:

for ($i=0;$i<100;$i++) {
        
$j $i%3;
        echo 
$j;


Wenn du jetzt die Farben nicht direkt mit PHP ausgibts sondern z.B. nur eine CSS-Klasse ausgibts brauchst auch gar keine IF-Abfrage mehr in der Schleife für die Farbe sondern könntest es so machen:
PHP-Code:

echo "<tr class='row-$j'>...</tr>"

Und im CSS definierst du die Hintergrundfarben für .row-1, .row-2 und .row-3

lg

le bart 13.04.2008 19:28

Zitat:

Zitat von Satan_666 (Beitrag 2268861)
Was glaubst Du, macht die rot definierte Zeile?

*grübel*


auf 0 setzen, damits wieder 1 wird bei nächsten durchlauf ?

ich hab das so gemacht, weil ich keine weitere schleife hinenipacken wollt, also hier is der ganze code, ich check nicht wo der fehler is:

Code:

<html>
<link rel="shortcut icon" href="favicon.ico" type="image/vnd.microsoft.icon" />
<link rel="icon" href="favicon.ico" type="image/vnd.microsoft.icon" />
<head>
<link rel="stylesheet" type="text/css" href="css.css">
<title>
Index of /
</title>
</head>
<body>


<?php
// open the current directory by opendir
$handle=opendir(".");
$zaehler=0;
while (($file = readdir($handle))!==false) {

$zaehler=$zaehler+1;
if ($zaehler==1){$colour='rot';}
if ($zaehler==2){$colour='green';}
if ($zaehler==3){$colour='blue';}



if ($file !=='files' && $file !=='private' && $file !=='mail' && $file !=='sommer2008'){
echo '<p><a class="'.$colour.'" href="'.$file.'"> </a>';
echo '<a href="'.$file.'">'.$file.'</a>';
}


if ($zaehler==3){$zaehler=0;}




}

closedir($handle);
?>



</table>
</body>
</html>

danke für die anregungen, werds probieren. und ja, ich bin der völlige programmier-noob :-)

le bart 13.04.2008 19:48

ich hab jetzt ein echo $zaehler reingetan und bin draufgekommen, das problem is nicht dass er falsch zählt, sondern dass er bei zweiten durchgang und bei jedem übernächsten bei 2 und 3 keine farbe zugeordnet..

Code:


<head>
<link rel="stylesheet" type="text/css" href="css.css">
<title>
Index of /
</title>
</head>
<body>


<?php
// open the current directory by opendir
$handle=opendir(".");
$zaehler=0;
while (($file = readdir($handle))!==false) {

$zaehler++;
echo '<br><br>'.$zaehler.'<br><br>';
if ($zaehler==1){
$colour='rot';
} elseif ($zaehler==2){
$colour='green';
} else {
$colour='blue';
$zaehler=0;
}


if ($file !=='files' && $file !=='private' && $file !=='mail' && $file !=='sommer2008'){
echo '<p><a class="'.$colour.'" href="'.$file.'"> </a>';

echo '<a href="'.$file.'">'.$file.'</a>';
}





}

closedir($handle);
?>



</table>
</body>
</html>


le bart 13.04.2008 19:56

ah, ich bin so dämlich, das wo er keine farbe zuordnet sind die ausnahmen in der "if ($file.." schleife, mannomann, sorry und thx für die tipps

so funkts natürlich

Code:


<head>
<link rel="stylesheet" type="text/css" href="css.css">
<title>
Index of /
</title>
</head>
<body>


<?php
$zaehler=0;
// open the current directory by opendir
$handle=opendir(".");
while (($file = readdir($handle))!==false) {


if ($file !=='files' && $file !=='private' && $file !=='mail' && $file !=='sommer2008'){
$zaehler++;
#echo '<br><br>'.$zaehler.'<br><br>';
if ($zaehler==1){
$colour='rot';
} elseif ($zaehler==2){
$colour='green';
} else {
$colour='blue';
$zaehler=0;
}


echo '<p><a class="'.$colour.'" href="'.$file.'"> </a>';

echo '<a href="'.$file.'">'.$file.'</a>';
}





}

closedir($handle);
?>



</table>
</body>



Alle Zeitangaben in WEZ +2. Es ist jetzt 06:58 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag