Autor | Zpráva | ||
---|---|---|---|
wwwirtuoz Profil |
#1 · Zasláno: 16. 12. 2004, 20:20:04
da sa pomocou PHP nejako urobit, aby sa vypisaly setky subory v danom adresari
(a popr. aby boli aj klikatelne) ?? a da sa urobit aj nie len jedneho adresara, ale struktura ? (nemusi byt klikacia (+,- ...) ale aby sa vypisali a otvorily aj vsetky podadresare) bez pouzitia FTP ked ano tak ako ?? dakujeem |
||
thingwath Profil * |
#2 · Zasláno: 16. 12. 2004, 20:57:54
Vypsat obsah adresáře lze třeba takto (zkopíroval jsem kód vlastního skriptu), ten if je tam kvůli skrytým souborům a adresářům . ..
Klikatelnost vyrobíte tak, že je místo do seznamu jako já dáte do odkazu, otázka je, kam mají ty odkazy vést
Strukturu bude nejlépe vypsat nějakou rekurzí, uděláte to jako funkci, dovnitř foreach dáte ověření na adresář a případně zavoláte onu funkci pro ten adresář. |
||
wwwirtuoz Profil |
#3 · Zasláno: 16. 12. 2004, 21:10:29
ten if je tam kvůli skrytým souborům a adresářům
aby sa skryte subory zobrazili alebo nezobrazili ?? bral by som skvor zobrazit |
||
thingwath Profil * |
#4 · Zasláno: 16. 12. 2004, 21:14:06
aby se nezobrazily, nechci je, pro opačné stačí podmínku smazat
|
||
thingwath Profil * |
#5 · Zasláno: 16. 12. 2004, 21:15:48
Tedy přesněji, skrytými soubory se myslí soubory začínající tečkou (neplést s jiným řešením pomocí filesystému na windows). Takže i adresáře současný adresář (.) a nadřazený (..).
|
||
llook Profil |
#6 · Zasláno: 16. 12. 2004, 21:53:29
Je dobré pamatovat také na to, že scandir načítá i adresáře "." a "..", tedy aktuální a nadřazený adresář.
Jo a v PHP >= 4.3.0 lze využít i funkci glob. |
||
wwwirtuoz Profil |
#7 · Zasláno: 17. 12. 2004, 09:46:07
na klikaciu strukturu zabudnite, to je na nic.
to co napisal thingwath hore bolo dobre, len by som to chcel este nejak rozsirit, aby aj adresare v tom hlavnom adresari boli otvorene |
||
wwwirtuoz Profil |
#8 · Zasláno: 17. 12. 2004, 12:23:33
mmm
pise to: Parse error: syntax error, unexpected T_FOREACH in C:\dev\www\a.php on line 4 |
||
thingwath Profil * |
#9 · Zasláno: 17. 12. 2004, 15:41:03
Protože tam chybí za tím scandir středník, moje chyba.
ale pro účel vypsání všeho bych to napsal trochu jinak <pre> function listdir ($path) { $x = scandir ($path); foreach ($x as $y) { print $y.'<br />'; if (is_dir ($path.'/'.$y) AND (($y != '.') AND ($y != '..'))) { listdir($path.'/'.$y); } } } listdir ('.'); </pre> Snad to bude fungovat, ještě by to chtělo nějak označovat adresáře a další vnořené struktury, ale to už si schopný programátor dořeší lépe :-) |
||
pyty Profil |
#10 · Zasláno: 17. 12. 2004, 15:50:30
thingwath
dik funguje to jen pre adresar a podadresare v ktorom sa nachcadza subor ?? |
||
thingwath Profil * |
#11 · Zasláno: 17. 12. 2004, 15:54:51
pracuje to pro adresář, který zadáte jako parametr pro napsanou funkci listdir, v ukázke je to aktuální adresář.
Jak říkám, chtělo by to k tomu nějaký barvičky. |
||
pyty Profil |
#12 · Zasláno: 17. 12. 2004, 16:29:46 · Upravil/a: pyty
mmm :-((. na localhoste mi to funguje, ale sever site.cz hlasi:
Fatal error: Call to undefined function: scandir() in /webs/1/site.cz/p/pytylog/a_edit_what.php on line 34 PS: neda sa nejak namiesto tych .. a . urobit aby bola kazda struktura pomocou <span style="padding-left: ...."> vzdy o 10 px do prava ?? ja som to skusal, ale vzdy to vyhodilo nejaku chybu |
||
pyty Profil |
#13 · Zasláno: 17. 12. 2004, 18:38:00
Fatal error: Call to undefined function: scandir() in /webs/1/site.cz/p/pytylog/a_up.php on line 34
pise to aj pri tom: $dirs = scandir ('models/'); foreach ($dirs as $x) { if (!preg_match ('/^\..*/', $x)) { print '<li>'.$x.'</li>'; } } preco ??? neda sa s tym nieco urobit ?? |
||
Leo Profil |
#14 · Zasláno: 17. 12. 2004, 18:48:46
scandir podle manualu existuje az ve verzi PHP5, pokud mate PHP4 tak mate smulu.
Jinak viz http://cz2.php.net/manual/cs/ref.dir.php Leo |
||
thingwath Profil * |
#15 · Zasláno: 17. 12. 2004, 19:00:45
Tak to jsem si vůbec neuvědomil. No, v takovém případě to bude nutné nahradit přes opendir() a readdir(), nemělo by to být o nic moc složitější.
|
||
pyty Profil |
#16 · Zasláno: 17. 12. 2004, 20:44:36
mne to potom uz vobec neide....
skusl som tak:
aj
a nic.... ako to teda urobit ?? PS: a co ten paddinng ? neda sa nejak namiesto tych .. a . urobit aby bola kazda struktura pomocou <span style="padding-left: ...."> vzdy o 10 px do prava ?? ja som to skusal, ale vzdy to vyhodilo nejaku chybu |
||
thingwath Profil * |
#17 · Zasláno: 17. 12. 2004, 22:44:20
No, v tomhle pripade je to trochu jinak, viz ta dokumentace.
opendir() nam vrati directory handler a my z nej pak budeme cist jednotlive soubory takze smycku foreach nahradime smyckou while
Ten samy priklad je i v te dokumentaci. |
||
pyty Profil |
#18 · Zasláno: 19. 12. 2004, 11:00:10
thingwath
dik :-) !!! a ako sa to da aplikovat aj na to druhe riesenie ??? function listdir ($path) { |
||
thingwath Profil * |
#19 · Zasláno: 19. 12. 2004, 12:42:26
No, úplně stejně. Do $x načteme přes opendir handler adresáře $path a smyčku foreach nahradíme smyčkou while, která nám bude přes readdir() do $y načítat jednotlivé adresáře z $x, je to opravdu úplně stejné :-)
|
||
Časová prodleva: 12 dní
|
|||
pyty Profil |
#20 · Zasláno: 31. 12. 2004, 14:24:00
:-(( ja som asi fakt uplne sprosty !!
nice som tam pomenil a ono to uz absolutne neide... function listdir ($path) { prosim, ako to ma vyzerat normalne ?? |
||
thingwath Profil * |
#21 · Zasláno: 31. 12. 2004, 14:37:13
Hm, u toho while máš chybu, že návratovou hodnotu readdir() ukládáš do proměnnné $x, kterou jednak určitě přepsat nechceš. Myslím, že ji spíš chceš uložit do proměnné $y :-)
|
||
thingwath Profil * |
#22 · Zasláno: 31. 12. 2004, 14:39:55
Druhá chyba je, že uvnitř té smyčky nechceš volat znovu readdir, ale náš vlastnoručně napsaný listdir().
Doufám, že už jsem nic nepřehlíd. |
||
pyty Profil |
#23 · Zasláno: 31. 12. 2004, 14:52:41
thingwath
Vrelá Vďaka !! prajem ti štastný nový rok ! :-) |
||
Časová prodleva: 8 měsíců
|
|||
Matúš Kopáč Profil |
#24 · Zasláno: 20. 8. 2005, 19:51:21
Jak mam ale zistit kolko je v adresari suborov
|
||
Časová prodleva: 3 dny
|
|||
Robotus Profil * |
#25 · Zasláno: 23. 8. 2005, 11:24:55
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0