Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Galeria formatowanie wyświetlania
Forum PHP.pl > Forum > PHP
lDoran
Witam napisałem klasę galerii, jednak formatowanie wyświetlanie nie dokładnie działa tak jak bym chciał. Przy układzie 4x3 wszystko ładnie się wyświetla, ale przy 3x4 mam 6 kolumn zamiast 3. Nie za bardzo wiem jak to wykodzić, żeby niezależnie od ustawienia poprawnie się wyświetlało.
  1. <?php
  2.  
  3. class miniGallery {
  4. public function getGalleryImages($dirName, $pages) {
  5. if($this->checkImages($dirName) == false) {
  6. $this->getGalleryList($dirName);
  7.  
  8. $counter = count($this->aGallery);
  9. for($i = 0; $i < $counter; $i++) {
  10. $this->imageCreator(dirname(__FILE__) . '/' . $dirName . '/' . $this->aGallery[$i]);
  11. }
  12. }
  13. /*
  14.   * Kopiowanie tablicy aGallery do tablicy originalImages
  15.   */
  16. $counter = count($this->aGallery);
  17. for($i = 0; $i < $counter; $i++) {
  18. $originalImages[$i] = $this->aGallery[$i];
  19. }
  20.  
  21. $this->getGalleryList(dirname(__FILE__) . '\gallery\thumbs');
  22. /*
  23.   * Selekcja miniaturek
  24.   */
  25. $counter = count($this->aGallery);
  26. $j = 0;
  27. for($i = 0; $i < $counter; $i++) {
  28. if($originalImages[$i] == $this->aGallery[$i]) {
  29. $miniatureImages[$j] = $this->aGallery[$i];
  30. $j++;
  31. }
  32. }
  33. /*
  34.   * Oblicznie stronnicowania
  35.   */
  36. $numPages = ceil((count($originalImages) / ($this->horizontall * $this->verticall)));
  37. if($pages == '') {
  38. $i = 0;
  39. $pages = 1;
  40. } else {
  41. $i = ($this->horizontall * $this->verticall) * ($pages - 1);
  42. }
  43.  
  44.  
  45. /*
  46.   * Wyświetlenie galerii obrazów
  47.   */
  48. $horizontall = 0; //Licznik poziomu
  49. $verticall = 0; //Licznik pionu
  50. $counter = count($miniatureImages);
  51. for($i; $i < $counter; $i++) {
  52. $horizontall++;
  53. $verticall++;
  54. echo '<a href="./' . $dirName . '/' . $originalImages[$i] . '" rel="lightbox[roadtrip]">';
  55. echo '<img src="./gallery/thumbs/' . $miniatureImages[$i] . '" id="img"> ';
  56. echo '</a>';
  57. if($horizontall % $this->horizontall == 0)
  58. echo '<br/>';
  59. if($verticall % ($this->verticall * 3 + $this->verticall) == 0)
  60. break;
  61. }
  62.  
  63. /*
  64.   * Wyświetlenie stronnicowania
  65.   */
  66. echo '<br/>';
  67. for($i = 1; $i <= $numPages; $i++) {
  68. if($i == $pages) {
  69. echo '<span id="pages_selected">&nbsp;';
  70. echo $pages;
  71. echo '&nbsp;</span> ';
  72. } else
  73. echo '<a href="index.php?pages=' . $i . '" name="pages" id="pages">&nbsp;' . $i . '&nbsp;</a> ';
  74. }
  75. }
  76.  
  77. private function checkImages($dirName) {
  78. //Pobranie listy dużych zdjęć
  79. $this->getGalleryList($dirName);
  80. $counter = count($this->aGallery);
  81. for($i = 0; $i < $counter; $i++) {
  82. $originalImages[$i] = $this->aGallery[$i];
  83. }
  84.  
  85. //Czyszczenie tablicy aGallery
  86. $counter = count($this->aGallery);
  87. for($i = 0; $i < $counter; $i++) {
  88. $this->aGallery[$i] = 0;
  89. }
  90. //Pobranie listy miniatur
  91. $this->getGalleryList(dirname(__FILE__) . '\gallery\thumbs');
  92. $counter = count($this->aGallery);
  93. for($i = 0; $i < $counter; $i++) {
  94. $miniatureImages[$i] = $this->aGallery[$i];
  95. }
  96.  
  97. //Sprawdzanie czy wszystkie zdjęcia mają miniaturę
  98. $counter = count($originalImages);
  99. $j = 0; //Musi być równe zmiennej $counter
  100. for($i = 0; $i < $counter; $i++) {
  101. if($originalImages[$i] == $miniatureImages[$i])
  102. $j++;
  103. }
  104.  
  105. if($j == $counter)
  106. return true;
  107. else
  108. return false;
  109. }
  110.  
  111. private function getGalleryList($dirName) {
  112. $sCatalogs = opendir($dirName);
  113.  
  114. $counter = 0;
  115. while($dir = readdir($sCatalogs)) {
  116. if($dir != '.' && $dir != '..' && $dir != 'Thumbs.db') {
  117. $this->aGallery[$counter] = $dir;
  118. $counter++;
  119. }
  120. }
  121. }
  122.  
  123. private function imageCreator($fileName) {
  124. if(!$img = imagecreatefromjpeg($fileName)) {
  125. return false;
  126. }
  127.  
  128. $imgW = imagesx($img); //Szerokość zdjęcia
  129. $imgH = imagesy($img); //Wysokość zdjęcia
  130. $ratio = $imgW / $imgH; //Stosunek szerokości do wysokości
  131.  
  132. if($ratio > 1) {
  133. $newImgW = $this->imgSize;
  134. $newImgH = ($this->imgSize / $ratio);
  135. } else {
  136. $newImgW = ($imgW * $ratio);
  137. $newImgH = $this->imgSize;
  138. }
  139.  
  140. $tempImg = imagecreatetruecolor($newImgW, $newImgH);
  141. imagecopyresampled($tempImg, $img, 0, 0, 0, 0, $newImgW, $newImgH, $imgW, $imgH);
  142. $newName = explode('/', $fileName);
  143. $name = dirname(__FILE__) . '\gallery\thumbs\\' . $newName[3];
  144. imagejpeg($tempImg, $name);
  145. }
  146.  
  147. private $imgSize = 135; //Rozmiar miniatury
  148. private $aGallery;
  149. private $horizontall = 3; //Ilość zdjęć w poziomie
  150. private $verticall = 4; //Ilość zdjęć w pionie
  151. }
  152. ?>
nospor
NIepotrzebnie do wyliczania używasz zarówno kolumn i wierszy i ci się przez to miesza.
Do wyliczania używaj np. tylko kolumn, wiersze same sie zrobią gdy wyciągniesz żądaną liczbę rekordów (kolumna * wiersz).
Pisałem mini arcik o dzieleniu wyswietlania
http://nospor.pl/co-trzy-wyswietlanie-danych.html
w paczce do pobrania oraz w komentarzach masz przykładowe kody. Moze ci się przyda.
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.