Autor | Zpráva | ||
---|---|---|---|
tomsonrecord Profil |
Zdravím všechny chytré hlavy a prosím o radu začátečníkovi.
Nechávám načítat do stránky obrázky z konkrétní složky. Všechno funguje, jen se obrázky načtou v jiném pořadí, než bych předpokládal. Poradíte prosím někdo jak načíst obrázky seřazené podle názvů jpg-ů. Děkuji. Zde je použitý kód: <?php $slozka = opendir("ref/"); //otevření složky while($obrazek = readdir($slozka)) { if($obrazek != "." && $obrazek != "..") // odstranění virtuálních objektů { echo "<a href=\"ref/".$obrazek."\" rel=\"lightbox[skupina]\"><img src=\"ref/".$obrazek."\"></a>"; } } ?> |
||
juriad Profil |
#2 · Zasláno: 30. 5. 2013, 11:58:41
Použij scandir, případně si napřed názvy seřaď sám.
|
||
tomsonrecord Profil |
#3 · Zasláno: 30. 5. 2013, 12:24:47
juriad:
i se scandir to řadí jpg-y pořád špatně. Jak si to myslel s tím seřazením napřed? Předpokládal bych, že soubor 01.jpg bude jako první, 02.jpg bude jako druhý atd. Ale tak to není. |
||
peta Profil |
Zkousel jsi to podle example 2 (http://cz1.php.net/function.scandir)?
<?php $dir = "/tmp"; $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { $files[] = $filename; } sort($files); print_r($files); rsort($files); print_r($files); ?> <?php $dir = '/tmp'; $files1 = scandir($dir); $files2 = scandir($dir, 1); print_r($files1); print_r($files2); ?> |
||
tomsonrecord Profil |
#5 · Zasláno: 31. 5. 2013, 15:14:31
peta:
dík vyzkoušel jsem example 2 vypsalo mi to toto: Array ( [0] => . [1] => .. [2] => 01.jpg [3] => 02.jpg [4] => 03.jpg [5] => 04.jpg [6] => 05.jpg [7] => 06.jpg [8] => 07.jpg [9] => 08.jpg [10] => 09.jpg [11] => 10.jpg ) za použití: $dir = "ref/"; $dh = opendir($dir); while (false !== ($filename = readdir($dh))) { $files[] = $filename; } sort($files); print_r($files); Je možné se prosím zbavit ještě těch virtuálních objektů a nechat vypsat pouze název souboru? Děkuji. |
||
MrVoltz Profil * |
#6 · Zasláno: 31. 5. 2013, 20:46:15
Nevím, proč se s tím tak obtěžuješ.
<?php $s = scandir("ref/"); // Hodíme to do pole sort($s); // Seřadíme to foreach($s as $f) { // Procházíme pole, $f má při každém cyklu v sobě jméno souboru if($f == "." || $f == "..") continue; // Pokud je to vitruální objekt, přeskoč k dalšímu cyklu echo "<a href=\"ref/".$f."\" rel=\"lightbox[skupina]\"><img src=\"ref/".$f."\"></a>"; // Vypíšeme } ?> |
||
Časová prodleva: 3 dny
|
|||
peta Profil |
#7 · Zasláno: 3. 6. 2013, 08:49:32
tomsonrecord:
"Je možné se prosím zbavit ještě těch virtuálních objektů a nechat vypsat pouze název souboru? Děkuji. " if($obrazek != "." && $obrazek != "..") // odstranění virtuálních objektů { |
||
juriad Profil |
#8 · Zasláno: 3. 6. 2013, 08:59:26
Jenom poznámka, nejsou to virtuální objekty, ale je to hardlink na aktuální adresář (.) a rodičovský adresář (..). Zajišťují transparentně tu magii, že funguje "ref/../ref/./01.jpg". Ještě existuje konvence, že soubor, jehož název začíná tečkou, je skrytý. Toto dohromady může z těchto dvou souborů dělat něco extra speciálního, ale není tomu tak.
|
||
tomsonrecord Profil |
#9 · Zasláno: 3. 6. 2013, 21:40:13
MrVoltz:
Děkuji, to funguje dobře. Obtěžuji se s tím tak, protože jsem začátečník a učím se s každým vyřešeným případem. Ještě jednou dík. |
||
tomsonrecord Profil |
#10 · Zasláno: 4. 6. 2013, 11:11:54
Prosím o další radu,
pokouším se kód od MrVoltz ještě použít i pro include všech souborů ze složky. Trápím se teď pro změnu s tím, že neumím include z nadřazení složky (řádek č.6). Nejspíš mě pošlete do háje, ale snad se najde někdo, kdo poradí. Toto mi samozřejmě nefunguje ani obdoby: <?php $s = scandir("ref/"); // Hodíme to do pole sort($s); // Seřadíme to foreach($s as $f) { // Procházíme pole, $f má při každém cyklu v sobě jméno souboru if($f == "." || $f == "..") continue; // Pokud je to vitruální objekt, přeskoč k dalšímu cyklu include "ref/"$f; } ?> |
||
peta Profil |
tomsonrecord: Smutne, nezalozil jsi to jako nove tema, ikdyz to je nove tema.
Neumis napsat ../ pro nadrazenou slozku pred adresu? Pripadne ne uplne chapu, oc se pokousis. Co treba vypsat strukturu adresare, vyznacit v ni, kde je umisten kod programu, ktere soubory to ma includovat (aspon 1-3)? * inc/a.php * inc/b.php * inc/c.php * program.php $dir = "inc/"; $s = scandir($dir); ... include $dir.$f; // tady nemas tecku pro spojovani. To by ale zapnute error_reporting() asi nahlasilo, takze asi o tom vis. $dir = "../inc/"; )
|
||
tomsonrecord Profil |
#12 · Zasláno: 4. 6. 2013, 23:16:26
peta:
pardon a nebuď smutný, příště založím nové téma. Teprve se tu s tím seznamuji, myslím aj s diskuzí. Každopádně děkuji, tvé rady mi pomohly. |
||
Časová prodleva: 11 let
|
0