Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Stronicowanie katalogów
Gibcio2008
post 21.06.2009, 17:53:37
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 26.10.2008

Ostrzeżenie: (0%)
-----


Witam !
Napotkałem się na następujący problem:

W katalogu głównym jest 100 podkatalogów i chciałbym zastosować stronicowanie żeby na stronie widocznych było po 10 katalogów, zastosowanie stronicowania na plikach nie daje rezultatów.

Proszę o pomoc - z góry dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
phpion
post 21.06.2009, 17:56:28
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Zapisz listę plików do tablicy, a potem wybierz odpowiedni zakres elementów tej tablicy (a'la LIMIT + OFFSET w MySQL) i wyświetl.
Go to the top of the page
+Quote Post
Gibcio2008
post 21.06.2009, 18:07:15
Post #3





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 26.10.2008

Ostrzeżenie: (0%)
-----


Nie ma żadnych plików.

Jeden główny katalog i w nim 100 podkatalogów.
Go to the top of the page
+Quote Post
phpion
post 21.06.2009, 18:38:02
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




I co to zmienia? Jeśli robi to dla ciebie jakąś różnicę to:
Cytat(phpion @ 21.06.2009, 18:56:28 ) *
Zapisz listę plików katalogów do tablicy, a potem wybierz odpowiedni zakres elementów tej tablicy (a'la LIMIT + OFFSET w MySQL) i wyświetl.
Go to the top of the page
+Quote Post
Gibcio2008
post 21.06.2009, 19:14:25
Post #5





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 26.10.2008

Ostrzeżenie: (0%)
-----


Wszystkiego próbowałem, i nic

  1. <?
  2.  
  3. $handle = opendir('users');
  4. while($file = readdir($handle))
  5. {
  6. if($file != '.' && $file != '..')
  7. {
  8. $files = file('users/'.$file.'/'.$file.'');
  9. foreach($files as $line)
  10. {
  11. $user = explode('||', chop($line));
  12. echo '<tr>';
  13. echo '<td width="20%">'.$user[0].'</td>';
  14. echo '<td width="20%"><a href="mailto:'.$user[4].'">'.$user[4].'</a></td>';
  15. echo '<td width="20%"><a href="GG:'.$user[5].'">'.$user[5].'</a></td>';
  16. echo '<td width="20%">'.$user[6].'</td>';
  17. echo '<td width="20%"><a href=".$user[7]." target="_BLANK">'.$user[7].'</td>';
  18. echo '</tr>';
  19. }
  20. }
  21. }
  22. closedir($handle);
  23. ?>


Ten post edytował Gibcio2008 21.06.2009, 19:20:21
Go to the top of the page
+Quote Post
Crozin
post 21.06.2009, 19:23:15
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


glob" title="Zobacz w manualu PHP" target="_manual + array_slice" title="Zobacz w manualu PHP" target="_manual... no i trochę arytmetyki.
Go to the top of the page
+Quote Post
em1X
post 21.06.2009, 19:39:24
Post #7





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

Ostrzeżenie: (0%)
-----


człowieku najpierw musisz pojąć co chcesz zrobić, nie uczyłeś się nigdy matematyki w ogóle?

postaw sobie na biurku 11 wykałaczek.. jakbyś miał je podzielić na 3 grupki to jak obliczysz ile grupek Ci wyjdzie? A jak policzysz, którą wykałaczkę chciałbyś obejrzeć zakładając, że chcesz pooglądać drugą grupkę. Wszystko się składa to paru operacji dodawania i dzielenia. W czym problem?


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post
Gibcio2008
post 22.06.2009, 08:45:42
Post #8





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 26.10.2008

Ostrzeżenie: (0%)
-----


Problem w tym że nie wiem gdzie umieścić stronicowanie - przed $handle = opedir, czy po foreach
Go to the top of the page
+Quote Post
em1X
post 22.06.2009, 10:20:22
Post #9





Grupa: Zarejestrowani
Postów: 984
Pomógł: 41
Dołączył: 16.03.2002
Skąd: Płock

Ostrzeżenie: (0%)
-----


withstupidsmiley.gif

Twoje handle i foreach służy do wyświetlania katalogów.. co to ma wspólnego ze stronicowaniem?questionmark.gif

  1. <?php
  2. // katalog, ktory ma byc stronicowany
  3. $katalog='/twoj/adres/do/katalogu';
  4.  
  5. // ile katalogow na strone?
  6. $porcja=10;
  7.  
  8. if (!is_dir($katalog)) {
  9.   die('Taki katalog nie istnieje, popraw sciezke.');
  10. }
  11.  
  12. // pobieramy katalogi
  13. $lista=array();
  14. foreach(glob($katalog,GLOB_ONLYDIR) as $dir)
  15. {
  16.   if ($dir != '.' && $dir != '..')
  17.      $lista[]=$katalog;
  18. }
  19.  
  20. // obliczamy ilosc stron
  21. $ilosc_stron=ceil(count($lista)/$porcja);
  22.  
  23. // pobieramy z adresu, ktora strone wyswietlac
  24. $strona=intval(@$_GET['strona']);
  25.  
  26. // jezeli ktos przesadzil, z numerem strony to trzeba go poprawic
  27. $strona=$strona > $ilosc_stron || $strona < 0 ? 0 : $strona;
  28.  
  29. // wyswietlamy katalogi
  30. $od=$porcja*$strona;
  31. $do=($od+$porcja)-1;
  32.  
  33. // rysuj katalogi
  34. for ($i=$od; $i<=$do; $i++)
  35. {
  36.   print $lista[$i] . '<br/>';
  37. }
  38.  
  39. // rysuj stronicowanie
  40. print '<hr/>';
  41. for ($i=0; $i<$ilosc_stron; $i++)
  42. {
  43.   print '<a href="index.php?strona='.$i.'" alt="skok do strony '.($i+1).'>'.($i+1).'</a> ';
  44. }
  45. ?>


pisane z głowy bez żadnego sprawdzania więc nie dam ręki uciąć, że nie ma żadnych błędów

Ten post edytował em1X 22.06.2009, 10:23:21


--------------------
eh, co polska wódka to polska wódka
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 16.07.2025 - 08:30