Autor | Zpráva | ||
---|---|---|---|
johnl Profil |
#1 · Zasláno: 12. 8. 2009, 23:48:10 · Upravil/a: johnl
Dobrý den, mám hodně divnej problém a nevím jak ho vyřešit :)
Takže: na www.wincre.wz.cz/web/index.php mám výpis článků který jsou v adresáři cls/data/article (tam se ale nedostanete je to v administraci) výpis adresáře mám <?php $slozka = OpenDir("cls/data/article/"); while ($soubor = ReadDir($slozka)) { if ($soubor == "." || $soubor == "..") continue; readfile ("cls/data/article/".$soubor); echo "<br>"; } closedir ($slozka); ?> při ukládání používám jako ID $time = time(); $time = StrTr($time,"0123456789","9876543210"); (to aby to bylo od nejnovějšího po nejstarší).. Ale články se stejně blbě řadí! Vytvářel jsem je v tomto pořadí = a1 b2 c3 d4 a2 a3 f5 g888 už mě to *****! tudíž v tomto pořadí by měli být vypsány (a1 by mělo být na konci a už mě t *****! na začátku) ale není tomu tak! Nevíte někdo proč? |
||
DoubleThink Profil * |
#2 · Zasláno: 13. 8. 2009, 01:36:13 · Upravil/a: DoubleThink
The filenames are returned in the order in which they are stored by the filesystem.
..což může být jakékoliv Standardní postup je načíst názvy do pole a to pak seřadit podle potřeby. |
||
Radek9 Profil |
#3 · Zasláno: 13. 8. 2009, 10:31:30
My jsme se teda o tom s Johem bavili... a došli jsme k názoru, že to začíná být divný :D Protože v mém RS se to řadí úplně normálně podle názvu souborů.
|
||
johnl Profil |
#4 · Zasláno: 13. 8. 2009, 10:53:32
Nenapadá někoho jak by se to dalo udělat tak aby se to řadilo normálně?
|
||
Radek9 Profil |
#5 · Zasláno: 13. 8. 2009, 11:22:07
Tak jme to nakonec vyřešili pomocí sort a foreach:
<?php $slozka = OpenDir("cls/data/article/"); while ($soubor = ReadDir($slozka)) { if ($soubor == "." || $soubor == "..") continue; $pole[] = $soubor; } closedir ($slozka); @sort($pole); if(!empty($pole)){ foreach($pole as $file){ readfile ("cls/data/article/".$file); echo "<br><br>"; } } ?> |
||
johnl Profil |
#6 · Zasláno: 13. 8. 2009, 11:22:30 · Upravil/a: johnl
Takže už je to vyřešený, díky Radku9 ;-)
|
||
AM_ Profil |
#7 · Zasláno: 13. 8. 2009, 11:58:55
„@sort($pole);“
Co ten zavináč??? |
||
Radek9 Profil |
#8 · Zasláno: 13. 8. 2009, 12:05:21
AM:
Pokud je pole prázdné tak se sort neprovede ;-) |
||
Mastodont Profil |
#9 · Zasláno: 13. 8. 2009, 12:08:17
Radek9
Není lepší to šoupnout do ifu bez zavináče? |
||
Radek9 Profil |
#10 · Zasláno: 13. 8. 2009, 12:11:31 · Upravil/a: Radek9
Mastodont:
A proč se zbytečně párat s ifama, když je tohle kratší a funguje to? Edit: Teď mě napadá, že tam ten if už je tak to zkusím :D Edit2: Ok, není tam chyba, takže se to klidně může nacpat do toho ifu. |
||
nightfish Profil |
#11 · Zasláno: 13. 8. 2009, 12:19:45 · Upravil/a: nightfish
imho lepší varianta...
<?php $pole = array(); $slozka = OpenDir("cls/data/article/"); while ($soubor = ReadDir($slozka)) { if ($soubor == "." || $soubor == "..") continue; $pole[] = $soubor; } closedir ($slozka); sort($pole); foreach($pole as $file){ readfile ("cls/data/article/".$file); echo "<br><br>"; } ?> |
||
Radek9 Profil |
#12 · Zasláno: 13. 8. 2009, 12:21:53
nightfish:
Když myslíš. |
||
nightfish Profil |
#13 · Zasláno: 13. 8. 2009, 13:17:53 · Upravil/a: nightfish
„Když myslíš.“
- nepoužívám neinicializované proměnné - nepoužívám zavináče - nepoužívám v tomto kontextu zbytečné konstrukty (třeba ten if) |
||
AM_ Profil |
#14 · Zasláno: 13. 8. 2009, 13:36:43
Radek9
„když je tohle kratší a funguje to?“ proč se v autě připoutat, když jezdí i bez toho? Zkrátka zavináč je v 99% případů, kde se používá, čuňárna. Existují výjimky: 1) některé funkce generují chybu, kterou nelze předem předvídat (např. připojení k MySQL) - takže pro potlačení chyby použiji zavináč, ale v těchto případech je nutné pamatovat na ruční ošetření chyby a vypsání vlastní chybové hlášky. 2) ve výjimečných případech, kde by bylo předvídání chyby neúměrně komplikované a kde se opět důsledně chyba ošetří ručně. Ale tohle není ani jedna z nich. |
||
Časová prodleva: 15 let
|
0