Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Listing katalogów :P
Forum PHP.pl > Forum > Przedszkole
cadavre
OK - tylko mnie nie zabijcie... tongue.gif Przeszukałem całe forum i nie znalazłem, żadnej funkcji, którą mogłbym przerobić na własne potrzeby. Sęk w tym, że może i nie jest to mega skomplikowane do zrobienia, ale już gubię się w tych opendirach.
Mianowicie chodzi mi o to, żeby skrypt pokazywał listę katalogów oraz plików, ale... żeby obok (tylko) plików widniało ładne pole checkbox czy też radio, które po zaznaczeniu i wysłaniu w formie zwracało w zmiennej $jakastamnazwa adres do pliku.
Fajnie co?
  1. <?php
  2.  
  3.  $path = $_GET["path"];
  4.  if( !isset( $path ) || $path == "" ) {
  5.  $path = ".";
  6.  }
  7.  
  8.  print "Aktualnie w: <b>" . $path . "</b><br />";
  9.  
  10.  $d_arr = array(); $d = 0;
  11.  $f_arr = array(); $f = 0;
  12.  
  13.  if( is_dir( $path ) ) {
  14.  if( $handle = opendir( $path ) ) {
  15.  while( false !== ( $file = readdir( $handle ) ) ) {
  16.  if( $file != "." && $file != ".." && $file[0] != "." ) {
  17.  if( is_dir( $path . "/" . $file ) )
  18.  $d_arr[$d++] = $file;
  19.  else
  20.  $f_arr[$f++] = $file;
  21.  }
  22.  }
  23.  }
  24.  }
  25.  
  26.  if( is_dir( $handle ) ) closedir( $handle );
  27.  
  28.  asort( $d_arr ); reset( $d_arr );
  29.  asort( $f_arr ); reset( $f_arr );
  30.  
  31.  $d_prev = substr( $path, 0, ( strrpos( dirname( $path . "/." ), "/" ) ) );
  32.  print "<a href="?path=" . $d_prev . "">Do góry</a><br />n";
  33.  
  34.  for( $i=0; $i < count( $d_arr ); $i++ ) {
  35.  # Print with query string
  36.  print "[ F ] <a href="?path=" . $path . "/" . $d_arr[$i] . "">" . $d_arr[$i] . "</a>/<br />n";
  37.  }
  38.  
  39.  for( $i=0; $i < count( $f_arr ); $i++ ) {
  40.  print "[ P ] <a href="" . $path . "/" . $f_arr[$i] . ""> " . $f_arr[$i] . "</a>";
  41.  if( filesize( $path . "/" . $f_arr[$i] ) >= 1024 ) {
  42.  print " " . round( filesize( $path . "/" . $f_arr[$i] ) / 1024, 1 ) . " KB<br />n";
  43.  } elseif( filesize( $path . "/" . $f_arr[$i] ) >= 1048576 ) {
  44.  print " " . round( filesize( $path . "/" . $f_arr[$i] ) / 1024 / 1024, 1 ) . " MB<br />n";
  45.  } else {
  46.  print " " . filesize( $path . "/" . $f_arr[$i] ) . " bajtów<br />n";
  47.  }
  48.  }
  49.  
  50. ?>
Próbuję zmodyfikować wyżej zlistingowany skrypt, jednak na razie po godzince roboty nie doszedłem do niczego ciekawego. :/
SongoQ
Jak zwrocic liste katalogow i plikow chyba byl w manualu a dorobic check'i to chyba nie jest taki wielki problem.
Lars
  1. <?php
  2.  
  3. // konfig
  4. $dirname='/'; ## nazwa folderu
  5. // end konfig
  6.  
  7. if(!isset($_POST['submit'])) {
  8. echo '<form action="" method="post">';
  9. $dir=opendir($dirname);
  10. while($name=readdir($dir)) {
  11. echo '<input type="checkbox" name="value" value="'.$name.'">'.$name.'<br>';
  12. }
  13. closedir($dir);
  14. echo '<input type="submit" name="submit" value="Wykonaj ->">';
  15. } else {
  16. echo $_POST['value'];
  17. }
  18. ?>
cadavre
Super dzięki za ogólny zarys! Zrobiłem tak:
  1. <?php
  2.  
  3. $dirname='./';
  4.  
  5. if(!isset($_POST['submit'])) {
  6. echo '<form action="pokaz.php" method="post"><select name="plik">';
  7. $dir=opendir($dirname);
  8. while($name=readdir($dir)) {
  9. echo '<option value="'.$name.'">'.$name.'<br>';
  10. }
  11. closedir($dir);
  12. echo '</select><input type="submit" name="submit" value="Zaznacz"></form>';
  13. } else {
  14. echo $_POST['plik'];
  15. }
  16. ?>

oraz tak:
  1. <?php
  2.  
  3.  $path = $_GET["path"];
  4.  if( !isset( $path ) || $path == "" ) {
  5.  $path = ".";
  6.  }
  7.  echo '<form action="pokaz.php" method="post">';
  8.  print "Aktualnie w: <b>" . $path . "</b><br />";
  9.  
  10.  $d_arr = array(); $d = 0;
  11.  $f_arr = array(); $f = 0;
  12.  
  13.  if( is_dir( $path ) ) {
  14.  if( $handle = opendir( $path ) ) {
  15.  while( false !== ( $file = readdir( $handle ) ) ) {
  16.  if( $file != "." && $file != ".." && $file[0] != "." ) {
  17.  if( is_dir( $path . "/" . $file ) )
  18.  $d_arr[$d++] = $file;
  19.  else
  20.  $f_arr[$f++] = $file;
  21.  }
  22.  }
  23.  }
  24.  }
  25.  
  26.  if( is_dir( $handle ) ) closedir( $handle );
  27.  
  28.  asort( $d_arr ); reset( $d_arr );
  29.  asort( $f_arr ); reset( $f_arr );
  30.  
  31.  $d_prev = substr( $path, 0, ( strrpos( dirname( $path . "/." ), "/" ) ) );
  32.  print "<a href="?path=" . $d_prev . "">Do góry</a><br />n";
  33.  
  34.  for( $i=0; $i < count( $d_arr ); $i++ ) {
  35.  # Print with query string
  36.  print "[ F ] <a href="?path=" . $path . "/" . $d_arr[$i] . "">" . $d_arr[$i] . "</a>/<br />n";
  37.  }
  38.  
  39.  for( $i=0; $i < count( $f_arr ); $i++ ) {
  40.  print "[ P ] <input type=checkbox name=plik value=$path/$f_arr[$i]>$path <a href="" . $path . "/" . $f_arr[$i] . ""> " . $f_arr[$i] . "</a>";
  41.  if( filesize( $path . "/" . $f_arr[$i] ) >= 1024 ) {
  42.  print " " . round( filesize( $path . "/" . $f_arr[$i] ) / 1024, 1 ) . " KB<br />n";
  43.  } elseif( filesize( $path . "/" . $f_arr[$i] ) >= 1048576 ) {
  44.  print " " . round( filesize( $path . "/" . $f_arr[$i] ) / 1024 / 1024, 1 ) . " MB<br />n";
  45.  } else {
  46.  print " " . filesize( $path . "/" . $f_arr[$i] ) . " bajtów<br />n";
  47.  }
  48.  }
  49.  echo '<input type="submit" name="submit" value="Wykonaj ->"></form>';
  50.  
  51. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.