Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] zawarto¶ć katalogu
Forum PHP.pl > Forum > Przedszkole
dave666
Witam problem polega na tym że skrypt ma wy¶wietlać pliki z katalogu a tgo nie robi nie pokazuje zawarto¶ci katalogu czego tu brakuje
  1. <?php
  2.  
  3. $dir = "upload/";
  4.  
  5. if (!isset($_POST['usun'])):
  6.  
  7. $pliki = array();
  8. $accept_rozs = array('bmp','png','jpg','rar','zip','exe','jpeg','pdf','flv','gif','JPG','psd','txt','amr', 'wav', 'mp3', 'dat','swf','doc','docx');//akceptowane pliki
  9. if ($dh = opendir($dir)) //otworzenie folderu
  10. {
  11. while ($file = readdir($dh))
  12. {
  13. if($file)
  14. $file_rozs=substr($file, -4);
  15.   if(in_array(strToLower($file_rozs),$accept_rozs))
  16.     {    
  17.     $images_array[]=$file;//dodanie obrazka do tablicy
  18.     }
  19. }
  20. closedir($dh);//zamkniecie folderu
  21.  }
  22.  
  23.  
  24. echo "<form action=".$_SERVER['PHP_SELF']." method=post>";
  25. foreach ($pliki as $val) {
  26.   echo " <img src=$dir".$val." width=\"60px\" height=\"60px\"></a>";
  27.   echo "<b>".$val."</b>";
  28.   echo "<input type=checkbox name=pliki[] value=".$val.">";
  29.   }
  30. echo"<br>";
  31. echo "<input name=usun type=submit value=usuń>";
  32. echo "</form>";
  33.  
  34. else:
  35.  
  36. foreach ($_POST['pliki'] as $val) {
  37.   unlink($dir.$val);
  38.   echo "<b>plik został usunięty </b>".$val."";
  39.   echo "<br>";
  40.   echo"<meta http-equiv=\"Refresh\" content=\"2\">";
  41.  
  42.  
  43.  
  44.  
  45. }
  46.  
  47. endif;
  48.  
  49. ?>
wookieb
1) Tablica $pliki jest pusta. Nie widzisz tego? Nie uzupełniasz jej Zamien "$images_array" na "$pliki"
2) Pobierasz nazwe rozszerzenia wraz z kropka a sprawdzasz rozszerzenie bez kropki.
Zrob pobieranie rozszerzenia za pomoca substr i strrpos dla znaku "."
dave666
oki to poprawiłem już wy¶wietla elegancko tylko jest taki problem ze jak chce usun±ć plik który ma np nazwe "plik 1 .jpg" ze snakami spacji to mi go nie usuwa co mam zrobić aby zaczęło usuwać
nospor
nie: echo "<input type=checkbox name=pliki[] value=".$val.">";
a: echo '<input type=checkbox name=pliki[] value="'.$val.'">';
dave666
Działa dziękuję za podpowiedz działa tak jak miało winksmiley.jpg


tylko teraz taki jest problem nie pokazuje mi plików z rozszerzeniem które ma więcej niż 3 znaki czyli np .docx .jpeg
bliitz
prawdopodobnie dlatego że masz substr( ..., -4 ) i teraz jak masz rozszerzenie bmp to zwraca .bmp a w przypadku jpeg pomija kropkę przed rozszerzeniem i zamiast plik.bmp masz plikjpeg
Maxik
Może zamiast pobierać rozszerzenie substr użyj explode" title="Zobacz w manualu PHP" target="_manual i end" title="Zobacz w manualu PHP" target="_manual zróci Ci rozszerzenie niezależnie od jego długości.
golaod
Albo strrpos i niech znajdzie ostatni± kropkę następenie:
  1. <?php
  2. $nazwa_pliku = substr($file,0,strrpos($file,'.'));
  3. $rozszerzenie = substr($file,strrpos($file,'.')+1,strlen($file));
  4. ?>

Dlaczego tak zamiast explode ? A co w sytuacji plik.php.txt ?
Maxik
Cytat
A co w sytuacji plik.php.txt ?


Dlatego napisałem o end które wybiera ostatni element z tablicy którym będzie rozszerzenie.
dave666
A więc panowie swoj± wiedz± mnie zaskakujecie kiedy¶ może i ja będę tyle umieć co wy a teraz z wracam się z pro¶b± jak zastosować wasze propozycje do tego skryptu
  1. <?php
  2.  
  3. $dir = "upload/";
  4.  
  5. if (!isset($_POST['usun'])):
  6.  
  7. $pliki = array();
  8. $accept_rozs = array('.bmp','.png','.jpg','.rar','.zip','.exe','jpeg','.pdf','.flv','.gif','.JPG','.psd','.txt','.amr', '.wav', '.mp3', '.dat','.swf','.doc','docx');//akceptowane pliki
  9. if ($dh = opendir($dir)) //otworzenie folderu
  10. {
  11. while ($file = readdir($dh))
  12. {
  13. if($file)
  14. $file_rozs=substr($file, -4);
  15.  if(in_array(strToLower($file_rozs),$accept_rozs))
  16.    {    
  17.    $pliki[]=$file;//dodanie obrazka do tablicy
  18.    }
  19. }
  20. closedir($dh);//zamkniecie folderu
  21. }
  22.  
  23.  
  24. echo "<form action=".$_SERVER['PHP_SELF']." method=post>";
  25. foreach ($pliki as $val) {
  26.  echo " <img src=$dir".$val." width=\"60px\" height=\"60px\"></a>";
  27.  echo "<b>".$val."</b>";
  28.  echo '<input type=checkbox name=pliki[] value="'.$val.'">';
  29.  }
  30. echo"<br>";
  31. echo "<input name=usun type=submit value=usu?>";
  32. echo "</form>";
  33.  
  34. else:
  35.  
  36. foreach ($_POST['pliki'] as $val) {
  37.  unlink($dir.$val);
  38.  echo "<b>plik zosta? usuni?ty </b>".$val."";
  39.  echo "<br>";
  40.  echo"<meta http-equiv=\"Refresh\" content=\"2\">";
  41.  
  42.  
  43.  
  44.  
  45. }
  46.  
  47. endif;
  48.  
  49. ?>
Majzel
a czy nie lepiej sprawdzać typ pliku?
  1. <?php
  2. if ($dokladny_typ == "image/jpeg" || $dokladny_typ == "image/gif" || $dokladny_typ == "image/tiff" || $dokladny_typ == "image/png" ) {
  3. ?>

Wtedy chyba nie można obej¶ć już tego smile.gif Ale nie wiem winksmiley.jpg
webmaniak
Wittam!
Mam taka funkcje
  1. $root = 'modules'; //?›cie??ka do g?‚??wnego katalogu
  2. $katalog = ''; //na wszelki wypadek "zerujemy" zmiennÄ… katalog
  3.  
  4. if (isset ($_GET['katalog']))
  5. {
  6. $katalog = $_GET['katalog']; //je?›li jest zmienna GET o nazwie katalog, to przypisujemy jÄ… do zmiennej - pozwala to w menad??erze zag?‚Ä™biać siÄ™ w katalogi
  7. }
  8.  
  9. //$katalog = str_replace ('..', '', $katalog); //czy?›cimy ?›cie??kÄ™ z cofajÄ…cych kropek (??eby userzy nie mogli chodzić po ca?‚ym serwerze, a tylko po wybranym katalogu)
  10.  
  11. if (!is_dir ($root . DIRECTORY_SEPARATOR . $katalog))
  12. {
  13. $katalog = ''; //je?›li podany katalog nie istnieje, to wracamy do katalogu g?‚??wnego - dziÄ™ki zastosowaniu sta?‚ej skrypt bÄ™dzie dzia?‚a?‚ bez problem??w zar??wno w Windowsie, jak i serwerach UNIXowych
  14. }
  15.  
  16. $temp = explode ('/', $katalog); //dzieli ?›cie??kÄ™ na elementy sk?‚adowe
  17. $tab = array ();
  18. $ile = count ($temp); //zliczenie element??w sk?‚adowych ?›cie??ki
  19.  
  20. for ($i = 0; $i < $ile; $i++)
  21. {
  22. if ($temp[$i] != '' && $temp[$i] != '.')
  23. {
  24. $tab[] = $temp[$i]; //wyczyszczenie ?›cie??ki z element??w '' i '.', kt??re powodujÄ… niewchodzenie g?‚Ä™biej
  25. }
  26. }
  27.  
  28. $ile = count ($tab);
  29. $sciezka = '';
  30. echo '<a href="modules">Download</a><br>'; //nazwa nie gra roli - chodzi o ustawienie ?›cie??ki do katalogu g?‚??wnego
  31.  
  32. for ($i = 0; $i < $ile; $i++)
  33. {
  34. $sciezka .= $tab[$i] . '/'; //rekonstrukcja poprawnej ?›cie??ki
  35. echo ' / <modules/' . $sciezka . '">' . $tab[$i] . '</a>'; //dziÄ™ki temu nad ca?‚ym menad??erem pojawi siÄ™ "?›cie??ka dostÄ™pu" wraz z klikalnymi nazwami poszczeg??lnych katalog??w, po klikniÄ™ciu kt??rych zostaniemy do nich przeniesieni - dziÄ™ki temu zamiast mozolnie starać siÄ™ przej?›Ä‡ 5 katalog??w w g??rÄ™, klikamy tylko raz nazwÄ™ katalogu na ?›cie??ce
  36. }
  37.  
  38. //tu siÄ™ zaczyna w?‚a?›ciwy skrypt
  39. $dir = opendir ($root . DIRECTORY_SEPARATOR . $sciezka);
  40. while (($element = readdir ($dir)) !== false) //pÄ™tla przechodzi przez ca?‚Ä… zawarto?›Ä‡ katalogu
  41. {
  42. if ($element != '.' && $element != '..')
  43. {
  44. if (is_dir ($root . DIRECTORY_SEPARATOR . $sciezka . $element))
  45. {
  46. echo '<a href="modules/' . $sciezka . $element . '"><img src="./modules/dokumentacja/images/folder.png" alt="[dir]">' . $element . '</a><br>'; //tworzy link do podkatalogu, podaje jego nazwÄ™ oraz ikonkÄ™ graficznÄ… katalogu (??eby na pierwszy rzut oka by?‚o widać questionmark.gife to katalog) - mo??na te?? dodatkowo na przyk?‚ad pogrubić tekst
  47. }
  48. else
  49. {
  50. echo '<a href="' . $root . DIRECTORY_SEPARATOR . $sciezka . $element . '"><img src="./modules/dokumentacja/images/file.png" alt="[file]">' . $element . '</a><br>'; //analogicznie jak powy??ej, z tym questionmark.gife skrypt podaje link do pliku, ??eby mo??na by?‚o go ?›ciÄ…gnąć; proponujÄ™ wprowadzić tu jakie?› filtrowanie i zmieniać obrazki w zale??no?›c od rozszerzenia pliku
  51. }
  52. }
  53. }
  54.  
  55. closedir ($dir);
  56.  

Teraz mam pytanie jak zrobić w takim czym¶ żeby jak wejdę w kolejny folder to żebym tam znowu mógł widzieć jakie pliki się tam znajduj±. Szukałem trochę w sieci, na tym forum jest co najmniej kilka tematów, jednak jak patrzyłem to przeważnie jest widok konkretnego katalogu, a ja potrzebuję do podkatalogów. Co mam wpisać w $sciezka żeby to działało tak jak oczekuję, albo w innym miejscu? Będę niezwykle wdzięczny za wszelk± pomoc.
P.S. Naprawdę bardzo proszę o cokolwiek co nakieruje, naprawdę cokolwiek.
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.