NUR Unterverzeichnisse eines Ordners auflisten, keine Dateien
Die Energie des Verstehen-Wollens
- php
Hallo, Leute!!
Ich hoffe es ist noch jemand wach zu solch später stunde, denn ich brauch hilfe. dringende hilfe. ich krieg es einfach nicht hin!!
ich hab mich schon halbtot gegoogled, ich finde einfach nichts ...
aaaaaaaaalso:
Ich habe ein verzeichnis ("galerie/urlaub"). in diesem verzeichnis gibt es jetzt mehrere dateien und ordner. ich brauche nun ein script, das mein verzeichnis ausliest und hinterher NUR (!) die ordnernamen der unterverzeichnisse auflistet.
ich bin ein totaler php newbie und hab versucht das mit google hinzukriegen, indem ich mir einfach verschiedene codes anschaue und abändere, aber ich kriegs einfach nicht hin ..
bitte, ihr seid meine letzte hoffnung!!
das hier hab ich jetzt:
<?php
$aktDir = opendir("galerie/feten");
$aktDirInhalt = array("0");
while ($file = readdir ($aktDir)) {
if($file != "." && $file != "..") {
$gros = ucfirst($file);
array_push ($aktDirInhalt, "$gros<br>");
} //if-Abfrage ende
} //while Ende
$anzahl = count($aktDirInhalt);
sort ($aktDirInhalt);
for($x = 1; $x <= $anzahl; $x++) {
echo $aktDirInhalt[$x];
}
closedir($aktDir);
?>
aber das listet mir alle dateien und ordner auf, ich brauch aber nur die ordner. was muss ich an dem script ändern um nur die ordner zu listen.
ich brauche eure hilfe :(
gruß,
tön
Moin!
Ich habe ein verzeichnis ("galerie/urlaub"). in diesem verzeichnis gibt es jetzt mehrere dateien und ordner. ich brauche nun ein script, das mein verzeichnis ausliest und hinterher NUR (!) die ordnernamen der unterverzeichnisse auflistet.
Frage einfach ab, ob der gefundene Name ein Directory ist, oder nicht. Wenn ja: Listen. Wenn nein - nicht listen.
Funktionen, die zu Dateinamen Infos aus dem Dateisystem bringen, stehen im PHP-Manual: http://de2.php.net/manual/de/ref.filesystem.php
Ich schlage vor, du schaust dir die gesamte Liste an Befehlen einmal durch, damit du weißt, was auf diesem Sektor möglich ist. Und dabei findest du dann auch den Befehl, der dich informiert, ob ein Name ein Directory ist, oder nicht.
- Sven Rautenberg
Hallo Sven!
Du meinst sicher is_dir, oder?
Damit habe ich es schon versucht, irgendwie klappt das nicht. Wenn ich die if-Abfrae folgendermaßen formuliere:
if($file != "." && $file != ".." && is_dir($file))
Dann gibt mir das Script gar nichts mehr aus!
Habe ich eine falsche Syntax oder wo ist mein Fehler?
Gruß,
Anton
Moin!
Du meinst sicher is_dir, oder?
Richtig.
Damit habe ich es schon versucht, irgendwie klappt das nicht. Wenn ich die if-Abfrae folgendermaßen formuliere:
if($file != "." && $file != ".." && is_dir($file))
>
> Dann gibt mir das Script gar nichts mehr aus!
> Habe ich eine falsche Syntax oder wo ist mein Fehler?
is\_dir() braucht den kompletten Pfadnamen, sonst arbeitet es im "aktuellen Verzeichnis" - was nicht dasselbe ist, wie das Verzeichnis, welches du mit opendir() geöffnet hast.
- Sven Rautenberg
--
"Love your nation - respect the others."
Da leckt mich doch die Waldfee!!
Es geht, ich glaub es kaum :)
Vielen Dank, euch beiden, Dennis und Sven!!
Dir auch lieben Dank, Ashura, ich schau mir das mit glob noch mal an, vielleicht kann ich was damit anfangen ^^
Bis zum nächsten Mal, meine Lieben :-*
Gruß,
Tönsen
Hi tön,
if($file != "." && $file != ".." && is_dir($file))
An der Stelle dürfte in $file nur der Ordnername stehen, du musst vor den Ordnernamen aber schon auch den Pfad zum Ordner schreiben, also
is\_dir("galerie/feten/" . $file)
MfG, Dennis.
--
Mein [SelfCode](http://community.de.selfhtml.org/fanprojekte/selfcode.htm): [ie:{ fl:( br:> va:) ls:\[ fo:) rl:( n4:# ss:) de:\] js:| ch:{ sh:| mo:} zu:|](http://www.peter.in-berlin.de/projekte/selfcode/?code=ie%3A%7B+fl%3A%28+br%3A%3E+va%3A%29+ls%3A%5B+fo%3A%29+rl%3A%28+n4%3A%23+ss%3A%29+de%3A%5D+js%3A%7C+ch%3A%7B+sh%3A%7C+mo%3A%7D+zu%3A%7C)
[Patch zur Verwendung von PATHINFO in JLog](http://www.gymnasium-odenthal.de/~dennis/jlog/PATHINFO-Fix-1.0.1/)
Wenn Sie einen Schweizer Bankier aus dem Fenster springen sehen, springen Sie hinterher. Es gibt bestimmt etwas zu verdienen. (Voltaire)
Hallo DEDVW.
das hier hab ich jetzt:
[…]
Ick glob dit jeht auch eefacher, wa? (Hier sollte bereits „*/“ genügen.)
Einen schönen Freitag noch.
Gruß, Ashura
Moin!
(Hier sollte bereits „*/“ genügen.)
Es gibt so schöne Flags für glob - wenn man sich die Mühe machen möchte, die Skriptstruktur komplett umzustellen.
- Sven Rautenberg
Liebe Energie,
ich habe mir einmal das hier gebastelt. Möge es jemanden von Nutzen sein:
<?php
/* Funktion zum Auslesen eines Verzeichnisses
*
* (array) verzeichnis_auslesen( (string) $pfad [,(string) $welche[, (boolean) $rekursiv]] )
* $pfad = Verzeichnispfad relativ zum aufrufenden Script
* $welche = Verzeichnisse und/oder Dateien? ('alle', 'verzeichnisse', 'dateien')
* $rekursiv = Unterverzeichnisse mit auflisten? ( true, false)
*
*/
function verzeichnis_auslesen($pfad, $welche = 'alle', $rekursiv = true)
{
$pfad = preg_replace('~(.*)/$~', '\\1', $pfad); // letzten Slash aus dem String entfernen
$liste = array();
$lesezugriff = opendir($pfad);
while($ein_eintrag = readdir($lesezugriff))
{
switch($welche)
{
case 'dateien':
if (is_file("$pfad/$ein_eintrag"))
$liste[] = $rekursiv ? "$pfad/$ein_eintrag" : $ein_eintrag;
break;
case 'verzeichnisse':
if (is_dir("$pfad/$ein_eintrag") && !preg_match('~^\.\.?$~', $ein_eintrag))
$liste[] = $rekursiv ? "$pfad/$ein_eintrag" : $ein_eintrag;
break;
default:
if (!preg_match('~^\.\.?$~', $ein_eintrag))
$liste[] = $rekursiv ? "$pfad/$ein_eintrag" : $ein_eintrag;
}
// Unterverzeichnisse?
if(!preg_match('~^\.\.?$~', $ein_eintrag) && is_dir("$pfad/$ein_eintrag") && $rekursiv)
{
$liste2 = verzeichnis_auslesen("$pfad/$ein_eintrag", $welche, $rekursiv);
foreach($liste2 as $ein_eintrag2) $liste[] = $ein_eintrag2;
}
}
closedir($lesezugriff);
sort($liste);
return $liste;
}
$pfad = isset($_GET['pfad']) ? $_GET['pfad'] : '.';
if ($pfad == '') $pfad = '.';
$welche = isset($_GET['welche']) ? $_GET['welche'] : 'alle';
$rekursiv = isset($_GET['rekursiv']);
?>
<html>
<head>
<title>Verzeichnis auslesen</title>
</head>
<body>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="get">
<p>Pfad: <input name="pfad" type="text" /> |
<select name="welche">
<option value="">anzuzeigen</option>
<option value="alle">alles</option>
<option value="verzeichnis">nur Verzeichnisse</option>
<option value="dateien">nur Dateien</option>
</select> | rekursiv <input name="rekursiv" type="checkbox" /> <input type="submit" name="button" value="anzeigen" /></p>
</form>
<?php
$verzeichnis = isset($_GET['pfad']) ? verzeichnis_auslesen($pfad, $welche, $rekursiv) : false;
if ($verzeichnis)
{
echo "<pre>Verzeichnis-Listing:\n";
print_r($verzeichnis);
echo "</pre>\n";
}
?>
</body>
</html>
Liebe Grüße aus Ellwangen,
Felix Riesterer.