Visualizzazione dei risultati da 1 a 3 su 3

Discussione: [php] funzione is_dir

  1. #1

    [php] funzione is_dir

    ciao a tutti

    scusate se irrompo nuovamente con una discussione sull'uso di is_dir ma non ne vengo a capo neanche dopo aver consultato le risposte ai questiti precedenti su questo forum.

    Il mio problema: trovare e stampare solo le dir contenute in una data dir.
    Esempio: dir pippo contiene 5 file e tre dir

    setto la dir con $dir = $_SERVER["document_root"] . "/pippo";
    echo $dir mi mostra il percorso corretto: sono nella dir pippo

    apro la dir con opendir ed eseguo il ciclo while (il tutto liberamte tratto dagli articoli del sito )

    all'interno del ciclo provo:
    if(is_dir($read))
    { echo "$read
    "; }

    Ma il risultato è altalenante: una volta mi mostra solo le dir . e .., a volte nenache quelle.

    se eseguo !is_dir($read) mi stampa, correttamente, solo i file

    Forse il problema consiste nel fatto che testo questo script su winzozz xp pro?
    Ma se provo lo script sul mio caro e vecchio server linux non ottengo risultati diversi.

    Grazie a chi mi indirizzerà sulla giusta soluzione.

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Ti allego uno script che dovrebbe aiutarti. Prende le cartelle dalla cartella c:\temp. Prova a sostituire con una tua cartella.

    codice:
    <? 
    function checkDir($shift,$rep,$num) {
     $open= @OpenDir($rep);
     while($image=@ReadDir($open)) {
      if(($image!=".")&&($image!="..")) {
    	 $repertoire = $rep."/".$image;
    	 $repname    = $image;
    	 $selected   = "$shift/$image" == $GLOBALS['repert'] ? "selected" : "";
       if (is_dir($repertoire )) {
    	  //print str_repeat("", $num);?>
    		<option value="<? print "$shift/$image" ?>" <? print $selected ?>><? print $repertoire ?></option>
    		<?
    	  checkDir("$shift/$image",$repertoire,$num+3);
    	 } // if (is_dir( $image)) {
    	} // if(($image!=".")&&($image!="..")) {
     } // while($image=@ReadDir($open)) 
    } // function checkDir($shift,$rep,$num)
    
    function checkDir2($shift,$rep,$num) {
     $open= @OpenDir($rep);
     while($image=@ReadDir($open)) {
      if(($image!=".")&&($image!="..")) {
    	 $repertoire = $rep."/".$image;
    	 $repname    = $image;
       if (is_dir($repertoire )) {
    	  $deplac = str_repeat("-", $num);
    	  print "
    |$deplac$repertoire"; 
    	  checkDir2("$shift/$image",$repertoire,$num+3);
    	 } // if (is_dir( $image)) {
    	} // if(($image!=".")&&($image!="..")) {
     } // while($image=@ReadDir($open)) 
    } // function checkDir2($shift,$rep,$num)
    ?>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    <select >
     <? checkDir("  ","C:/TEMP",1) ?>
    </select>
    
    
     <? checkDir2("  ","C:/TEMP",1) ?>
    
    </body>
    </html>

  3. #3
    Grazie, proverò la tua soluzione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.