Witam,
Mam "mały" problem z galerią zdjęć, który pojawia się z chwilą, gdy ilość zdjęć pokrywa się dokładnie z iloczynem zadeklarowanej ilości wierszy i kolumn (w tym przypadku 3*5).
Kiedy mam 15 zdjęć (czyli dokładnie tyle ile wynosi iloczyn wierszy i kolumn), to zdjęcia się nie wyświetlają. Gdy zdjęć jest mniej lub więcej niż 15, to wszystko działa jak należy.
Kod:
<?php
/* Ustalamy w jakim katalogu znajduja sie zdjecia oraz ile wierszy i kolumn bedzie tworzyc galeria jednej strony. */
define('KATALOG_ZDJEC','galeria/');
/*
Przeczesujemy wybrana lokalizacje w poszukiwaniu plikow .jpg i zapisujemy ich nazwy w tablicy $album.
Wszelkie informacje o plikach beda teraz odczytywane z tej tablicy dzieki czemu ograniczymy mielenie dyskiem do minimum :)
*/
$x=0;
foreach (glob(KATALOG_ZDJEC
."{*.jpg,*.JPG*.gif,*.GIF*.png,*.PNG}", GLOB_BRACE
) as $zdjecie) $album[$x++]=$zdjecie; /* Zliczamy ile fotek lacznie pojawi sie na jednej stronie oraz calkowita ich liczbe */
$na_stronie=WIERSZY*KOLUMN;
/*
Dzieki czemu mozemy wyliczyc liczbe stron. Czesc calkowita z dzielenia liczby fotek przez liczbe zdjec na jednej stronie da laczna liczbe stron.
Jesli zostanie jakas reszta z dzielenia to znaczy ze potrzebujemy jeszcze jednej strony dla wyswietlenie kilku ostatnich zdjec.
*/
$stron=floor($razem/$na_stronie); $stron+=$razem % $na_stronie ? 1:0;
/*
Zmienna $pokaz_strone przechowuje nr. akutalnej strony do wyswietlenia.
Jesli wartosc nie zostala ustalona (http://szabloniki.com/galeria.php) przyjmujemy ze wyswietlamy strone 1.
*/
@$pokaz_strone=$_GET['pokaz_strone'];
if (!isset($pokaz_strone)) $pokaz_strone=1;
/* Bedziemy odczytywac tylko te fragmenty tablicy $album ktore zawieraja zdjecia wystepujace na danej stronie, dlatego potrzebujemy ustalic jaki bedzie to obszar. */
$start=($pokaz_strone-1) * $na_stronie;
$stop=($pokaz_strone==$stron) ? $razem % $na_stronie: $na_stronie;
$stop+=$start;
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"700\"><tr>";
/* Z wybranych elementow rysujemy tabelke */
for ($x=$start;$x<$stop;$x++)
{
/* Jesli osiagnieto ustalona liczbe kolumn przechodzimy do nastepnego wiersza */
if (!($x % KOLUMN
)) echo "</tr><tr>";
/* Tworzymy obrazek ktory wygenerowany zostanie przez skrypt mini.php na podstawie przekazanej nazwy pliku. */
echo "<td><a href=\"".$album[$x]."\" rel=\"lightbox [galeria]\" title=\"Galeria\"><img src=\"mini.php?fotka="."{$album[$x]}\"></a><br>";
/* Ponizsze linie sprawdzaja czy w katalogu ze zdjeciem istnieje taki sam plik z roszerzeniem .txt. Jesli tak, wyswietla jego zawartosc pod zdjeciem. */
{
$plik=fopen(KATALOG_ZDJEC
.$info.".txt","r"); }
}
echo "<table><tr><td colspan=\"4\" height=\"35\"> </td></tr></table>";
/* Jesli mamy wiecej niz jedna strone wyswietlimy ich liste */
if ($stron>1)
{
echo "Strona: "; for($x=1;$x<=$stron;$x++) {
/* Biezaca strone pogrubimy a pozostale beda linkami z odpowiednim adresem */
if ($pokaz_strone==$x)
else
echo "<a href=\"index.php?strona=galeria&pokaz_strone=$x\"> $x </a>"; }
}
?>
Wydaje mi się, że błąd leży w liniach 34-36, ale niestety nie mogę sobie z nim poradzić.
Ten post edytował Przemo75 26.07.2011, 08:28:13