Autor Zpráva
Giga
Profil *
Riešim menšiu fotogalériu. Celkom sa mi páči vytvorenie galérie z obsahu adresára.
Prosím o radu, ako vytvoriť "stránkovanie". Teda keď chcem mat na jednej stránke
15 náhľadov, ako (efektívne) zistiť počet stránok?
A ako vytvárať povedzme tretiu stranu náhľadov?

Ďakujem.
Werewolf
Profil
V cyklu while, kterým vytahuješ fotky z adresáře, si vytvoř proměnnou (vlastně ještě před ním) a pokaždé k ní přičti (na konci cyklu).
Také v cyklu kontroluj hodnotu této proměnné. Pokud je větší než ((stránka-1)*15)+15, tak cyklus přeruš.
Bylo by také jednodušší, kdybys vytahoval fotky podle názvu (dají se hromadně přejmenovat programem zvaným IfranView - Soubor -> B).

Stránkování se dá udělat funkcí
glob # vrací počet souborů v adresáři
a obyčejným dělením (+ zaokrouhlení nahoru).

Ještě malý příklad:
$x = ($_GET['stranka']-1)*15;
$i = $x;
while($i <= ($x+15)) {
echo('<img src="./'.$cesta_k_fotkam.'/fotka'.$i.'.jpg" alt="Fotka">'."\n");
}
echo('<h3>Stránkování</h3>');
$pocet_fotek = count(glob($cesta_k_fotkam.'/*.*'));
$stranek = round($pocet_fotek, 0, PHP_ROUND_HALF_UP);
# a teď jenom cyklus for vypisující stránky + odkazy na ně


...ale neručím za správnou funkčnost.
A nakonec podotýkám, že by bylo mnohem jednodušší použít nějakou existující galerii.
Například kolega Jokerjednu takovou.
Alphard
Profil
glob() nevrací počet souborů, ale jejich seznam.
Zvláště pro velké množství fotek můžete generování galerie trochu urychlit, když si do každého adresáře s fotkami automaticky vygenerujete serializované (a vhodně seřazené) pole se soubory. Pak pro výpis stačí jednoduchý for bez načítání všech souborů.
Giga
Profil *
Ďakujem za rady.

Alphard napísal: "...když si do každého adresáře s fotkami automaticky vygenerujete serializované (a vhodně seřazené) pole se soubory..."

Ako "automaticky" vygenerovať?

Galériu chcem robiť na základe obsahu adresára najmä preto, že by som sa nemusel trápiť s udržiavaním nejakej databázy obrázkov a jej aktualizácii pri pridaní obrázku do galérie.
Alphard
Profil
Giga:
Není to složité. Pro výpis a stránkování stejně musíte načíst soubory do pole, takže už není o moc složitější to pole ještě uložit.
Stačí např.
if(!file_exists("$dir/cache.txt"));
{
  include "zpracujFotky.php";
  zpracujFotky();
}
$fotky = unserialize(file_get_contents("$dir/cache.txt"));
// tady už se jednoduše pracuje s polem $fotky


a jej aktualizácii pri pridaní obrázku do galérie
Jak přidáváte obrázky?
a) jestli po FTP, tak byste musel smazat jeden soubor
b) jestli upload v PHP, tak unlink(), jeden řádek v kódu navíc
Nebo by ještě byla možnost kontrolovat stáří souboru cache.txt a pokud je starší než třeba 3 dny, vygenerovat nový.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: