Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wypisanie ostatnio dodanych plikow do katalogu na serverze
Forum PHP.pl > Forum > Przedszkole
uglukha
Witam wszystkich serdecznie,
to moj pierwszy post tutaj, wiec moze pare slow wstepu smile.gif
Glownie znam sie na grafice i css i html, a php po prostu uzywam albo skryptow, ktore napisalem dawno temu, albo jakis przerobionych z netu, zdecydowanie nie czuje sie programista i to moja najslabsza strona.

Niestety przypadlo mi napisanie paru linijek kodu, i nie wiem jak sie do tego zabrac.



Zadanie jest takie, ze na serwerze firmowym mamy katalog www.adresstronyfirmy.com/projekt123/teksty/
Ludzie wrzucaja tam pliki .doc na wszelkie mozliwe sposoby, przez klienta ftp/panel administracyjny/formularz na stronie itd. Wiele osob pracujacych przy danym projekcie ma do tego dostep.

I musze teraz napisac prosty skrypt, ktory:
  1. Sprawdzi daty dodania wszystkich plikow .doc w danym katalogu
  2. Przypisze nazwy ostatnio dodanych 10 plikow do zmiennych, czyli np.
    1. <?php
    2. $plik1 = zenek.doc;
    3. $plik2 = umowa.doc;
    4. ?>

    itd
  3. Utworzy linki na docelowej stronie:
    1. Ostatnio dodane/zmieniane pliki:
    2. <A HREF="www.adresstronyfirmy.com/projekt123/teksty/zenek.doc">zenek</A>
    3. <A HREF="www.adresstronyfirmy.com/projekt123/teksty/umowa.doc">umowa</A>

    itd.

O ile z punktem 3 sobie poradze (chociaz nie wiem jak usunac ".doc" w nazwie odnosnika ;/ ) to punkty 1 i 2 to dla mnie czarna magia. Przegladajac php.net trafilem na file_exists, ale to sprawdza jeden konkretny plik. Da sie to jakos przeroibc zeby sprawdzalo pliki o danym rozszerzeniu?
Bede wdzieczny za wszelka pomoc i nakierowanie mnie na odpowiednie funkcje czy tez slowa kluczowe, ktorych szukac w google, bo gdy szukam operacji na plikach, to wyskakuja mi same tutoriale dla poczatkujacych o tym jakto wczytac i zapisac plik.

Z gory dziekuje za pomoc!
Pozdrawiam!
xbigos
Polecam lekturę

http://pl.php.net/manual/pl/ref.filesystem.php

a w szczególności

fileatime i filemtime



.doc usuwasz przy pomocy explode. file_exist sprawdza czy takowy plik istnieje więc przyjmijmy narazie, że Ci się nie przyda. Potrzebny Ci będzie później gdy trochę rozwiniesz swój skrypt.
uglukha
ok, dzieki xbigos za wskazowke, troche poszperalem, jako ze ciezko mi takie rzeczy ida, wiec najpierw teoretycznie:

za pomoca jakiejs petli z glob

  1. <?php
  2. foreach (glob("*.doc")
  3. ?>


znajde wszystkie pliki .doc, przypisze je do jakis zmiennych, a pozniej przez

filemtime

odczytam ich daty modyfikacji, i chyba bede musial to zapisac do array, zeby moc skorzystac z

sort

do ulozenia wg daty modyfikacji.

dobrze rozumuje?
erix
filemtime" title="Zobacz w manualu PHP" target="_manual jako klucz w tablicy, wartości - nazwy i potem asort" title="Zobacz w manualu PHP" target="_manual. ;]
uglukha
dzieki erix

eh,strasznie to trudne dla mnie, powiedzcie czy dobrze kombinuje:

  1. <?php
  2. $plikidoc = array (
  3.  foreach (glob("*.doc") as $filename) {
  4. "pliki" => array("$filename") ;)
  5. );
  6. asort ($plikidoc);
  7. foreach ($plikidoc as filemtime($filename) => $val) {
  8. echo "$filename = $val\n";
  9. }
  10. ?>


jesli nie namieszalem, to najpierw znajduje to pliki .doc, wpisuje do tablicy, pozniej sortuje wg daty modyfikacji i wypisuje wszystkie pokolei

ide spac, jutro zerkne w robocie czy to dziala , ale pewnie nie ;P
artega
Ten kod powinien pomóc - skrypt wyszukuje pliki *.doc, sortuje według daty ostatniej modyfikacji i wyświetla od najnowszego.
  1. <?php
  2.  
  3. $pliki = glob("*.doc");
  4.  
  5. $czas_pliku = array();
  6.  
  7. foreach ($pliki as $plik)
  8. {
  9. $czas_pliku[] = filemtime($plik);
  10. }
  11.  
  12. arsort($czas_pliku);
  13.  
  14. while (list($klucz) = each($czas_pliku))
  15. {
  16. echo $pliki[$klucz]."<br>";
  17. }
  18.  
  19. ?>
uglukha
wielkie dzieki artega! poszlo "pomogl"

teraz widze ile nasadzilem bledow w moim nedznym kodzie, Twoj ma sens, moj teraz widze ze nie specjalnie winksmiley.jpg

mam nadzieje ze z reszta juz sobie poradze, jeszcze raz dzieki, pewnie pare dni by mi zajelo napisanie tego heh biggrin.gif


EDIT:
Nie wiem jak, ale udalo mi sie napisac to biggrin.gif
Wrzucam caly skrypt, moze sie komus przyda tongue.gif
Dzieki wszystkim za pomoc.

P.S. aha z wyswietlania ostatnich 10 na razie rezygnuje, ma sie wyswietlac wszystko.

  1. <?php
  2.  
  3. $pliki = glob("*.doc");
  4.  
  5. $czas_pliku = array();
  6.  
  7. foreach ($pliki as $plik)
  8. {
  9. $czas_pliku[] = filemtime($plik);
  10. }
  11.  
  12. arsort($czas_pliku);
  13.  
  14. while (list($klucz) = each($czas_pliku))
  15. {
  16.  
  17. echo '<a href="'.$pliki[$klucz].'">'.substr($pliki[$klucz],0,strlen($pliki[$klucz])-4).'</a> ('.date ("d.m.Y, godz. H:i", filemtime($pliki[$klucz])).')<br>'."\n";
  18.  
  19. }
  20.  
  21. ?>



daje to taki wynik:
  1. <a href="zenek.doc">zenek</a> (06.05.2008, godz. 09:59)<br>
  2. <a href="umowa.doc">umowa</a> (05.05.2008, godz. 16:48)<br>
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.