Automatisches auslesen von Ordnernamen...

full-mann

Gamma Draconis
31 Juli 2006
135
13
Hai,
ich habe ein Problem mit einem Script.
Habe mir etwas gebaut, das mit die Ordnernamen ab einem bestimmten Pfad raussucht. Ich weiß halt wieviel Ordner danach noch kommen usw, deswegen kann ich das so machen, wie ich es habe.

mode 1 funktioniert ohne probleme.
Bei Mode 2 bekomme ich folgende Fehlermeldung:
Warning: readdir(): 2 is not a valid Directory resource in /home/www/web24/html/franzi/side/gallerie.php on line 99

Habe schon alles mögliche Versucht. Habe den Ordnernamen mal direkt und nicht über die Variable übergeben. Habe den Codeausschnitt für Mode2 mal in eine eigene Datei getan und die Ordnernamen, die er mir raussuchen soll umbenannt.

Aber der Fehler geht nicht weg. Hat vielleicht jemand eine Idee?
Habe dieses Problem mittlerweile schon in 2 Foren gepostet, und im php.de-IRC-Channel angegeben, aber es kann mir irgendwie bis jetzt keiner helfen.

Wäre echt start wenn mir jemand von euch helfen könnte!
Danke schonmal im Voraus und hier kommt der Code:

PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<link rel="stylesheet" type="text/css" href="../style/style.css"> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 
<body> 
<center> 
<table> 
<tr> 
<td valign="top"> 
<table> 
<?php 
switch($_GET['mode']) 
{ 
    case 1: 
     
         $aordner = glob('../gallerie/_vorschau/*', GLOB_ONLYDIR); 
         $aordner = count($aordner); 
         $aordner = $aordner/2; 
         $i = 0; 
         $ordner = "../gallerie/_vorschau"; 
         $handle = opendir($ordner); 
         while ($file = readdir($handle)) 
         { 
             if($file != "." && $file != "..") 
             { 
                 if($i >= $aordner) 
                 { 
                     echo "</table>\n"; 
                     echo "</td>\n"; 
                     echo "<td valign='top'>\n"; 
                     echo "<table>\n"; 
                     $i = -1; 
                 } 
                 echo "<tr><td colspan='2'><b><font size='6'>".$file."</font></b></td></tr>\n"; 
                 $handle2 = opendir($ordner."/".$file); 
                 while ($file2 = readdir ($handle2)) 
                 { 
                     if($file2 != "." && $file2 != "..") 
                     { 
                         if(is_dir($ordner."/".$file2)) 
                         { 
                             echo "/".$file2."<br/>"; 
                         } 
                         else 
                         { 
                             // kompletter Pfad 
                             $link = "gallerie2.php?mode=1&art=".$file."&bla=".$file2; 
                             $vn = $ordner."/".$file."/".$file2."/"; 
                             $barray = array(1,2,3,4,5); 
                             $verzeichnis = opendir($vn); 
                             while($file3 = readdir($verzeichnis)) 
                             { 
                                 if($file3 != "." and $file3 != "..") 
                                 { 
                                     $s = @getimagesize($vn."/".$file3); 
                                     if(in_array($s[2], $barray)) 
                                     { 
                                         $auswahl[] = $file3; 
                                     } 
                                 } 
                             } 
                             mt_srand((double)microtime()*1000000); 
                             $number = mt_rand(0,count($auswahl)-1); 
                             $titelcount = strlen($file2); 
                             if($titelcount > 30) 
                             { 
                                 $antitel = substr($file2,0,30); 
                                 echo "<tr><td><a href='".$link."'><img src='".$vn.$auswahl[$number]."' width='100' border='0' align='center'></a></td>\n"; 
                                 echo "<td><a href='".$link."'>".$antitel."...</a></td></tr>\n"; 
                             } 
                             else 
                             { 
                                 echo "<tr><td><a href='".$link."'><img src='".$vn.$auswahl[$number]."' width='100' border='0' align='center'></a></td>\n"; 
                                 echo "<td><a href='".$link."'>".$file2."</a></td></tr>\n"; 
                             } 
                             $vn = ""; 
                             $barray = ""; 
                             $verzeichnis = ""; 
                             $file3 = ""; 
                             $s = ""; 
                             $auswahl = ""; 
                             $number = ""; 
                         } 
                     } 
                 } 
                 closedir($handle2); 
                 $i++; 
             } 
         } 
         closedir($handle); 
    break; 

    case 2: 

         $arordner = "../archive/_vorschau"; 
         $arhandle = opendir($arordner); 
         while ($arfile = readdir($arhandle)) 
         { 
             if($arfile != "." && $arfile != "..") 
             { 
                echo "<tr><td colspan='2'><b><font size='6'>".$arfile."</font></b></td></tr>\n"; 
                $arhandle2 = opendir($arordner."/".$arfile); 
                while ($arfile2 = readdir ($arhandle2)) 
                { 
                        if($arfile2 != "." && $arfile2 != "..") 
                        { 
                                if(is_dir($arordner."/".$arfile2)) 
                                { 
                                    echo "<a href='gallerie2.php?mode=2&art=".$arfile."&bla=".$arfile2.">".$arfile2."</a>"; 
                                } 
                        } 
                } 
                closedir($arhandle2); 
             } 
             closedir($arhandle); 
         } 
break; 

default: 
        echo "Fehler: "modeless"<br>\nWo möchtest du hin?<br>\n<a href='gallerie.php?mode=1'>Pics</a> oder <a href='gallerie.php?mode=2'>Archive</a>\n"; 
        break; 
} 
?> 
</table> 
</center> 
</body> 
</html>
 
so öffne ich einen ordner

ich prüfe mit is_dir($dir) ob das was ich öffnen will auch ein ordner ist

PHP:
if (is_dir($dir)) {
   if ($dh = opendir($dir)) {
       while (($file = readdir($dh)) !== false) {
           
		  
		   
       }
       closedir($dh);
   }
}
 
Naja, dass hilft mir jetzt nicht wirklich weiter.
Du überprüfst damit ja nur, ob das was geöffnet wird, ein Ordner ist.

Und in meinem Fall weiß ich ja, dass die Ordner die ich öffnen möchte auch so vorhanden sind.

Vielen Dank für deinen Beitrag, aber wie ich schon gesagt habe, komme ich damit auch nicht weiter.

Hast du oder vielleicht jemand anderes noch eine Idee?
 
Hast du oder vielleicht jemand anderes noch eine Idee?

Na ja wer quält sich schon gerne freiwillig durch so einen Batzen Code? Mich hat's gestern ehrlich gesagt abgeschreckt, aber weil mir gerade langweilig ist.. gut; es lässt sich also auf dieses Stück Code eingrenzen ($_GET['mode'] == 2):

PHP:
         $arordner = "../archive/_vorschau"; 
         $arhandle = opendir($arordner); 
         while ($arfile = readdir($arhandle)) 
         { 
             if($arfile != "." && $arfile != "..") 
             { 
                echo "<tr><td colspan='2'><b><font size='6'>".$arfile."</font></b></td></tr>\n"; 
                $arhandle2 = opendir($arordner."/".$arfile); 
                while ($arfile2 = readdir ($arhandle2)) 
                { 
                        if($arfile2 != "." && $arfile2 != "..") 
                        { 
                                if(is_dir($arordner."/".$arfile2)) 
                                { 
                                    echo "<a href='gallerie2.php?mode=2&art=".$arfile."&bla=".$arfile2.">".$arfile2."</a>"; 
                                } 
                        } 
                } 
                closedir($arhandle2); 
             } 
             closedir($arhandle); 
         }

Hm und wie vermutet hat dir hans1987 eigentlich schon den richtigen Tipp zu deinem Fehler [Warning: readdir(): 2 is not a valid Directory resource in /home/www/web24/html/franzi/side/gallerie.php on line 99] gegeben! Die Datei gallerie.php ist nun mal kein Ordner.
 
Danke erstmal für deinen Beitrag.

Stimmt. Die gallerie.php ist kein Ordner.
Aber die wird ja auch von dem readdir garnicht angepackt.

Im readdir wird ja erstmal ein Ordner zurückgesprungen und dann der Ordner "archive/_vorschau" geöffnet.

Da drin gibt es keine Dateien, sondern nur 4 weitere Ordner.
In diesen 4 Ordnern gibt es weitere Ordner.

Und das Script sollte dies so auslesen, besonders, weil Mode1 funktioniert, und der genau so aufgebaut ist (vom öffnen her - da werden natürlich noch zufallsbilder angezeigt, die es beim archive nicht geben soll)

Deswegen komme ich ja mit dem Code nicht zurecht, weil ich keinerlei Fehler sehe. Und mit is_dir prüfen macht ja auch keinen sinn, wenn ich genau weiß, dass es ein Ordner ist.
 
Sorry wegen Doppelpost, aber ich kann aus irgendeinem Grund in diesem Forum keine Beiträge editieren.

Habe es mal so versucht, wie von euch vorgeschlagen.

Mit is_dir.

Es funktioniert. Ich sehe zwar keinen unterschied zu vorher, aber es geht.

Vielen Dank an dieser Stelle, falls mir noch einer erklären kann, warum es nicht ging, bin ich sehr dankbar.
 
PHP:
$arhandle = opendir($arordner); 
         while ($arfile = readdir($arhandle))
du öffnest den ordner $arordner und gehst ja mit while den ganzen inhalt stück für stück durch. Sprich in $arfile steht dann der name von einem ordner oder von einem file.

PHP:
$arhandle2 = opendir($arordner."/".$arfile); 
                while ($arfile2 = readdir ($arhandle2))
hier öffnest du nun was in $arfile steht, wenn nun hier ein file drin steht statts ein ordner bekommste natürlich einen fehler, weil du ja versuchst einen ordner zu öffnen, der keiner ist