[PHP] Galeria na kilku stronach
: pt maja 12, 2006 11:56 pm
Witam,
Mam taki problem. Mianowicie tworzę sobie skrypt galerii obrazków. Obrazki są zapisane w katalogu images. Skrypt generuje tabelę html'a w której wyświetla obrazki, a w zasadzie miniatury obrazków, które są również linkami do powiększonych zdjęć. Na jednej stronie pojawia się 16 obrazków (tabela 4x4). Generowanie obrazków następuje po pobraniu listy plików z katalogu images, następnie zapisanie do tablicy tejże listy (każdy plik to oddzzielny rekord tablicy) i wyświetlenie elementów tablicy w zwykłej pętli. Problem zaczyna się w momencie kiedy w katalogu jest dużo plików i chcę żeby przy większej ilości niż 16 plików generowany(kopiowany) był kolejny plik .php również z ze zdjęciami, ale aby skrypt zaczynał wyświetlanie elementów tablicy w skopiowanym pliku w przedziale (16;32). Wykombinowałem to w ten sposób, że jeśli ilość elementów tablicy jest większa niż 16 wtedy skrypt kopiuje w zasadzie siebie zmieniając nazwę. Tylko że jak zrobić, aby zmienić w skopiowanym pliku właśnie ten przedział, aby w drugim pliku wyświetlał 16;32 w kolejnym 32;48 etc. Ponadto musi tu być jeszcze taka opcja, że na samym początku przed wykonaniem głównej części kodu (generowanie tabel i kopiowanie plików) skrypt sprawdza czy istnieją już wcześniej utworzone (skopiowane) pliki i jeśli tak to je automatycznie kasuje i dopiero wtedy zależnie od ilości plików (obrazów) tworzy kolejne pliki php. Ale się rozpisałem, ale chyba lepiej żeby było jasno wytłumaczone niż w dwóch zdaniach i w zasadzie nie wiadomo co miałbym na myśli. Poniżej podaję kod i link do skryptu. Ma ktoś jakiś pomysł???
[php]
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<title>images</title>
<body>
<?
//lista plików na srwerze w katalogu images
$dir=opendir('./images');
$file_list=" ";
while($file_name=readdir($dir))
{
if(($file_name!=".")&&($file_name!=".."))
{
$file_list.=" $file_name";
}
}
$file_list.=""; closedir($dir);
//umieszczenie w tablicy nazw plików z kat. images
$dupa = explode(" ", $file_list);
// tutaj zaczyna się generowanie tabeli wypełnianej plikami graficznymi
echo "<center><table border='0'><p class='paragraph'>";
for ($index = 2; $index < count($dupa); $index++)
{
if ($index > 17)
{
/* tutaj natomiast rozpoczyna się tworzenie pliku (kopiowanie) i chciałbym żeby w nowym pliku pętla wyglądała nieco inaczej, mianowicie żeby zaczynała się od pliku 17 i konczyła na 32, a poza tym żeby do tych poniższych warunków odnośnie wstawiania znacznika tr również było dodawane 16. Jak to zrobić?*/
$aCurBasePath = dirname( $PATH_TRANSLATED );
$aNewName = "gallery".$index.".php" . $thefile;
$thefile = "gallery.php";
if (file_exists($aNewName))
{
echo "<a href='".$aNewName."'><center>Następna strona</center></a><br><br>";
}
else
{
copy ($thefile, $aNewName );
echo "<a href='".$aNewName."'><center>Następna strona</center></a><br><br>";
}
break;
}
else if ($index == 2 || $index == 6 || $index == 10 || $index == 14)
{
echo "<tr>";
echo "<td align='center'>$dupa[$index]<br><a href = 'images/".$dupa[$index]."'><img border = '0' src = 'images/".$dupa[$index]."' width = '100' height = '75'></a> <form method='post' action = 'del.php'><input type = 'submit' name = 'cokolwiek' value = 'images/".$dupa[$index]."'></form> <br></td>";
}
else if ($index == 6 || $index == 10 || $index == 14 || $index == 18)
{
echo "<td align='center'>$dupa[$index]<br><a href = 'images/".$dupa[$index]."'><img border = '0' src = 'images/".$dupa[$index]."' width = '100' height = '75'></a> <form method='post' action = 'del.php'><input type = 'submit' name = '".$dupa[$index]."'></form> <br></td>";
echo "</tr>";
}
else if ($index != 2 || $index != 6 || $index != 10 || $index != 14)
{
echo "<td align='center'>$dupa[$index]<br><a href = 'images/".$dupa[$index]."'><img border = '0' src = 'images/".$dupa[$index]."' width = '100' height = '75'></a> <form method='post' action = 'del.php'><input type = 'submit' name = '".$dupa[$index]."'></form> <br></td>";
}
}
//koniec petli
?>
</html>
?>[/php]
A tutaj obiecany link:
http://www.dnawrot.webas.pl/php/gallery.php
Bardzo bym prosił, aby ktoś mi pomógł, bo w zasadzie to takie rzeczy jak generowanie kolejnych stron ze zdjęciami to raczej podstawowa sprawa dla tych którzy zajmują się php-em.
Dzięki z góry.
Pozdrawiam
goodghost
Mam taki problem. Mianowicie tworzę sobie skrypt galerii obrazków. Obrazki są zapisane w katalogu images. Skrypt generuje tabelę html'a w której wyświetla obrazki, a w zasadzie miniatury obrazków, które są również linkami do powiększonych zdjęć. Na jednej stronie pojawia się 16 obrazków (tabela 4x4). Generowanie obrazków następuje po pobraniu listy plików z katalogu images, następnie zapisanie do tablicy tejże listy (każdy plik to oddzzielny rekord tablicy) i wyświetlenie elementów tablicy w zwykłej pętli. Problem zaczyna się w momencie kiedy w katalogu jest dużo plików i chcę żeby przy większej ilości niż 16 plików generowany(kopiowany) był kolejny plik .php również z ze zdjęciami, ale aby skrypt zaczynał wyświetlanie elementów tablicy w skopiowanym pliku w przedziale (16;32). Wykombinowałem to w ten sposób, że jeśli ilość elementów tablicy jest większa niż 16 wtedy skrypt kopiuje w zasadzie siebie zmieniając nazwę. Tylko że jak zrobić, aby zmienić w skopiowanym pliku właśnie ten przedział, aby w drugim pliku wyświetlał 16;32 w kolejnym 32;48 etc. Ponadto musi tu być jeszcze taka opcja, że na samym początku przed wykonaniem głównej części kodu (generowanie tabel i kopiowanie plików) skrypt sprawdza czy istnieją już wcześniej utworzone (skopiowane) pliki i jeśli tak to je automatycznie kasuje i dopiero wtedy zależnie od ilości plików (obrazów) tworzy kolejne pliki php. Ale się rozpisałem, ale chyba lepiej żeby było jasno wytłumaczone niż w dwóch zdaniach i w zasadzie nie wiadomo co miałbym na myśli. Poniżej podaję kod i link do skryptu. Ma ktoś jakiś pomysł???
[php]
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<title>images</title>
<body>
<?
//lista plików na srwerze w katalogu images
$dir=opendir('./images');
$file_list=" ";
while($file_name=readdir($dir))
{
if(($file_name!=".")&&($file_name!=".."))
{
$file_list.=" $file_name";
}
}
$file_list.=""; closedir($dir);
//umieszczenie w tablicy nazw plików z kat. images
$dupa = explode(" ", $file_list);
// tutaj zaczyna się generowanie tabeli wypełnianej plikami graficznymi
echo "<center><table border='0'><p class='paragraph'>";
for ($index = 2; $index < count($dupa); $index++)
{
if ($index > 17)
{
/* tutaj natomiast rozpoczyna się tworzenie pliku (kopiowanie) i chciałbym żeby w nowym pliku pętla wyglądała nieco inaczej, mianowicie żeby zaczynała się od pliku 17 i konczyła na 32, a poza tym żeby do tych poniższych warunków odnośnie wstawiania znacznika tr również było dodawane 16. Jak to zrobić?*/
$aCurBasePath = dirname( $PATH_TRANSLATED );
$aNewName = "gallery".$index.".php" . $thefile;
$thefile = "gallery.php";
if (file_exists($aNewName))
{
echo "<a href='".$aNewName."'><center>Następna strona</center></a><br><br>";
}
else
{
copy ($thefile, $aNewName );
echo "<a href='".$aNewName."'><center>Następna strona</center></a><br><br>";
}
break;
}
else if ($index == 2 || $index == 6 || $index == 10 || $index == 14)
{
echo "<tr>";
echo "<td align='center'>$dupa[$index]<br><a href = 'images/".$dupa[$index]."'><img border = '0' src = 'images/".$dupa[$index]."' width = '100' height = '75'></a> <form method='post' action = 'del.php'><input type = 'submit' name = 'cokolwiek' value = 'images/".$dupa[$index]."'></form> <br></td>";
}
else if ($index == 6 || $index == 10 || $index == 14 || $index == 18)
{
echo "<td align='center'>$dupa[$index]<br><a href = 'images/".$dupa[$index]."'><img border = '0' src = 'images/".$dupa[$index]."' width = '100' height = '75'></a> <form method='post' action = 'del.php'><input type = 'submit' name = '".$dupa[$index]."'></form> <br></td>";
echo "</tr>";
}
else if ($index != 2 || $index != 6 || $index != 10 || $index != 14)
{
echo "<td align='center'>$dupa[$index]<br><a href = 'images/".$dupa[$index]."'><img border = '0' src = 'images/".$dupa[$index]."' width = '100' height = '75'></a> <form method='post' action = 'del.php'><input type = 'submit' name = '".$dupa[$index]."'></form> <br></td>";
}
}
//koniec petli
?>
</html>
?>[/php]
A tutaj obiecany link:
http://www.dnawrot.webas.pl/php/gallery.php
Bardzo bym prosił, aby ktoś mi pomógł, bo w zasadzie to takie rzeczy jak generowanie kolejnych stron ze zdjęciami to raczej podstawowa sprawa dla tych którzy zajmują się php-em.
Dzięki z góry.
Pozdrawiam
goodghost