benji: tr-bgcolor mal weiß, mal schwarz: warum gehts nicht ?

HAllo !

Ich finde den Fehler einfach nicht, wobei es sooooo einfach ist: Ich habe eine mit PHP vorher dynamisch generierte Tabellle (Auflistung eines beliebigen Ordners auf dem Server), bei der ich nun abwechselnd eine Reihe background-color weiß, eine andere leicht grau haben möchte, damit man nicht "in den Zeilen verrutscht", naja, hilft eben.

Alles kein Problem: $black als Variable, 0 = weiß, 1 = grau, dann einfach mein Ordern-Array mit while abfragen und dann immer wenn $black == 0 weiße hintergrundfarbe und $black = 1, damits nächstes mal dunkel wird - VÖLLIG einfach !

Also, hier mal mein Script:

---------

// ....
 // $dirpath = aktuelles Serververzeichnis
 // $handle = Ordner-Handle

$x = 0; // x wird hochgezählt und für Dateien als id verwendet !
$b = 2; //2 = weiß, 1 = schwarz (für bgcolor) !

function bow ()
{
 if($b == 2) {
  return "<td>";
  $b = 1; }
 else if($b == 1) {
  return "<td class="b">";
  $b = 2; }
}

while (false !== ($file = readdir ($handle))) {
 $wfile = $dirpath . $file;
 if($file == "." || $file == "Folder Settings" || $file == "desktop.ini") { $dvxqas = "blabloblu"; }
 if($file == "..")  echo "<tr><td width="16"><img src="http://sveni/images/folder-up.gif"></td><td colspan="2"><a href="javascript:history.back()">übergeordnetes Verzeichnis</a></td></tr>\n";
 else if(is_file ($dirpath.$file)) {
  $btd = bow();
  echo <<<XYZYX
   <tr>
    <td width="16" valign="top"><img src="http://sveni/images/file-sheet.gif"></td>
    $btd<a href="javascript:markdown('$wfile', $x);" class="wichtigfile">$file</a></td>
    <td><a href="javascript:markdown('$wfile', $x);"><img src="http://sveni/images/file-sectfile-cold.gif" id="$x"></a> nicht ausgewählt</td>
   </tr>
XYZYX;
 }
 else
 {
  $next_dirpath = $dirpath . $file ."\";
  echo "<tr><td width="16" valign="top"><img src="http://sveni/images/file-folder.gif"></td><td colspan="2"><a href="?$next_dirpath" class="folderlink">$file</a></td></tr>\n";
 }
 $x++;
}

// .....

----------

Ich habe sogar schon total schwachsinnigerweise 2 für weiß und 1 für schwarz genommen, FALLS PHP wirklich 0 als Variable löschen interpretieren sollte, jedoch BEHAUPTET PHP IMMER; $black würde nicht EXISTIEREN !!!!!!!!!!!!!!!!!

Das ist totaler Schwachsinn.

Wo ist der Fehler ?

Danke schon mal,

benji

  1. Hallo benji,

    $x = 0; // x wird hochgezählt und für Dateien als id verwendet !
    $b = 2; //2 = weiß, 1 = schwarz (für bgcolor) !

    function bow ()
    {
    if($b == 2) {
      return "<td>";
      $b = 1; }
    else if($b == 1) {
      return "<td class="b">";
      $b = 2; }
    }

    $b ist eine lokale Variable, die bei jedem Aufruf der Funktion neu initialisiert wird.
    Entweder ist sie global, dann suchst Du http://de3.php.net/manual/de/language.variables.scope.php#language.variables.scope.global oder sie ist absichtlich lokal, dann suchst Du http://de3.php.net/manual/de/language.variables.scope.php#language.variables.scope.static.

    Gruss, Thoralf

    --
    Sic Luceat Lux!
    1. Hi,

      function bow ()
      {
      if($b == 2) {
        return "<td>";
        $b = 1; }
      else if($b == 1) {
        return "<td class="b">";
        $b = 2; }
      }
      $b ist eine lokale Variable, die bei jedem Aufruf der Funktion neu initialisiert wird.
      Entweder ist sie global, dann suchst Du http://de3.php.net/manual/de/language.variables.scope.php#language.variables.scope.global oder sie ist absichtlich lokal, dann suchst Du http://de3.php.net/manual/de/language.variables.scope.php#language.variables.scope.static.

      Außerdem wird $b nie etwas zugewiesen in der Funktion bow, da jeweils kurz vor den Zuweisungen die Funktion verlassen wird...

      cu,
      Andreas

      --
      Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
      http://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/
      1. Hi,

        function bow ()
        {
        if($b == 2) {
          return "<td>";
          $b = 1; }
        else if($b == 1) {
          return "<td class="b">";
          $b = 2; }
        }

        Außerdem wird $b nie etwas zugewiesen in der Funktion bow, da jeweils kurz vor den Zuweisungen die Funktion verlassen wird...

        DANKE ! Ich glaube, ich weiß, wo der Fehler liegt .... Also: statt $black oder $b nehme ich dann $td_b, und dann eben erst $td_b = x; und dann return x; - Ich habe nicht bedacht, dass durch return die gesamte Funktion abgebrochen wird !

        danke danke,

        benji