![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Mam taką funkcję:
[php:1:2461e9f8db]<?php function katalogi($nad,$pop="") { static $i; $dir=dir($nad); @chdir($nad); while($file=$dir->Read()) { $i++; if($file!="." && $file!="..") { #if($i>1200) #die(); if(is_dir($nad."/".$file)) { @chdir($nad."/".$file) or die("Brak katalogu $file!"); katalogi($nad."/".$file,$nad); chdir($pop); } else { echo $nad."/".$file."<br>n"; } } } } ?>[/php:1:2461e9f8db] i potem generuję z tego sobie drzewo. a) w jaki sposób zrobić, żeby podkatalog miał ID katalogu, podpodkatalog ID podkatalogu itd. ? ![]() c) czy da się zrobic, aby katalogi nadrzędne były na początku, tzn. na górze listy? -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Cytat a) w jaki sposób zrobić, żeby podkatalog miał ID katalogu, podpodkatalog ID podkatalogu itd. ?
Skoro potrzebujesz drzewo to moze zrobisz tak, ze masz tablice ktorej elementami sa stringi (pliki) i kolejne tablice (podkatalogi) i tak dalej zagniezdzone? Cytat ![]() Da sie ![]() Najpierw zczytujesz pliki i katalogi do osobnych tablic, potem sortujesz tablice z plikami... Cytat c) czy da się zrobic, aby katalogi nadrzędne były na początku, tzn. na górze listy?
... i teraz najpierw przechodzisz przez tablice katalogow wyswielajac wpis i wywolujac rekurencyjnie dla niego znow ta funkcje, a potem wyswietlasz pliki. Nie wiem czy dokladnie o to Ci chodzi... |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
No ale co jak tych rekordów będzie z 20-30 tysięcy? Pliki z wygenerowanymi w ten sposób danymi zajmują od 10 do 300 kB, skrypt ten napisałem sobie do skatalogowania zawartości mojej płytoteki - czy takie coś zmieści się w pamieci php? W końcu musi się zmieścić klucz i wartości.
Cytat Skoro potrzebujesz drzewo to moze zrobisz tak, ze masz tablice ktorej elementami sa stringi (pliki) i kolejne tablice (podkatalogi) i tak dalej zagniezdzone?
Hmmm, ale jak to miałoby wyglądać (dopadła mnie dzisiaj pomroczność jasna)? -------------------- |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
20 - 30 tys? I ty chcesz to robić na plikach - folderach?
![]() To chyba bardzo niezdrowe... Nie - przepraszam - na pewno nie 'chyba'... Zresztą samo odczytanie nazw kilkutysięcy katalogów z łatwością mo że doprowadzić do error execution time ![]() MySQL górą... -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat 20 - 30 tys? I ty chcesz to robić na plikach - folderach?
![]() To chyba bardzo niezdrowe... Nie - przepraszam - na pewno nie 'chyba'... Zresztą samo odczytanie nazw kilkutysięcy katalogów z łatwością mo że doprowadzić do error execution time ![]() MySQL górą... Nie, w 10-20 sekund jest sczytane i zapisane. Czasami po prostu potrzebuję znaleźć jeden czy dwa konkretne pliki, a nie mam czasu szukać po kilkudziesięciu płytkach... :-| Początkowo skrypt ten napisałem do mojego sklepu (zupełnie inne zastosowanie), dopiero później pomyślałem o powyższym przeznaczeniu. -------------------- |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Ok, rozumiem - w pewnych - konkretnych sytuacjach, możę to mieć sens.
Jesli jednak tworzysz skrytp pod konkretnie to zastosowanie, to czemu nie zrobić tego tak, 'jak należy'? Chyba nie muszę przekonywać do zalet przechowywania takich danych w bazie... -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Ok, rozumiem - w pewnych - konkretnych sytuacjach, możę to mieć sens.
Jesli jednak tworzysz skrytp pod konkretnie to zastosowanie, to czemu nie zrobić tego tak, 'jak należy'? Chyba nie muszę przekonywać do zalet przechowywania takich danych w bazie... To ja jeszczę wyjaśnię: skrypt został napisany początkowo w celu takim, że administrator sklepu chce dodać produkt i zdjęcie do niego, które jest już na serwerze. Zamiast pamietać nazwę do pliku i katalog, klika sobie i otwiera się okienko, w którym ma wygenerowane drzewko (przy pomocy JavaScriptu) katalogów i plików (począwszy od katalogu np. /sklep/foto/) i po kliknięciu w dany plik okienko zamyka się i uzupełnia formularz. Myslałem również o zastosowaniu tego skryptu do wskazywania miejsca uploadu. Dlatego nie ma sensu przechowywanie tych danych w MySQL. Natomiast zastosowanie jakie napisałem wcześniej powstało później, jest niejako skutkiem ubocznym tego skryptu - gotowe pliki nagrywam sobie na płytkę czy dyskietkę i w razie poszukiwania jakiegoś pliku/katalogu/aplikacji otwieram plik i szukam. To ma być takie proste rozwiązanie, bez zbędnych bajerów typu wyszukiwarka, sortowanie itd. Jeszcze napisz mi, o co chodzi z tym "jak naleeży"? W sumie skrypt jest chyba dobry? -------------------- |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
a czemu po prostu nie uzyjesz dedykowanych do tego programow??
czy chociazby odpoiednego plugina do WinCmd?? wiem.. ambicja i te sprawy ![]() Kod D:usrphp
install.txt 32881 2003.2.16 0:2.50 license.txt 3276 2002.12.27 5:43.20 magic.mime 36823 2002.12.27 5:43.16 news.txt 142387 2003.2.15 23:20.52 php.exe 45056 2003.2.16 0:2.8 php.gif 3872 2002.12.27 5:43.20 php.ini-dist 38898 2002.12.27 5:43.20 php.ini-recommended 39502 2002.12.27 5:43.20 php4embed.lib 7952 2003.2.15 23:20.52 php4ts.dll 1282048 2003.2.15 23:58.42 php4ts.lib 169956 2003.2.15 23:20.52 php.ini 38931 2003.4.29 16:47.0 Win32ver.exe 13312 2002.7.29 2:45.56 cli php.exe 24576 2003.2.15 23:20.52 dlls expat.dll 135168 2002.12.27 5:43.14 FDFTK.DLL 417792 2002.12.27 5:43.14 fribidi.dll 90112 2002.12.27 5:43.14 gds32.dll 346624 2002.12.27 5:43.14 iconv.dll 839680 2002.12.27 5:43.16 libeay32.dll 696320 2002.12.27 5:43.16 libintl-1.dll 47027 2002.12.27 5:43.16 libmhash.dll 165643 2002.12.27 5:43.16 mSQL.dll 57344 2002.12.27 5:43.16 ntwdblib.dll 278800 2002.12.27 5:43.16 sablot.dll 258048 2003.2.15 23:20.48 ssleay32.dll 155648 2002.12.27 5:43.16 Yaz.dll 360448 2002.12.27 5:43.16 Jest to format kompatybilny z wtyczka dirlist do WinCmd, wiec mozna w nim potem go bez problemu otworzyc. |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat a czemu po prostu nie uzyjesz dedykowanych do tego programow??
czy chociazby odpoiednego plugina do WinCmd?? wiem.. ambicja i te sprawy ![]() Nie chodzi o ambicję :-D (patrz post wyżej) W sumie, jeżeli ma opcję generowania listy bez rozmiarów i dat to poproszę adres. :-) -------------------- |
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Cytat W sumie, jeżeli ma opcję generowania listy bez rozmiarów i dat to poproszę adres. :-)
![]() Usuniecie wyswietlania tego to pikus ![]() Jutro jak wroce z zajec (kolo wieczorka) to postaram sie zainstalowac i usunac przeszkadzajace Ci daty ![]() |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 2 064 Pomógł: 1 Dołączył: 22.01.2003 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Fajnie.
Cytat Skoro potrzebujesz drzewo to moze zrobisz tak, ze masz tablice ktorej elementami sa stringi (pliki) i kolejne tablice (podkatalogi) i tak dalej zagniezdzone?
Ale jak jakoś to rozwiazać? W sumie plikow raczej nie będzie więcej niż 1000 - chodzi o to zastosowanie ze sklepem. -------------------- |
|
|
![]()
Post
#12
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
http://stargate.uz.zgora.pl:81/~fido/lister.rar
Prog listuje zawartosc biezacego katalogu, wiec najlepiej wsadzic go sobie gdzies do %PATH% i odpalac "z palca" w katalogu ktoyr chcesz wylistowac. Cytat Ale jak jakoś to rozwiazać? W sumie plikow raczej nie będzie więcej niż 1000 - chodzi o to zastosowanie ze sklepem.
Tzn. co jak rozwiazac?? Chodzi Ci o rozwiazanie tego sposobu, ktory podawalem, od strony technicznej? ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.06.2025 - 18:39 |