/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Liste undermapper.
Fra : christoffer@buur.inf~


Dato : 14-02-08 03:07

Hej, jeg har et problem.
Jeg har lavet et uploadsystem, hvor man skal kunne uploade til
specifikke undermapper, i selve fil-mappen kaldet "fil" hvor
undermapperne så ligger.

Jeg har brugt koden

<form>
<select>

<?
if ($handle = opendir('fil')) {

while (false !== ($file = readdir($handle))) {
   if (is_dir($file)) {
echo "<option>$file</option>";
}
}

closedir($handle);
}
?>
</select>
</form>

Men det eneste jeg får i min select-box er 2 værdier
.
..
Men mine undermapper bliver ikke vist.. hvor går jeg galt i byen?

 
 
MooreHojer (14-02-2008)
Kommentar
Fra : MooreHojer


Dato : 14-02-08 12:00

> Men det eneste jeg får i min select-box er 2 værdier
> .
> ..

De to værdier betyder henholdsvis 'denne mappe' og 'mappen denne mappe
ligger i'
Ønsker du ikke at have dem med kan du putte din echo ind i følgende
if-sætning:
if ($file != "." && $file != "..")

> Men mine undermapper bliver ikke vist.. hvor går jeg galt i byen?

Jeg har prøvet at køre din kode hos mig og får samme resultat, indtil jeg
flytter min phpfil in i mappen 'fil' så virker det som det skal.

--
MooreHojer




Bertel Lund Hansen (14-02-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 14-02-08 12:09

MooreHojer skrev:

> if ($file != "." && $file != "..")

Det er den sikre test. Man kan lave en ikke helt skudsikker der
er lidt enklere:

   if ($file[0]!='.')

Den vil fejle hvis man har mappenavne der starter med et punktum.

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

christoffer@buur.inf~ (14-02-2008)
Kommentar
Fra : christoffer@buur.inf~


Dato : 14-02-08 06:28

On 14 Feb., 12:09, Bertel Lund Hansen <unosp...@lundhansen.dk> wrote:
> MooreHojer skrev:
>
> > if ($file != "." && $file != "..")
>
> Det er den sikre test. Man kan lave en ikke helt skudsikker der
> er lidt enklere:
>
> if ($file[0]!='.')
>
> Den vil fejle hvis man har mappenavne der starter med et punktum.

Koden virke fint, og de punktumerne forsvinder.
Men de mapper som ligger der (og de starter ikke med punktum) bliver
ikke vist. Det eneste jeg får er en tom select-box.

Koden er
if ($handle = opendir('fil')) {

while (false !== ($file = readdir($handle))) {
if (is_dir($file)) {
   if ($file != "." && $file != "..") {
echo "<option>$file</option>";
}
   }
}

closedir($handle);
}

Den har jeg liggende i min hovedmappe, og den ligger i min index fil.
I den mappe ligger der en fil-mappe, som er den jeg vil kigge igennem
for dens undermapper (og gerne også undermappernes undermapper)
Men som koden står nu, viser den slet intet udover en tom select-box?


Bertel Lund Hansen (14-02-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 14-02-08 15:37

christoffer@buur.info skrev:

> Men de mapper som ligger der (og de starter ikke med punktum) bliver
> ikke vist.

Det skyldes en begrænsning i PHP. Den husker ikke hvor den fandt
filerne eller hvad slags det var, og så kan den ikke slå efter om
den har med en mappe at gøre.

Du skal lave din dir-test sådan her:

   if (is_dir('fil/'.$file))

Jeg ville i dit sted lægge startmappens navn i en variabel. Så er
man sikker på at det er den rigtige værdi overalt.

$basisfolder='fil';
....

if ($handle = opendir($basisfolder)) {
   while (false !== ($file = readdir($handle))) {
      if (is_dir("$basisfolder/$file")) {
         if ($file != "." && $file != "..") echo "<option>$file</option>";
      }
   }
   closedir($handle);
}

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste