Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Dokuwiki i zliczanie plików w katalogu - automatyczna aktualizacja
Forum PHP.pl > Forum > Przedszkole
ElNinho
Witam wszystkich! Zarejestrowałem się bo mam problem i liczę, że tu znajdę jakąś pomoc.
Prowadzę stronę encyklopedii piwa ( http://beer-o-pedia.lasypolskie.pl/doku.php ) opartą na Dokuwiki w wersji "Adora Belle" z 13-10-2012 (od razu zaznaczam, że nie mogę jej uaktualnić do najnowszej wersji, bo "rozjedzie mi się szablon, który został dostosowany pod tą wersję).
Ale przejdźmy do problemu.
Miałem na stronie licznik, który podawał ile jest stron z opisami w poszczególnych kategoriach (Piwa, Piwa domowe, Inne) ale musiałem go aktualizować ręcznie po każdej zmianie zawartości. Pomyślałem, że ilość plików w katalogu mógłby zliczać skrypt i taki skrypt znalazłem:
  1. //ścieżka do katalogu
  2. $sciezka = 'nazwa_katalogu';
  3.  
  4. //ustawienie domyślnej wartości licznika plików
  5. $licznikPlikow = 0;
  6.  
  7. //otwarcie katalogu
  8. $katalog = opendir($sciezka);
  9.  
  10. //przejście po elementach katalogu
  11. while($plik = readdir($katalog))
  12. {
  13. //weryfikacja czy rzeczywiście dany element to plik
  14. if ($plik<>'.' && $plik<>'..' && !is_dir($sciezka.$plik))
  15. {
  16. //zwiększenie licznika plików
  17. $licznikPlikow++;
  18. }
  19. }
  20.  
  21. //zamknięcie katalogu
  22. closedir($katalog);
  23.  
  24. //wyświetlenie komunikatu
  25. echo 'W katalogu znaleziono '.$licznikPlikow.' plików';
Po dostosowaniu do moich potrzeb skrypt wygląda tak:
  1. $sciezka = 'data/pages/encyklopedia/piwa';
  2. $licznikPiwa = 0;
  3. $katalog = opendir($sciezka);
  4. while($plik = readdir($katalog))
  5. {
  6. if ($plik<>'.' && $plik<>'..' && !is_dir($sciezka.$plik))
  7. {
  8. $licznikPiwa++;
  9. }
  10. }
  11. closedir($katalog);
  12. echo 'Piwa: ',$licznikPiwa,' - ';
  13.  
  14. $sciezka = 'data/pages/encyklopedia/domowe';
  15. $licznikDomowe = 0;
  16. $katalog = opendir($sciezka);
  17. while($plik = readdir($katalog))
  18. {
  19. if ($plik<>'.' && $plik<>'..' && !is_dir($sciezka.$plik))
  20. {
  21. $licznikDomowe++;
  22. }
  23. }
  24. closedir($katalog);
  25. echo 'Piwa domowe: ',$licznikDomowe,' - ';
  26.  
  27. $sciezka = 'data/pages/encyklopedia/inne';
  28. $licznikInne = 0;
  29. $katalog = opendir($sciezka);
  30. while($plik = readdir($katalog))
  31. {
  32. if ($plik<>'.' && $plik<>'..' && !is_dir($sciezka.$plik))
  33. {
  34. $licznikInne++;
  35. }
  36. }
  37. closedir($katalog);
  38. echo 'Cydry, radlery, inne: ',$licznikInne,'.<br />';
  39.  
  40. $suma = $licznikPiwa + $licznikDomowe + $licznikInne;
  41. echo 'Wpisów w „Beer-o-pedii” jest już ',$suma,'!';
Skrypt działa i wyświetla to o co mi chodzi:


Jak jednak spowodować, aby wartości aktualizowały się automatycznie po każdej zmianie zawartości dowolnego ze zliczanych katalogów?
c3409394
najprossze rozwiazania to ustawic tzw. 'crona' czyli mechanizm ktory bedzie co pewna ustalona partie czasu odpalal skrypt php
brzydkie rozwiazanie: to wplesc gdzies ten kod przy odwiedzaniu stron.

tak btw. jak pewnie widzisz do wszystkich katalogow powtarza ci sie funkcjonalnosc kodu - sprobuj go troche zoptymalizowac smile.gif
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.