PHP Unterverzeichnisse eines Verzeichnisses ausgeben
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktuellen verzeichnis
ausgabe
ausgeben
bedingung
code
hilfe
http
jemand
kurzform
liste
ordner
pfad
problem
quatsch
quellcode
test
typ
url
vergleich
verzeichnis
-
Hallo,
ich habe mal wieder ein Problem.
Ich will in einer Select Liste, alle Unterverzeichnisse im aktuellen Verzeichnis (also wo das Script liegt) ausgeben lassen.
Dazu habe ich mir diesen Code zusammengesucht, aber er funktioniert noch nicht:
<select name="ordner"> <?php $verz = '/home/www/web48/html/test/'; $alledateien = scandir ( $verz ); foreach ( $alledateien as $verzeichnis ) { // Ausgabeschleife if ($verzeichnis != "." && $verzeichnis != ".." && is_dir ( $verzeichnis ) == true) { echo '<option value="' . $verzeichnis . '">' . $verzeichnis . '</option>'; //Ausgabe Einzeldatei } } ; ?> </select>
Könnt Ihr mir helfen?
Das Script soll nur Verzeichnisse ausgeben, keine Dateien. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Dass es nicht funktioniert ist wohl offensichtlich, sonst hättest du nicht hier nach Hilfe gefragt. Wenn du uns jetzt dann noch gütigerweise mitteilst, WAS nicht funktioniert, kann dir eventuell auch jemand weiterhelfen.
edit:
Welche Fehlermeldung(en) kommen, und was hast du schon versucht um dein Problem selbst zu lösen?
Mfg
Beitrag zuletzt geändert: 30.9.2012 12:17:01 von syberpsace -
syberpsace schrieb:
Dass es nicht funktioniert ist wohl offensichtlich, sonst hättest du nicht hier nach Hilfe gefragt. Wenn du uns jetzt dann noch gütigerweise mitteilst, WAS nicht funktioniert, kann dir eventuell auch jemand weiterhelfen.
Mfg
Also, es werden keine Verzeichnisse ausgegeben (nichts wird ausgegeben).
Aber ich will ja, dass der Inhalt vom aktuellen Verzeichnis in das Select Feld ausgegeben wird. -
hallo
der Fehler bei:
zu finden... && is_dir ( $verzeichnis ) == true
Vergleiche bei Typ boolean mit === nicht nur ==
also entweder du lässt den Teil
ganz weg== true
if ($verzeichnis != "." && $verzeichnis != ".." && is_dir ($verzeichnis) ) { echo '<option value="' . $verzeichnis . '">' . $verzeichnis . '</option>'. "\n"; // Ausgabe Einzeldatei }
oder du machst daraus=== true
if ($verzeichnis != "." && $verzeichnis != ".." && is_dir ($verzeichnis) === true) { echo '<option value="' . $verzeichnis . '">' . $verzeichnis . '</option>' . "\n"; // Ausgabe Einzeldatei }
dann klappt es auch, weil die if-Bedingung bei Vergleich Typ boolean [true / false] stimmt :)
Edit:
und als Tip ... mach am Ende von
noch eine Zeilenumbruch im Quellcode'</option>';
also so:
dann wird der erzeugte Quellcode besser lesbar :)'</option>' . "\n";
Beitrag zuletzt geändert: 30.9.2012 12:26:09 von tags -
@tags: vergiss das, wenn
kein true ergibt wirdis_dir($verzeichnis) == true
schon gar nicht true ergeben, da der Typ auch übereinstimmen müsste, was hier aber völlig nutzlos ist, dais_dir($verzeichnis) === true
sowieso nur boolean zurück gibt.is_dir
@Topic:
Dein Problem:
ist nur der Verzeichnisname, aber nicht der vollständige Pfad.$verzeichnis
braucht aber den vollständigen Pfad, da es sonst im aktuellen Verzeichnis zu suchen begint und dort die Ordner nicht finden wird.is_dir()
// EDITIERT
Wozu gibst du das Verzeichnis in
an? So würde es funktionieren:$verz
<select name="ordner"> <?php $alledateien = scandir('.'); foreach ($alledateien as $verzeichnis) { // Ausgabeschleife if(($verzeichnis != '.') && ($verzeichnis != '..') && is_dir($verzeichnis)) { $verzeichnis = htmlentities($verzeichnis); echo("<option value=\"$verzeichnis\">$verzeichnis</option>"); //Ausgabe Einzeldatei } } ?> </select>
Beitrag zuletzt geändert: 30.9.2012 13:02:19 von hackyourlife -
@hackyourlife .... da hast du natürlich recht
ich habe es selber ausprobiert mit
also war der absolute Pfad bei mir "egal"$verz = './';
weil das script ja sowieso im "gleichen" Ordner war
als ich es mit
ausprobiert habe, keine Ausgabe== true
aber mit
oder der Kurzform (ohne) , dann ging es=== true
(bei meinem Test im gleichen Verzeichnis)
wenn der Ordner, in dem "gesucht" wird nicht der gleiche ist, in dem das Script dazu läuft,
dann ist das hinzufügen des vollständige Pfad ( $verz ) natürlich wichtig (notwendig) für is_dir()
.. aber Quatsch ist das mit
anstatt=== true
ja auch nicht== true
wenn man explizit auf boolean Wert (true oder false) prüfen will, aber ohne gehts ja auch,
die Kurzform / ein einfachesif ( is_dir($verz . $verzeichnis) )
ist ja quasi das gleiche wie:if ( is_dir($verz . $verzeichnis) === true )
... Bedingung ist erfüllt, wenn is_dir() den Wert (bool)TRUE zurück gibt.
wobei auch ich die "Kurzform" eher bevorzuge :)
Beitrag zuletzt geändert: 30.9.2012 12:50:50 von tags -
Danke für die vielen Antworten!
Jetzt funktioniert alles ! :)
EDIT: Ich merke gerade, dass mir nicht die Ordner vom aktuellen Ordner angezeigt werden, sondern von dem davor.
Wie kann ich das ändern?
Das Script:
<select name="ordner"> <?php $alledateien = scandir('.'); foreach ($alledateien as $verzeichnis) { // Ausgabeschleife if(($verzeichnis != '.') && ($verzeichnis != '..') && is_dir($verzeichnis)) { $verzeichnis = htmlentities($verzeichnis); echo("<option value=\"$verzeichnis\">$verzeichnis</option>"); //Ausgabe Einzeldatei } } ?> </select>
Beitrag zuletzt geändert: 30.9.2012 13:54:07 von davy -
wie wäre es damit?
(vorschlag von lima:Dieser "Text" kann doch nun wirklich nicht als neuer Beitrag durchgehen, oder? 15 Zeichen müssen schon drin sein
!)
oh ja! no dann ;))
Beitrag zuletzt geändert: 30.9.2012 22:49:04 von czibere -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage