kostenloser Webspace werbefrei: lima-city


PHP Unterverzeichnisse eines Verzeichnisses ausgeben

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    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.
  5. hallo

    der Fehler bei:
    ... && is_dir ( $verzeichnis ) == true
    zu finden

    Vergleiche bei Typ boolean mit === nicht nur ==

    also entweder du lässt den Teil
    == true
    ganz weg
    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
    '</option>';
    noch eine Zeilenumbruch im Quellcode
    also so:
    '</option>' . "\n";
    dann wird der erzeugte Quellcode besser lesbar :)





    Beitrag zuletzt geändert: 30.9.2012 12:26:09 von tags
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    @tags: vergiss das, wenn
    is_dir($verzeichnis) == true
    kein true ergibt wird
    is_dir($verzeichnis) === true
    schon gar nicht true ergeben, da der Typ auch übereinstimmen müsste, was hier aber völlig nutzlos ist, da
    is_dir
    sowieso nur boolean zurück gibt.

    @Topic:
    Dein Problem:
    $verzeichnis
    ist nur der Verzeichnisname, aber nicht der vollständige Pfad.
    is_dir()
    braucht aber den vollständigen Pfad, da es sonst im aktuellen Verzeichnis zu suchen begint und dort die Ordner nicht finden wird.

    // EDITIERT

    Wozu gibst du das Verzeichnis in
    $verz
    an? So würde es funktionieren:
    <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
  7. @hackyourlife .... da hast du natürlich recht

    ich habe es selber ausprobiert mit
    $verz = './';
    also war der absolute Pfad bei mir "egal"
    weil das script ja sowieso im "gleichen" Ordner war

    als ich es mit
    == true
    ausprobiert habe, keine Ausgabe
    aber mit
    === true
    oder der Kurzform (ohne) , dann ging es
    (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
    === true
    anstatt
    == true
    ja auch nicht
    wenn man explizit auf boolean Wert (true oder false) prüfen will, aber ohne gehts ja auch,

    die Kurzform / ein einfaches
    if ( 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
  8. yo mey di madeln! zu viel rede, wenig sinn ;)
    und so geht es!
  9. Autor dieses Themas

    davy

    Kostenloser Webspace von davy

    davy hat kostenlosen Webspace.

    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
  10. 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
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!