Robert: farbtabelle generieren

Guten Tag!
Ich hab versuch eine Farbtabelle mit einem PHP-Code zu generieren.
Leider ist mir das nicht gelungen und noch dazu hab ich ungefähr 1000 Zeilen Fehler bekommen. Immer die var. $G $B oder $R ist UNDEFINED.
Davon bin ich nicht schlauer geworden.

<?php
$i=1;
$R = -10;
$G = -10;
$B = -10;

function farbe()
{
if($R<=240)
{
$R+=10;
}
else
{
 if($G<=240)
 {
 $G+=10;
 }
 else
 { if($B<=240)
  {
  $B+=10;
  }
  else
  {
  return "FFFFFF";
  }
 }
}
return dechex($R) . dechex($G) .dechex($B);
};

while ($R<=250 && $G<=250 && $B<=250)
{

switch($i)
{
case 1:  echo "<tr>";
  $i++;
  break;

case 15:  echo "</tr>";
  $i=1;
  break;

default: echo "<td style="background-color:#" . farbe() . ";">" . farbe() . "</td>";
  $i++;
};

}
?>

Kann mir wer, mit Hilfe dieses Codes sagen, was ich noch nicht weiß in PHP?

danke schonmal

  1. Hallo,

    Guten Tag!
    Ich hab versuch eine Farbtabelle mit einem PHP-Code zu generieren.

    Probiers mal damit:
    <table border="0" cellpadding="0" cellspacing="0">
    <tr>
    <?php
     for ($i=0; $i<216; $i++) {
         if ($i % 18 == 0) echo "</tr><tr>\n";
             $col = '#' . sprintf('%06x', ($i % 6) * 51 + floor(($i % 36)/6) * 13056 + floor($i/36) * 3342336);
         echo "\t<td style="background-color:$col"><img border="0" height="12" src="blind.gif" width="12" onclick="CloseDown('$col')"></td>\n";
     }
    ?></tr>
    </table>

    Gruß

    Ralf

  2. Hallo Robert,

    Ich hab versuch eine Farbtabelle mit einem PHP-Code zu generieren.

    vorsicht, so eine Datei kann ziemlich schnell ziemlich groß werden :-)

    $R = -10;
    $G = -10;
    $B = -10;

    warum -10?

    function farbe()
    {
    [...]
    };

    du solltest dich mal mit Funktionen in php beschäftigen (->http://de3.php.net/functions) - $R, $G und $B sind innerhalb der Funktion farbe() nämlich wirklich nicht definiert - du musst sie schon mit übergeben.

    while ($R<=250 && $G<=250 && $B<=250)
    {
    switch($i)
    {

    etwas einrücken würde die Lesbarkeit deutlich erhöhen.

    default: echo "<td style="background-color:#" . farbe() . ";">" . farbe() . "</td>";

    das dürfte vmtl. nicht funktionieren - bei jedem Aufruf von farbe() wird einer der Werte ($R, $G oder $B) erhöht - d.h. beim 2. Aufruf in der Zeile bekommst du einen anderen Wert zurück als beim ersten. Du solltest bei default: den Rückgabewert von farbe() in einer Variablen speichern und dann zweimal ausgaben.

    Grüße aus Nürnberg
    Tobias [der hofft, das das jetzt geholfen hat :-)]

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. stimmt danke
      Den Ausdruck Global hab ich nicht gekannt.
      Außerdem hab ich gemerkt, dass ich ein break vergessen hab.