Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Katalogi
Forum PHP.pl > Forum > PHP
spenalzo
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. ?
cool.gif czy da się posortować nazwy pliików wg alfabetu?
c) czy da się zrobic, aby katalogi nadrzędne były na początku, tzn. na górze listy?
FiDO
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
cool.gif czy da się posortować nazwy pliików wg alfabetu?

Da sie smile.gif

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...
spenalzo
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)?
DeyV
20 - 30 tys? I ty chcesz to robić na plikach - folderach?questionmark.gif?
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 sad.gif

MySQL górą...
spenalzo
Cytat
20 - 30 tys? I ty chcesz to robić na plikach - folderach?questionmark.gif?
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 sad.gif

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.
DeyV
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...
spenalzo
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?
FiDO
a czemu po prostu nie uzyjesz dedykowanych do tego programow??
czy chociazby odpoiednego plugina do WinCmd??
wiem.. ambicja i te sprawy winksmiley.jpg ale jest wiele naprawde dobrych programow do tego, ew. moge Ci udostepnic swoj, ktory generuje pliki w formacie:
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.
spenalzo
Cytat
a czemu po prostu nie uzyjesz dedykowanych do tego programow??
czy chociazby odpoiednego plugina do WinCmd??
wiem.. ambicja i te sprawy winksmiley.jpg ale jest wiele naprawde dobrych programow do tego, ew. moge Ci udostepnic swoj, ktory generuje pliki w formacie:

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. :-)
FiDO
Cytat
W sumie, jeżeli ma opcję generowania listy bez rozmiarów i dat to poproszę adres. :-)

smile.gif))
Usuniecie wyswietlania tego to pikus winksmiley.jpg Tylko, ze nie mam teraz zainsalowanego kompilatora, a to bydle troche wazy, teraz mi sie juz nie chce ;P
Jutro jak wroce z zajec (kolo wieczorka) to postaram sie zainstalowac i usunac przeszkadzajace Ci daty winksmiley.jpg
spenalzo
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.
FiDO
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?questionmark.gif?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.