Strona 1 z 1

[PHP] Galeria na kilku stronach

: pt maja 12, 2006 11:56 pm
autor: goodghost
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

Re: [PHP] Galeria na kilku stronach

: sob maja 13, 2006 7:31 am
autor: Balas
Zamiast takich kobinacji mozna wszystko zrobic w jednym pliku i zastosowac stronicowanie. Pozniej tylko pobierasz z adresu odopowiednia zmienna (np. nr strony) i na tej podstawie wyswietlasz odpowiednie zdjecia.

btw. w skrypcie przydalo by sie wyswietlanie miniaturek ;)

i:
[php]<?php
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>";


}
?>[/php]

Zamiast takiego niezrozumialego kodu mozesz zrobic:


[php]<?php
if($index%4 == 1) {
echo '<tr>';
}

echo 'czesc kodu';

if($index%4 == 0) {
echo '</tr>';
}
?>[/php]