Ordner in Drop Down-Listen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
album
array
auswahl
code
datum
fertiges fotoalbum
file
filter
folgenden fehler
funktion
index
item
kleinigkeit
lauten code
ordner
rest
sicher code
verarbeiten
verzeichnis
weglassen
-
Hi,
ich habe folgendes Problem:
Ich habe mir ein fertiges Fotoalbum besorgt und auch ein Upload-Skript.
Das Upload Skript habe ich so umgebaut, dass man in ein Textfeld den Name des Ordners eingeben kann, in welchen die Dateien hochgeladen werden sollen. Nun meine Frage:
Ist es möglich, und wenn wie, dass ich die Ordner, in welche Daten geladen werden können, auslese und die ausgelesenen Ordner dann in einem Drop Down-Menü ausgebe?
Please Help
und danke schonmal im Voraus.
MfG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hier ist eine Funktion, die alle Unterordner ausliest und sie in einem Array zurückgibt:
Um daraus ein Drop Down Menü zu basteln:<?php function getSubDir($dir) // $dir: Path to folder $folders = array(); $handle = opendir($dir); $i = 0; // Read all items while(($entry = readdir($handle)) !== false) { // Exclude special folders if ($entry != '.' && $entry != '..') { // Filter only subfolders... if (is_dir($dir . '/' . $entry)) { // ... and put them in an array $folders[$i] = $entry; $i++; } } } closedir($handle); return $folders } ?>
Ryan<select name="subdir"> <?php foreach (getSubDir('path/to/folder') as $folder) { ?> <option><?php echo $folder; ?></option> <?php } ?> </select>
Beitrag zuletzt geändert: 10.1.2009 16:46:23 von ryanblack -
Das kannst du machen, indem du die Verzeichnisse ausliest, und nur die Unterverzeichnisse in ein Array schreibst:
<?php $path "."; if($dir=opendir($path)) { while($file=readdir($dir)) { if (is_dir($file)) { $files[]=$file; } } closedir($dir); } ?>
Dann kannst du daraus problemlos ein select machen
<?php echo "<select name='verzeichnisse'>"; foreach($files as $filename){ echo "<option value='".$filename."'>".$filename."</option>"; } echo "</select>"; ?>
@edit: da war einer minimal schneller, und seine Funktion ist auch noch besser
Gruß, Prog
Beitrag zuletzt geändert: 10.1.2009 16:35:39 von prog -
@@@@@@@@@@@@@@
es funktioniert zwar aber eine kleinigkeit is da noch drinne:
ich habe also die drop down:
<form action="./upload/upload.php" method="POST"> <select name="dir_up" title="dir_uP"> <?php foreach (getSubDir('./album/img/') as $folder) { ?> <option value="<? $folder?>"><?php echo $folder; ?></option> <?php } ?> </select> <input type="submit" value=" Absenden "> </form>
und hier will ich die auswahl verarbeiten:
$_POST['dir_up']; $dir_ein = $_POST['dir_up']; $rest = '../album/img/'; $img_path_up = $rest.$dir_ein.'/'; $path = $img_path_up;
allerdings gibt es mir folgenden fehler aus:
Notice: Undefined index: dir_up in C:\Users\rsteininger\XAMPP\xampp\htdocs\upload\upload.php on line 49
Notice: Undefined index: dir_up in C:\Users\rsteininger\XAMPP\xampp\htdocs\upload\upload.php on line 50
deshalb kann ich die variable nicht verarbeiten ...
please help
Beitrag zuletzt geändert: 10.1.2009 18:00:00 von scheune -
scheune schrieb:
Du hast das `echo` bei `<option value="">` vergessen. ;)
<form action="./upload/upload.php" method="POST"> <select name="dir_up" title="dir_uP"> <?php foreach (getSubDir('./album/img/') as $folder) { ?> <option value="<? $folder?>"><?php echo $folder; ?></option> <?php } ?> </select> <input type="submit" value=" Absenden "> </form>
Richtig müsste also lauten:
<option value="<?php echo $folder; ?>"><?php echo $folder; ?></option>
Ryan
(Eigentlich könnte man ja das "value" Attribut gleich weglassen...) -
es gibt mir aber immer noch die gleichen fehler aus...
und es wird daher auch der ordnername nicht übermittelt...
und das ist mein problem...
ich will ja mit der auswahl dann weiterarbeiten...
mfg -
Bist du dir mit dieser Zeile sicher?
<form action="./upload/upload.php" method="POST">
heißt, dass du auf das Stammverzeichniss zurückgehst. Wenn du nur ein Verzeichnis höher willst, so musst du verwenden.
Wie gesagt, prüfe mal, ob das Formular überhaupt daten sendet. Zum testen kannst du auch folgendes verwenden:
<?php print_r($_POST); ?>
Das gibt alles aus, was per POST übermittelt wurde
Gruß, Prog
Beitrag zuletzt geändert: 10.1.2009 18:47:54 von prog -
könnte es am Groß- und Kleinschreibefehler liegen?
<select name="dir_up" title="dir_uP">
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage