php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2009

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 11.03.2009, 18:40  
Neuer Benutzer
 
Registriert seit: 11.03.2009
Beiträge: 23
Black_Sheep befindet sich auf einem aufstrebenden Ast
Standard verzeichnis auslesen und letzten Ordner als Menüpunkt

Hallo,

ich versuche Ordner so auszulesen, dass man sie zum einen aufklappen kann und zum anderen, dass der letzte Ordner als Menü verwendet wird.
Das heißt wenn man einen Ordnerzweig ganz aufgeklappt hat soll der letzte angezeigte Ordner als Link verwendet werden.

Bisher habe ich es nur geschafft, das Verzeichnis so auszulesen, dass auch alle Dateien angezeigt werden und der Baum komplett ausgeklappt ist.

So sieht das aus bisher:

PHP-Code:
function recurse_directory($path=".")
    {
    global 
$DOCUMENT_ROOT$HTTP_HOST;
    if (empty(
$path)) {$path $DOCUMENT_ROOT;}
    if(!
is_dir($path))
    {
    return 
FALSE;
    }
$dir opendir($path);
echo 
"<ul>";
while (
$file readdir($dir))
    {
    if (
$file != "." && $file != "..")
        {
        if (
is_dir($path "/" .$file))
            {
            echo 
"<li><b>$file</b></li>";
            
recurse_directory($path "/" $file$base_url$path);
            }
        else
            {
            
$url "http:$HTTP_HOST/$path/$file";
            
$url str_replace("$DOCUMENT_ROOT"""$url);
            echo 
"<li> <a href= \"$url\">$file</a>$url</li>";
            }
        }
}
echo 
"</ul>";
}
recurse_directory(); 
Black_Sheep ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 11.03.2009, 20:24  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Du musst eben feststellen, welches der letzte Ordner ist. In der while-Schleife kannst du das nicht feststellen, da readdir/opendir gewissermassen Streams sind, das heißt nicht prüfbar ist, ob man sich im nächsten Durchlauf am Ende befindet. Speicher doch erstmal alle Ordner in einen Array und spalte die Ausgabe dann in eine extra Funktion. Dort kannst du mit count() einfach feststellen, welches das letzte Element ist.
Chriz ist offline  
Alt 12.03.2009, 02:26  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

oder einfach mit end ()
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 12.03.2009, 11:37  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
oder einfach mit end ()
Geht das?
Ist opendir/readdir eine Iteration oder ein Stream?
Bin mir grade selbst nicht mehr sicher ..
Chriz ist offline  
Alt 12.03.2009, 11:46  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Zitat:
Zitat von Chriz Beitrag anzeigen
Geht das?
Ist opendir/readdir eine Iteration oder ein Stream?
Bin mir grade selbst nicht mehr sicher ..
Wie soll das denn gehen? Selbst wenn end() das akzeptiert, mit end() setzt du ja den internen Zeiger aufs Ende, also zum Vergleichen ob man am Ende ist bräuchte man dann ja irgendwie ne Kopie, sonst überspringt man ja die vorherigen Ordner und die will er ja auch ausgeben. Außerdem muss das Ende ja kein Ordner sein...
cycap ist offline  
Alt 12.03.2009, 15:25  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Wenn es geht kannst du doch mit current() == end() prüfen ob du am Ende bist. Wie gesagt bin mir nicht sicher ob es ein Stream oder eine Iteration ist. Ist sicher schnell getestet. Man bricht sich aber sicher kein Bein wenn man das ganze in zwei Schleifen durchläuft.
Chriz ist offline  
Alt 12.03.2009, 15:55  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Ich versteh deine Aussage nicht. Wenn ich end() benutze geht mir doch die aktuelle Position flöten, weil

Zitat:
Zitat von http://de.php.net/end
end() rückt den internen Zeiger von array bis zum letzten Element vor, und gibt dessen Wert zurück.
cycap ist offline  
Alt 12.03.2009, 20:55  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.267
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Stimmt.
Chriz ist offline  
Alt 12.03.2009, 22:02  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Dort kannst du mit count() einfach feststellen, welches das letzte Element ist.
Zitat:
oder einfach mit end ()
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 12.03.2009, 23:59  
Moderator
 
Benutzerbild von cycap
 
Registriert seit: 13.02.2008
Beiträge: 6.816
PHP-Kenntnisse:
Fortgeschritten
cycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nettcycap ist einfach richtig nett
Standard

Was trotzdem eine Array-Kopie benötigt, im Gegensatz zu count()
cycap ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] readdir(): Ordner datein auslesen t-stude PHP Tipps 2009 11 16.08.2009 16:37
Mehrere Ordner auslesen, klappt nicht so ganz :( stayInside PHP Tipps 2009 21 11.02.2009 14:59
Ordner auslesen und während des auslesen sortieren Dooki PHP Tipps 2008 6 14.05.2008 17:50
TreeMenu Fatal Error PHP Tipps 2006 8 07.04.2006 11:22
Unter ordner und Files automatisch auslesen lichtscheu PHP Tipps 2006 6 09.03.2006 19:19
neuer ordner in anderem verzeichnis lindner PHP Tipps 2005-2 1 05.09.2005 10:11
Verzeichnis auslesen saibot PHP Tipps 2005-2 8 09.08.2005 12:22
Ordner auslesen PHP Tipps 2005-2 12 03.07.2005 16:43
Ordner Struktur auslesen bestimmte datei finden .... silverghost PHP Tipps 2005 3 24.05.2005 13:55
Ordner auslesen - Zusätzliche Bildplatzhalter PHP Tipps 2005 8 21.05.2005 12:25
Fehler bei Auslesen von Ordnernamen und datein im ordner PHP-Fortgeschrittene 3 11.12.2004 13:25
Fehlersuche: Ordner aus Verzeichnis auslesen DannyD PHP Tipps 2004-2 6 19.11.2004 20:36
ordner in einem verzeichnis auslesen und anzeigen lindner PHP Tipps 2004 5 19.08.2004 00:03
[Erledigt] Verzeichnis andersrum auslesen PHP Tipps 2004 7 02.08.2004 07:39
Ordner Auslesen PHP Tipps 2004 3 03.07.2004 09:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php url ordner auslesen, php url verzeichnis auslesen, php vorheriger ordner, php url pfad auslesen, php letztes verzeichnis, php url letzter ordner, php pfad letztes verzeichnis, html voriger ordner, php verzeichnis auslesen url, php voriger ordner, url verzeichnis, html vorheriger ordner, url ordner auslesen php, php letzten ordner aus pfad, php verzeichnis auslesen ordner zuerst, ordner aus verzeichnis mit php auslesen, ordner in verzeichnis auslesen php, php letzten ordner aus pfad lesen, php url und ordner auslesen, php ordner aus verzeichnis auslesen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:27 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum