wieso funzt das nich?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • wieso funzt das nich?

    hi, ich nehme mir die frecheit das problem nochma zu posten


    search.php
    Code:
    <?
    $i=0;
    $handle=opendir ('$keyword'); 
    while (false !== ($file = readdir ($handle))) {
    	if (is_dir($file)) {
    		if ($file != "." && $file != "..") {
    			$i++; 
    			$array[$i] = $file;
    		}
    	}
    }
    closedir($handle); 
    
    if ($i > 0) {
    	sort($array);
    	while (list ($key, $val) = each ($array)) {
    		$handle=opendir($val);
    		$ff=0;
    		while (false !== ($file = readdir ($handle))) {
    			if (!is_dir("./$file")) {
    				$ff++; 
    			}
    		}
        	print "<a href=\"$val/index.php\">$val</a>&nbsp;&nbsp;&nbsp;&nbsp;($ff)<br>\n";
    	}
    } else {
    	print "Sorry, die Datenbank ist leer.";
    }
    ?>
    ich kann ihn aber mit search.php?keyword=Internet nicht sagen das er das handlen soll, obwohl es vorhanden is.. warum nich? ( Link dazu: http://www.your-castle.org/de/link_d...yword=Internet )

  • #2
    hmm,

    also
    Code:
    while (false !== ($file = readdir ($handle))) {
    stimmt so mal nicht, IMHO gibt es !== nicht, probiere mal :
    Code:
    while ($file = readdir ($handle)) {

    Kommentar


    • #3
      hmm wenn ich das so mach funzt gar nichts mehr =(

      Kommentar


      • #4
        Das Skript das Du hast paßt schon so wie es ist, ich habe es lokal bei mir getestet.

        Die Zeile: "while (false !== ($file = readdir ($handle))) {"
        ist in Ordnung.

        Mein Sample ist davon ausgegangen, daß vom Verzeichnis aus indem sich das Skript befindet die Files der Unterverzeichnisse gezählt werden:

        Das war das Original:
        $handle=opendir ('.');

        Du hast ein
        $handle=opendir ('$keyword');
        daraus gemacht.

        Wenn Du nun relativ von diesem Verzeichnis was lesen willst mußt du den gewünschten relativen Pfadnamen zum Skript zusammenbasteln, in etwa so:

        if (!isset($keyword)) {
        $keyword = ".";
        } else {
        $keyword = "./".$keyword;
        }

        Ich kann es zur Zeit leider nicht testen, aber in diese Richtung liegt die Lösung.

        Vermutlich mußt Du beim folgenden if auch noch den relativen Pfad hineincustomizen
        if (!is_dir("./$file")) {
        $ff++;
        }

        Kommentar


        • #5
          hmm okay, ich bastle mal rum =)

          Kommentar


          • #6
            hmm,

            also hier mal meine Version und ich hab da jetzt ein seltscames Problem gefunden, der erkennt nur . und .. als Directory, alle anderen Dirs findet er leider nicht !
            Code:
            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
            
            <html>
            <head>
            	<title>Untitled</title>
            </head>
            
            <body>
            <?php
            
            
            $i=0;
            $diry = "c:\\".$keyword;
            $handle= opendir ($diry); 
            while ($fil
            e = readdir ($handle)) 
            	{
            		echo $file."<br>";
            		echo is_dir($file);
            		if (is_dir($file)) 
            			{
            			  if (!(($file == ".") OR ($file == ".."))) 
            					{
            						$i++; 
            						$array[$i] = $file;
            						echo $file."<br>";
            					}
            			}	
            		clearstatcache();
            	}
            closedir($handle); 
            
            if ($i > 0) 
            	{
            		sort($array);
            		while (list ($key, $val) = each ($array)) 
            			{
            				$handle=opendir($val);
            				$ff=0;
            				while ($file = readdir ($handle)) 
            					{
            						if (!is_dir("./$file")) 
            							{
            								$ff++; 
            							}
            					}
            				print "<a href=\"$val/index.php\">$val</a>&nbsp;&nbsp;&nbsp;&nbsp;($ff)<br>\n";
            			}
            	} 
            else 
            	{
            		print "Sorry, die Datenbank ist leer.";
            	}
            ?>
            
            
            
            
            </body>
            </html>
            die Ausgabe auf meinem Rechner dazu =
            .
            1..
            1dlls
            extensions
            install.txt
            java
            LICENSE
            MIBS
            pdf-related
            pear
            php.exe
            php.ini-dist
            php.ini-optimized
            php4.gif
            php4ts.dll
            php4ts.lib
            sapi
            Sorry, die Datenbank ist leer.
            die ein vor .. und die 1 vor dlls sind die TRUE Zeiger die die is_dir Funktion zurückgibt für . und .. , aber dlls, extensions usw. sind auch Directorys, sie werden aber nicht gefunden durch die Funktion is_dir. Warum weiss ich jetz auchnicht da ich nicht viel mit Dateisystemen zu tun habe.

            Sky ??

            Kommentar

            Lädt...
            X