Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Geleria... i co dalej
Forum PHP.pl > Forum > Gotowe rozwiązania
SoulAssassin
Nigdy nie mogłem znaleźć prostego skryptu który by wrzucał miniaturki grafiki z katalogu do tabeli jako odnośniki do większych obrazków, więc korzystając z kodów umieszczonych na tym forum zlepiłem skrypcik. Na moje potrzeby starczy i przynajmniej kumam co robi.(tak mi się zdaje)
Mam jednak prośbę. Jest napisany chaotycznie (nie jestem programistą) i pewnie można go poprawić więc proszę o wskazówki...
(małe i duże grafiki muszą mieć te same nazwy, z tym że małe są w katalogu "m" a znajduje się on tam gdzie duże)
[php:1:fa42a6a368]<?php
<?
include ("index.txt");
// wstawia stronę (przyciski które będą widoczne cały czas i takie tam...)

$max="18";
$_GET['gdzie'] ;
if ($gdzie =="") {
include ("index2.txt");//jeśli otworzy się bez parametru to pokaze obrazki które bedą odnośnikami do kolejnych kategorii galerii

}
else { // a jeśli z parametrem to funkcja galeria bedzie robić to co trzeba
function gal() { //funkcja czytajaca pliki
global $gdzie;
global $ile;

$dir = opendir($gdzie);
while ($file = readdir($dir)) {
$ext = explode('.',$file);
$cnt = count($ext);
if (($ext = 'jpg')&&($file <> ".")&&($file <> "..")&&($file <> 'm'))// w każdym katalogu z plikami jest katalog m z miniaturkami dlatego m musi pominąć $tgal[] = $file ;
}
closedir ($dir);

return $gal ;// zapisuje w tablicy nazwy plików

} //koniec funkcji
$pliki = gal(); // a to to nie wiem po co ?
$ile=count($pliki);// liczy elementy w tablicy

if (($page > ceil($ile/$max))||($page < 0))$page="1" ;//to też bym zastąpił czymś lepszym

if($page==""){ // to też
$page="1";
$start="0";
}
else{
$start=$page*$max;
$start=$start-$max;
}
//wyświetla pliki w tabeli
echo "n<table border="0" width="100%" cellpadding="10" cellspacing="0">n";
for ($index=$start, $a=0; $index < $page*$max; $index++)
{
if($a==0)
{
echo "n<tr>";
echo "<td align="center" valign="middle"><a href=jeden/$pliki[$index]><img src=jeden/m/$pliki[$index] border=0></a></td>";
$a+=1;
}
elseif($a==1)
{
echo "<td align="center" valign="middle"><a href=jeden/$pliki[$index]><img src=jeden/m/$pliki[$index] border=0></a></td>";
$a+=1;
}
elseif($a==2)
{
echo "<td align="center" valign="middle"><a href=jeden/$pliki[$index]><img src=jeden/m/$pliki[$index] border=0></a></td>";
echo "n</tr>";
$a=0;
} }//koniec wyświetlania miniaturek
// wyświetla numery stron
$stron=ceil($ile/$max);
//wykonujemy pętle
echo "<td colspan=3 align="center" valign="middle">";

for ($in=1; $in < $stron; $in++) {
// żeby numer aktualnej strony nie był linkiem
if($page==$in)
{
echo" <font color="red"><b>$in</b></font> ::";
}
else{
//jesli nie tworzymy link do strony
echo" <b><a href="index.php?gdzie=jeden&page=$in">$in</a></b> ::";

}
}

?>
?>[/php:1:fa42a6a368]

e tak w ogóle to aż wstyd mi wysyłać taki kod. Ale działa...
tylko poradźcie co zmienić. Głównie chodzi mi o to by nazwy katalogów nie były widoczne w url-u. Może inną zmienną jako numerki i switch - case, ale nie wiem czemu mi nie wychodzi.
No i zabezpieczenia np żeby nie wyświetlał błędu jak zmienna page to nie liczba (też mi nie wyszło).
Uff
Cudi
Nudziło mi się, nudziło, nudziło..... aż znalazłem tego posta i postanowiłem troche pokodować smile.gif Oto efekt mojej walki z nudą winksmiley.jpg
[php:1:79ce749ade]<?php
// funkcja zwracająca tablice z nazwami wszystkich plików *.jpg w danym katalogu
function gal($gdzie) {
$dir = opendir($gdzie);

while($file = readdir($dir)) {
$ext = explode('.', $file);

if($ext[1] == 'jpg' && $file != '.' && $file != '..') {
$gal[] = $file;
}
}

closedir($dir);

return $gal;
}

//include('index.txt');

// Konfiguracja
$gdzie = $_GET['gdzie'];
$ipp = 2; // images per page
$ipl = 3; // images per line

if ($gdzie == '') {
include('index2.txt');
} else {
$pliki = gal($gdzie); // pobieramy tablice z plikami za pomocą funkcji gal();
$ile = count($pliki); // Liczymy pliki

$page = empty($_GET['page']) ? 0 : $_GET['page']; // wartość domyślna dla strony
$od = $page * $ipp; // od którego obrazka zaczynać wyświetlanie
$do = $od + $ipp; // na którym końcyć

if($do > $ile) { // Aby nie było pustych miejsc na obrazki
$do = $ile - ($ipp * $page);
}

$c = $od; // wartość początkowa dla zmiennej c (close tr)

// Wyświetlanie obrazków
echo '<table style="width: 100%" cellpadding="10" cellspacing="0">'."n";
for ($i = $od; $i < $do; $i++) {
if(($i - $od) % $ipl == 0 || $i == $od){
echo "<tr>n";
$c += $ipl;
}
echo '<td style="text-align: center; vertical-align: middle">';
echo '<a href="'.$gdzie.'/'.$pliki[$i].'"><img src="'.$gdzie.'/m/'.$pliki[$i].'" style="border: none"></a>';
echo "</td>n";

if($i == $c || $i == $do - 1 ){
echo "</tr>n";
}

}
echo "</table>n";

// Wyświetlanie linków do stron
echo '<div style="text-align: center">';
if(empty($page)) {
echo '<<< |';
} else {
echo '<a href="index.php?gdzie='.$gdzie.'&page='.($page - 1).'"><<<</A> |';
}
for ($p = 0; $p < ceil($ile/$ipp); $p++) {
$pg++;

if($page == $p) {
echo ' <b>'.$pg.'</b> |';
} else {
echo ' <b><a href="index.php?gdzie='.$gdzie.'&page='.$p.'">'.$pg.'</a></b> |';
}
}
if($page == (ceil($ile / $ipp)) - 1) {
echo '>>>';
} else {
echo '<a href="index.php?gdzie='.$gdzie.'&page='.($page + 1).'">>>></A>';
}
echo '</div>';
}
?>[/php:1:79ce749ade]
scanner
Cudi: jak ci się jeszcze kiedyś bedzie nudzić, zrób to na szablonach...
lucek
Niestety mam problem z tymi skryptami - i z 1 i z 2.
Nie chce mi pokazywac miniatur - chocia uruchamim skrypt z parametrem - ?gdzie=nazwakatalogu z miniaturami.

Jak wogole przerobic ten skrypt aby pokazywal nazwy kategorii (kategoriami sa katalogi) a po kliknieciu w nazwe kategorii wyswietlal wszystkie miniatury. questionmark.gif?
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-2024 Invision Power Services, Inc.