Zweite While wird nicht ausgeführt

weedo

Erfahrenes Mitglied
Hi,

Ich habe in meiner Mysql Datenbank diverse Einträge. Diese sollen entweder Ordner oder Dateien darstellen, da ich später in einem Script zwischen diversenen Ordnern navigieren möchte.

Nun werden die Ordner so angezeigt, wie sie angezeigt werden sollen. Nur die Dateien wollen nicht ganz. Warum wird die zweite While nicht ausgeführt?

PHP:
<?php
  
  include("../functions.php");
  include("../mysql.php");
  
  switch($_GET["id"]) {
    case "":
      eval ("\$content_head = \"".gettemplate("content_head")."\";");
      echo $content_head;
      
      $result = mysql_query("SELECT id, name, inhalt, ordner, subvon FROM contents WHERE subvon = '0' ORDER BY name ASC") or die(mysql_error());
      $a = 0;
      while($db = mysql_fetch_assoc($result) or die(mysql_error())) {
        $id = $db["id"];
        $name = $db["name"];
        $inhalt = $db["inhalt"];
        $ordner = $db["ordner"];
        $subby = $db["subvon"];
        $dbclick_function = "openFolder('$id')";
        $folder_pic = "folder2.png";
        if($ordner == 1) {
          $a++;
          if($a == 5) {
            print "</tr><tr><td width=25% align=center>";
          } else {
            print "<td width=25% align=center>";
          }
          eval ("\$content_body = \"".gettemplate("content_body")."\";");
          echo $content_body;
          echo "</td>";
        }
      }
      $result2 = mysql_query("SELECT id, name, inhalt, ordner, subvon FROM contents WHERE subvon = '0' ORDER BY name ASC") or die(mysql_error());
      while($da = mysql_fetch_assoc($result2) or die(mysql_error())) {
        $id = $da["id"];
        $name = $da["name"];
        $inhalt = $da["inhalt"];
        $ordner = $da["ordner"];
        $subby = $da["subvon"];
        $dbclick_function = "openEditor('$id')";
        $folder_pic = "file.png";
        if($ordner != 1) {
          $a++;
          if($a == 5) {
            print "</tr><tr><td width=25% align=center>";
          } else {
            print "<td width=25% align=center>";
          }
          eval ("\$content_body = \"".gettemplate("content_body")."\";");
          echo $content_body;
          echo "</td>";
        }
      }
      eval ("\$content_foot = \"".gettemplate("content_foot")."\";");
      echo $content_foot;
    break 1;
    
  }

?>
 
Mehr als einmal...

Das, was mich am meisten wundert ist, wenn ich die Abfrage if($ordner == 1) { rausnehme, zeigt er mir ja alle Einträge an. Nur nicht so, wie ich es möchte.

Warum ich mir das so kompliziert mache, hat eigentlich folgenden Grund. Es soll aussehen Wie in einem File Explorer. Ordner zuerst nach Namen geordnet, danach die Dateien nach Namen geordnet.
 
Hast du mal $ordner mit var_dump() geprüft?
Kannst du mal die Ausgabe vom var_dump() hier posten?
PHP:
var_dump($ordner );
 
Fatal error: Function name must be a string in D:\xampp\htdocs\bpr\admin\content.php on line 31

//Edit

Ah halt - Tippfehler 8)

In der ersten while gibt er das aus:
Code:
string(1) "1" string(1) "1"

Soweit ja auch richtig. Es sind ja nur 2 Ordner.

In der zweiten hingegen garnichts.
 
Zuletzt bearbeitet:
Ne war nur ein Tippfehler....

In der Zeile 31 hab ich versehentlich $var_dump($ordner); eingetragen...kann ja auch nicht funktionieren :rolleyes:
 
Beide SQL von dir sind völlig identisch bis zum Letzten Zeichen. Somit geben beide dasselbe Resultat. Also $ordner => 1
somit wird beim zweiten while wo du auf ($ordner != 1) prüfst natürlich nix ausgegeben.

PHP:
      $result = mysql_query("SELECT id, name, inhalt, ordner, subvon FROM contents WHERE subvon = '0' ORDER BY name ASC") or die(mysql_error());
      $result2 = mysql_query("SELECT id, name, inhalt, ordner, subvon FROM contents WHERE subvon = '0' ORDER BY name ASC") or die(mysql_error());



Nachtrag:
der var_dump($ordner) solltest du aussehralb des if($ordner != 1) ausführen....
 
Zuletzt bearbeitet:
Es wird nichts ausgegeben.

Die zweite While wird auch komplett ignoriert.

Ich habe in zeile 34 mal while(true) { geschrieben. Es passiert nichts.
 
Jetzt musst du den Fehler eingrenzen.

Wird die Zeile $result2 = mysql_query(.. überhaubt ausgeführt? Schreib mal vor diese Zeile ein var_dump(1); rein um zu sehen ob du überhaubt so weit kommst.

Debuggen ist angesagt
 
Zurück