Autor Zpráva
pan.kolouch
Profil *
Dělám galerii obrázků která by měla fungovat na principu, že jen nakopíruju obrázky např. do složky Akce-2005 v té budou náhledy fotek a v Akce-2005/Velke budou velké fotky. Skript načte soubory z adresáře a automaticky je zobrazí na stránce. Používám tedy toto:

$slozka = dir("fotogalerie/akce-2005");
$pocet = 0;
while($soubor=$slozka->read()) {
if ($soubor=="." || $soubor==".." || $soubor=="velke") continue;
++$pocet;
echo "<a href=\"fotogalerie/akce-2005/velke/$soubor\"><img src=\"fotogalerie/akce-2005/$soubor\" alt=\"$soubor\"/></a>\n";
}
$slozka->close();

Prvni problém je ve 4tém řádku skriptu. Když mám ve složce adresář, vypíše se mi taky, což nechci zatím jsem to ošetřil pomocí toho || $soubor =="velke", jelikož jsem se to pokoušel udělat univerzálně pomocí is_dir a is_file, ale nějak mi to nefungovalo, ale to mě ani celkem moc nezlobí.

Potřeboval bych nějak dostat názvy souborů do pole tak, abych pak mohl po kliknutí na odkaz zavolat skript např. ukazfoto.php?foto=akce-2005/fotka-nazev.jpg .. což vyvolání toho skriptu a se zobrazením správné fotky taky není problém, jenže bych chtěl když bude fotka zvětšená, abych si udělal šipečky a mohl bych přímo listovat po jedné fotce vpřed a vzad ... prostě abys se vždy po zobrazení fotky nemusel vracet zpět na náhledy fotek a s tím jsem se trošku zasekl... pomohl by prosím někdo ? děkuji předem
krteczek
Profil
tohle je výpis obsahu adresáře
<?php

$adresar = opendir(".");
while (!is_bool($soubor = readdir($adresar)))
{
if (is_dir("./$soubor"))
{
print "(DIR) ";
}
print "$soubor<br />";
}
closedir($adresar);
?>

tohle je test jestli je daný prvek soubor, nebo adresář:

<?php

if (is_file("pokus.txt"))
print "Objekt pokus.txt je soubor.";
else
print "Objekt pokus.txt není soubor.";

print "<br />";

if (is_dir("\pokus"))
print "Objekt \pokus je adresář.";
else
print "Objekt \pokus není adresář.";
?>

krteczek
llook
Profil
Kromě těchhle adresářových funkcí je strašně užitečná funkce glob. Ta vrátí pole všech souborů, které vyhovují zadané masce:

$filenames = glob('adresar/*.jpg');
foreach ($filenames as $filename) {
echo '<img src="' . htmlspecialchars($filename) . '">';
}
pan.kolouch
Profil *
Díkym díky ..

Není kratší a rychlejší ten způsob co používám na vypsání souborů já ? Je tam jen problém s tou podmínkou, že i když jsem v ní použil is_dir($soubor), tak mi to stejně nerozeznalo zda se jedná o adresář ...

Pomocí té funkce glob v podstatě udělám to listování ve fotogalerii .. pokud tomu rozumím správně .. kliknu v náhledech na obrázek, který mě pošle na např. ukazfoto.php?obr=obrazek-5 a pomocí tohoto skriptu ho zobrazím a v tom semém skriptu použiju funkci glob, pomocí které si udělám pole se soubory a pro šipku vpravo dám následující položku pole, pro šipku vlevo předchozí položku pole .. jenže teď mi vrtá hlavou, jak udělat, aby skript ukazfoto.php poznal, který index z pole má zrovna zobrazený obrázek ..
24k_po_parbe
Profil *
Mno ja bych udelal toto

1/ Projel bych onen adresar cyklem, do pole nahazel vsechny obrazky
2/ uloz do sessions cele to pole
3/ a nyni mas ciselny index a jeho hodnotu (obrazek) a vis kolikaty obrazek je na jake pozici

tj pokud obrazek nebude mit index 0 udelas odkaz PREDCHOZI pokud obrazek nebude mit ten nejvyssi index v poli , tj posledni obrazek, tak udelas odkaz DALSI.

A jeste podminku ze pokud to sessions pole s obrazky bude existovat, aby se ten adresar stale neprochazel, je to imho narocne
pan.kolouch
Profil *
tak to jsem vůbec nepochopil ... hlavně sessions ..
Toto téma je uzamčeno. Odpověď nelze zaslat.

0