Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt wyświetlający pliki
Forum PHP.pl > Forum > Przedszkole
spokoland
Witam. mam se taki skrypt wyświetlający pliki z danego katalogu.

  1. <?php
  2.  
  3.  $katalog = dir('a'); // bieżący katalog
  4.  
  5. while($plik = $katalog->read()) {
  6.  
  7. @ include('a/'.$plik);
  8.  
  9.  
  10. }
  11.  
  12. $katalog->close();
  13.  
  14. ?>


Problem w tym że wyświetla je wg. daty utworzenia, co zrobić żeby wyświetlał odwrotnie... tzn. najnowszy u góry?
nospor
Dzial Gotowe Skrypty sluzy do umieszczania "skryptów" a nie 4 linijek kodu. Chodzi głownie o skrypty czyjegoś autorstwa, które już dzialają. Przenoszę

Co do pytania. Było. Poszukaj...
Musisz zapisac se do tablicy i ją posortować (wyswietlic w kolejnosci odwrotnej w tym przypadku)
spokoland
A w jaki sposób to zapisać do tablicy? probowałem array($plik); i sie cenzura wszystko.questionmark.gif
mike
1. Po co wulgaryzmy, język polski jest na tyle bogaty, że mozna się wysłowić bez nich.
2. A jak zapisujesz do tablicy? Pokaż kod, bo mam wrażenie, że nawet skłądni nie znasz tongue.gif W razie wątpliwości zajrzyj tutaj: Tablice (array)
spokoland
Dopiero się ucze php-ka tongue.gif... A tablic to praktycznie wogóle nie umie. Może mi ktoś przedstawić taki skrypt tworzący tablicę z tymi plikami?

Pozdro
crash
U mnie dir pobiera pliki w kolejności alfabetyczniej. Jeśli chcesz to wrzucić w tablicę w kolejności wg. czasu modyfikacji (czy innego) zaczynając od najnowszego to:
  1. <?php
  2. $dir = './a/';
  3.  
  4. $dh = dir( $dir );
  5. $fs = array();
  6.  
  7. while( ( $file = $dh->read() ) !== false )
  8. {
  9.  if( substr( $file, 0, 1 ) != '.' )
  10.  {
  11. $fs[ $file ] = filemtime( $dir . $file );
  12.  }
  13. }
  14.  
  15. arsort( $fs );
  16.  
  17. $fs = array_keys( $fs );
  18.  
  19. print_r( $fs );
  20. ?>
spokoland
wrzuciłem taki skrypt i jak otworzę ten plik to w przeglądarce mi wywala tylko takie coś:
Array ( [0] => 1.new [1] => 4.new [2] => 5.new )
nospor
i... ?
Sprawdź se w manualu co robi funkcja print_r a bedziesz wiedzial czemu tak sie dzieje...
Jak chcesz sie dobrac do nazw plikow, to przeleć tablicę (ale to brzmi winksmiley.jpg ) $fs foreachem (tez se sprawdź w manualu jak)
snipe
zamiast print_r( $fs ); poprostu dajesz to co chciales: @ include('a/'.$plik);
spokoland
Też nic... nie ma ktos całego gotowego skryptu?
nospor
Cytat
Też nic..
Domyslam sie, ze dotyczy to wypowiedzi snipea, ktora bez obrazy byla bzdurna.

Skorzystaj z mojej podpowiedzi, bo widzę ze nie raczyles...
spokoland
To zamiast tego print_r co tam wpisać?
strife
Cytat(spokoland @ 2006-02-05 00:13:39)
To zamiast tego print_r co tam wpisać?

Cytat(nospor)
przeleć tablicę (ale to brzmi  ) $fs foreachem (tez se sprawdź w manualu jak)

Dla ułatwienia dam Ci klikalny link foreach. Mam nadzieję, że sam do tego dojdziesz bez podawania Ci gotowego kodu smile.gif
snipe
nospor przyznaje sie bez bicia, ze nie spojrzalem dokladnie w kod worriedsmiley.gif
nospor
@spokoland widzę że nie wyrażasz totalnej ochoty by samemu coś napisać...
rozumiem, że jesteś początkujący, ale przy braku jakiejkolwiek inicjatywy z Twojej strony, nigdy się niczego nie nauczysz. Temat zamykam, do czasu aż dostanę od Ciebie PW z kawałkiem kodu, w którym wykorzystujesz foreach, by dobrać się do elementów tablicy, które nawiasem mówiąc są nazwami plików.

edit: otwieram, dostałem kod winksmiley.jpg
  1. <?php
  2. foreach ($fs as $file) { include('a/'.$file) ;}
  3. ?>
spokoland
Czyli wyglądało by to tak :-):

  1. <?php
  2. $dir = './a/';
  3.  
  4. $dh = dir( $dir );
  5. $fs = array();
  6.  
  7. while( ( $file = $dh->read() ) !== false )
  8. {
  9. if( substr( $file, 0, 1 ) != '.')
  10. {
  11. $fs[ $file ] = filemtime( $dir . $file );
  12. }
  13. }
  14.  
  15. arsort( $fs );
  16.  
  17. $fs = array_keys( $fs );
  18.  
  19. foreach ($fs as $file) { include('a/'.$file) ;}
  20. ?>


Próbowałem jeszcze:
  1. <?php
  2. {if (!isset($file) {echo "Brak plików";} else { include('a/'.$file);} }
  3. ?>
ale błąd wywala tongue.gif
nospor
zmienna $file zawsze jest ustawiona w petli, więc sprawdzanie jej warunkiem isset jest bez sensu winksmiley.jpg Moze miales na mysli file_exists() ?

A jaki blad ci wywala?
spokoland
  1. <?php
  2. $dir = './a/';
  3.  
  4. $dh = dir( $dir );
  5. $fs = array();
  6.  
  7. while( ( $file = $dh->read() ) !== false )
  8. {
  9.  if( substr( $file, 0, 1 ) != '.')
  10.  {
  11. $fs[ $file ] = filemtime( $dir . $file );
  12.  }
  13. }
  14.  
  15. arsort( $fs );
  16.  
  17. $fs = array_keys( $fs );
  18.  
  19.  foreach ($fs as $file) {if (!isset($file)) {echo "Brak plików";} else { include('a/'.$file);}; }
  20. ?>


Jak są pliki to wporzo a jak nie ma to jest czysta strona ;-)
ActivePlayer
  1. <?php
  2.  
  3. if (!count($fs)){
  4. echo "Brak plików";
  5. } 
  6. else{ 
  7. foreach ($fs as $file) {
  8. include('a/'.$file);
  9. }
  10. }
  11.  
  12. ?>

proponuje zaczac formatować kod smile.gif
Wave
  1. <?php
  2. if ( $pliki = glob('a/*.*') ) 
  3. {
  4.  foreach ( $pliki as $plik )
  5.  {
  6. include($plik);
  7.  }
  8. }
  9. else echo('plikow brak');
  10. ?>
spokoland
Ok ;-) dzięki wszystko działa.
Czyli teraz wyszedł mi taki prototyp systemu newsów ;-).
jaxa
  1. <?php
  2.  
  3. $uchwyt = '/siakiskatalog/';
  4. $od = opendir($uchwyt);
  5. $tablica = array();
  6. while (($file = readdir($od)) != FALSE ) 
  7. {
  8. $tablica[$file];
  9. }
  10.  
  11. print $tablica[3];
  12.  
  13. ?>


Przepraszam, ze odswiezam watek, jednak mam podobny problem do kolegi z tym, ze staram sie samemu napisac skrypt ktory przkaze liste plikow z katalogu do tablicy, jednak zly kod nie chce dzialac ! Czy bylby ktos w stanie wskazac mi pewnie prosty i dziecinny blad ? Z gory dziekuje.
crash
Zapomniałeś o closedir... Zdecyduj się:
  1. <?php
  2. $tablica[ $file ] = 'coś';
  3. ?>

Albo:
  1. <?php
  2. $tablica[] = $file;
  3. ?>

Do czego ma się odwołać ten print? Bo w takiej formie to do pliku o nazwie 3?
jaxa
Dziekuje. Problemem nie bylo closedir, a nieumiejetne przyporzadkowanie pliku do tablicy. Pierwszy kod dziala juz doszedlem dlaczego tak jest, natomiast ten print jest okej. Jeszcze raz wielkie dzieki.

/edit: Jeszcze jedno pytanie. Nie wiem dlaczego, ale gdy wrzuce plik ze skryptem do katalogu (dajmy na to np. /sliwki/), a w $uchwycie wskaze podkatalog tego katalogu (np. $uchwyt = '/jablka/') to php wywala, ze go nie ma. Jesli plik odpalam z nadrzednego folderu .. i wskaze /sliwki/jablka/ to dziala.
crash
Zmień /jablka/ na ./jablka/ (kropka na początku).
jaxa
Dziala. Dzieki.
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.