Toon posts:

Newbie php vraag "verschillende kleuren in tabel"

Pagina: 1
Acties:
  • 127 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb de search gebruikt, maar helaas krijg ik nog niet het gewenste resultaat. PHP boek besteld, maar nog niet binnen en ook de verschillende tut's op internet al gezien.
Ik ben echt een super super newbie (maar dat zie je wel aan mijn vraag).
Hier bij tweakers zag ik verschillende formules om kleuren (om en om) in een tabel te knallen, echter nog niet het gewenste resultaat gekregen.

Dit is mijn stukje code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?
$kleur = (++$i % 2) ? "#FFFFFF":"#000000";
?>


<table border="1" width="100%">
   
  <tr>
        <td width="25%" bgcolor=<?$kleur?>>
<?
        if($FirstCheckbox &amp;&amp; $SecondCheckbox)
{
echo("Beide<br>\n");
}
else
{
echo("leeg");
}
?>
        </td>
             <td width="25%" bgcolor=<?$kleur?>>
<?
             if($FirstCheckbox &amp;&amp; !$SecondCheckbox)
     {
     echo("Alleen 1");
     }
else
{
echo("leeg");
}
                ?>
             </td>
                   <td width="25%" bgcolor=<?$kleur?>>
<?
                   if($SecondCheckbox &amp;&amp; !$FirstCheckbox)
           {
           echo("Alleen 2<br>\n");
           }
else
{
echo("leeg");
}
                ?>
                   </td>
             <td width="25%" bgcolor=<?$kleur?>>
<?
             if(!$SecondCheckbox &amp;&amp; !$FirstCheckbox)
     {
     echo("Geen van Beide<br>\n");
     }
else
{
echo("leeg");
}
                ?>
                    </td>
  </tr>
</table>
?>

Heb de volgende "kleur"formules al gebruikt:

<?$kleur = (++$i % 2) ? "#FFFFFF":"#000000";?>

En deze:

<?<?$kleur = (++$i % 2) ? "#FFFFFF":"#000000";?>?>

p.s. als het niet te weel moeite is hoor ik ook meteen het %2 verhaal.

Merci

P.S. Code zal wel een rommel zijn, maar ben nog in begin fase.

Verwijderd

Je gebruikt nu de ene helft van de code als html en een ander gedeelte php, misschien is het wat makkelijker als je overal print (of echo) voor zet, en het helemaal als PHP-code beschouwt.

  • marijn
  • Registratie: Juni 2001
  • Laatst online: 05-09 08:13
Waarom gebruik je geen loops? zo kan je toch nooit alle kleuren tevoorschijn toveren. :?

  • goalgetter
  • Registratie: Juni 1999
  • Laatst online: 25-08 15:24
Het % (modulo) verhaal kan je hier vinden.
Wat het doet : het geeft je de "rest" van een deling (5%2 = 1, 6%2 = 0).

Hoe gebruik je dit: Bij elke rij (kolom in jouw geval?) wil je een ander kleurtje hebben. Je laat een counter meelopen. Elke keer als je $i een andere waarde geeft (++$i of $i++ of iets anders) ga je aan de hand van de waarde van $i de kleur bepalen. Is $i een even getal ($i%2 == 0) dan geef je het kleurtje 1, anders ($i%2 == 1) geef je het kleurtje 2.

Voorbeeldje van gebruik:
Je hebt een array ($array) met $x elementen, en elke rij geef je een kleur 1 of kleur 2

Om het hele rijtje te printen ga je de array element voor element af, en houd je een counter bij. Deze counter gebruik je vervolgens om per rij te bepalen welke kleur die rij moet krijgen.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?
for ($i = 0; $i < $x; $i++)
{
  /*
  Van i = 0 tot i < x, doe alles wat binnen de haakjes valt
  en tel daarna 1 bij i op en doe het nog een keer totdat
  i niet meer kleiner dan x is.
  */
  if ($i % 2 == 0)
  {
    $kleur = "#000000";
  }
  else
  {
    $kleur = "#FFFFFF";
  }
  /*
  Bovenstaande if/else kan je ook schrijven als:
  $kleur = ($i % 2 == 0) ? "#000000" : "#FFFFFF";
  variable = (expression) ? "True" : "False";
  En aangezien 0 als false beschouwd kan worden, kan het
  ook als:
  $kleur = ($i%2) ? "True" : "False";
  */

  //Hier je code om de hele row neer te planten
  ?>
  <tr bgcolor="<? echo $kleur; ?>">
    <td>blaat</td>
    <td><?php echo $array[$i]; ?></td>
  </tr>
  <?php
}
?>

Ik hoop dat het nu wat duidelijker is.

  • elnino
  • Registratie: Augustus 2001
  • Laatst online: 03-09 05:13
Op zondag 23 december 2001 13:08 schreef vlieg02 het volgende:
Dit is mijn stukje code:
Voor de leesbaarheid is het misschien handiger om de code even tussen [ php ] en [ /php ] (zonder spaties) te zetten, dat is makkelijker lezen.
<td width="25%" bgcolor=<?$kleur?>>
<?$kleur?> moet <?=$kleur?> zijn of <?php print $kleur; ?>
<?$kleur = (++$i % 2) ? "#FFFFFF":"#000000";?>
Laat ik allereerst beginnen met de expressie1 ? expressie2 : expressie3

Dit is een soort van if-constructie. Als je het zou vertalen naar if, zou het zoiets worden:
if(expressie1)
{
expressie2
}
else
{
expressie3
}
En de %-operator is de modulo-operator, wat inhoudt dat de rest berekend wordt. We rekenen nu even op de manier hoe we ook op de basisschool rekenden (een deling met een geheel getal als antwoord met een rest erbij). Stel je hebt 20 / 7 (20 gedeeld door 7). Daar komt 2 rest 6 uit.

Met 20 / 7 bereken je die 2.
Met 20 % 7 bereken je de rest, namelijk 6.

edit: Ik was zo lang bezig met het verhaaltje over de % enzo en over ... ? ... : ... dat er een heleboel mensen mij voor waren... :( :(

Verwijderd

Topicstarter
Super bedankt iedereen :-)
Ik ben blij dat ik van iedereen mooie antwoorden heb gekregen.

  • goalgetter
  • Registratie: Juni 1999
  • Laatst online: 25-08 15:24
Op zondag 23 december 2001 13:37 schreef elnino het volgende:
[..]
edit: Ik was zo lang bezig met het verhaaltje over de % enzo en over ... ? ... : ... dat er een heleboel mensen mij voor waren... :( :(
Sneller typen >:)

En vlieg02, your welcome ;)

Verwijderd

Topicstarter
goalgetter en natuurlijk ook alle andere php koningen die mij willen helpen :-),

Toch nog een beetje aan het worstelen met dat kleuren gedoe. Ik gebruik jouw code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
for ($i = 0; $i < $x; $i++)
  {
if ($i % 2 == 0)
  {    
$kleur = "#FF0000";
}
  else
{    
$kleur = "#00FFFF";  
}
?>

en ga daarna door met mijn script"
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?
<table border="1" width="100%"    >
   
      <tr>
        <td width="25%" bgcolor=<? echo $kleur; ?>>
        <?
        if($FirstCheckbox &amp;&amp; $SecondCheckbox)
    {
    echo("Beide<br>\n");
    }    
    else
    {
        echo("leeg");
    }
        ?>
        </td>
             <td width="25%" bgcolor=<? echo $kleur; ?>>
        <?    
             if($FirstCheckbox &amp;&amp; !$SecondCheckbox)    
         {
         echo("Alleen 1");
         }
        else
    {
        echo("leeg");
    }
                ?>
             </td>
                   <td width="25%" bgcolor=<? echo $kleur; ?>>
        <?
                   if($SecondCheckbox &amp;&amp; !$FirstCheckbox)
               {
               echo("Alleen 2<br>\n");
               }
            else
    {
        echo("leeg");
    }    
                ?>
                   </td>
             <td width="25%" bgcolor=<? echo $kleur; ?>>
        <?
             if(!$SecondCheckbox &amp;&amp; !$FirstCheckbox)
         {
         echo("Geen van Beide<br>\n");
         }
else
    {
        echo("leeg");
    }    
                ?>
                    </td>
  </tr>
</table>
?>

Ik weet dat het de bedoeling is dat je net zolang gaat knoeien totdat het werkt, maar het wil maar niet lukken.
Volgens mij werk ik niet echt met een array.

Dit is mijn info:
PHP:
1
2
3
4
5
6
7
<?
<form action="CheckboxHandler.php" method="POST">
    <input type="checkbox" name="FirstCheckbox">
    <input type="checkbox" name="SecondCheckbox">
    <input type="submit" value="Send Form">
</form>
?>

Ik hoop dat het gaat werken.
Alvast heel erug bedankt topper :-)

Verwijderd

Topicstarter
Helemaal vergeten.

Volgens mij is mijn probleem (dat ik uiteraard geen php ken :-) ), dat de volgende regels niet voorkomen en dat $x nog geen waarde heeft
PHP:
1
2
3
<?
<tr bgcolor="<? echo $kleur; ?>">    <td>blaat</td>    <td><?php echo $array[$i]; ?></td>  </tr>  <?php}
?>
Pagina: 1