WinFuture-Forum.de: Einrückung von Unterverzeichnissen in <option> - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Einrückung von Unterverzeichnissen in <option>


#1 Mitglied ist offline   Anddro 

  • Gruppe: aktive Mitglieder
  • Beiträge: 43
  • Beigetreten: 11. Oktober 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Interessen:Amerikanische Serien gucken und Nachrichten bei WinFuture lesen

geschrieben 08. März 2012 - 18:35

Hallo,
ich hätte hier mal ein kleines Problem in meinem Script das ich einfach nicht zu lösen kriege.
Und zwar möchte ich in folgendem Code, dass die Unterverzeichnisse jeweils eingerückt zum Überverzeichnis stehen, da ich das irgendwie nicht gut beschrieben kriege, zeig ichs euch:

Ordner 1
--Unterordner1
--Unterordner2
----Unterunterordner1
----Unterunterordner2
--Unterordner3
Ordner 2
--Unterordner1

Ansich habe ich das schon hinbekommen, das Problem ist nur das ich das in <select> bzw. ins <option> packe, dort würde ich es mit Einrückung vielleicht machen das vor dem Ordnernamen einfach ein &nbsp; steht, bzw je tiefer der Ordner, desto mehr &nbsp;
Aber leider weiß ich nicht, wohin mit dem &nbsp;

Hier nun mein aktueller Code:
<select size="1" id="OrdnerlisteAuswahl" onChange="OrdnerlisteAuswahl()">
  <option value="" style="font-weight:bold">Eigene Dateien</option>
  <option value="" style="font-weight:bold">Gemeinsame Dateien</option>
  <option value="" disabled>---</option>
		
<?php

function ordnerinhalt($folder='../../Files/Uploads/MediaStorage/Anddro') {
  $content = "";
 
  foreach(scandir($folder) as $file) {
    if($file[0] != '.') { // Versteckte Dateien nicht anzeigen
      if(is_dir($folder.'/'.$file)) {
        $folderArray[] = $file;
	} else {
	$fileArray[] = $file;
	}
    }
  }
 
	// Erst die Ordner ausgeben
	if(isset($folderArray)) {
	  foreach($folderArray as $row) {
	    $content .= '<option value="'.$folder.'/'.$row.'">'.$row.'</option>';
	    $content .= ordnerinhalt($folder.'/'.$row); // rekursive Funktion
	  }
	}
  return $content;
}
 
echo ordnerinhalt();

?>		
		
  <option value="" disabled>---</option>
</select>



Vielen Dank schon mal für eure Hilfe!

Schöne Grüße
Anddro


PS: ich glaube der Code enthält noch Sachen die unnötig sind, die sich dann auf Dateiausgabe beziehen, einfach nicht beachten^^
0

Anzeige



#2 Mitglied ist offline   mush 

  • Gruppe: aktive Mitglieder
  • Beiträge: 895
  • Beigetreten: 29. Mai 07
  • Reputation: 7

geschrieben 10. März 2012 - 15:28

Zuerst:
if($file[0] != '.') { // Versteckte Dateien nicht anzeigen

Kommentar stimmt nicht. Unter Unix-Systemen repräsentiert "." das aktuelle Verzeichnis. ".." ist das übergeordnete Verzeichnis. Wenn du versteckte Dateien ausblenden mächtest, musst du prüfen, ob der Dateiname mit "." beginnt. Du prüfst jedoch ob der Dateiname gleich "." ist, was nur einmal pro Ordner der Fall ist.

Lösungsansatz für dein Problem:
Mach es rekursiv. Eine Funktion nimmt einen Ordner und durchsucht ihn. Findet er einen weiteren Ordner, ruft sich die Funktion selbst auf. Zusätzlich wird die "Ordnertiefe" übergeben, in welcher sich die FUnktion aktuell befindet. So kannst du Unterordner einrücken, indem du die aktuelle Tiefe mit einer festen Anzahl Pixel multiplizierst (CSS/PHP-Pseudo: margin-left:$level*20px). Sollte dir das nicht weiterhelfen, kann ich dir nachher einen Beispielcode schreiben.
insane in the membrane
0

#3 Mitglied ist offline   __42__ 

  • Gruppe: aktive Mitglieder
  • Beiträge: 38
  • Beigetreten: 10. März 12
  • Reputation: 5

geschrieben 10. März 2012 - 18:19

Beitrag anzeigenZitat (mush: 10. März 2012 - 15:28)

Zuerst:
if($file[0] != '.') { // Versteckte Dateien nicht anzeigen

Kommentar stimmt nicht. Unter Unix-Systemen repräsentiert "." das aktuelle Verzeichnis. ".." ist das übergeordnete Verzeichnis. Wenn du versteckte Dateien ausblenden mächtest, musst du prüfen, ob der Dateiname mit "." beginnt. Du prüfst jedoch ob der Dateiname gleich "." ist, was nur einmal pro Ordner der Fall ist.

Eigentlich prüft er genau ob der erste Buchstabe der Datei ein "." ist...
0

#4 Mitglied ist offline   Anddro 

  • Gruppe: aktive Mitglieder
  • Beiträge: 43
  • Beigetreten: 11. Oktober 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Interessen:Amerikanische Serien gucken und Nachrichten bei WinFuture lesen

geschrieben 12. März 2012 - 18:29

Hi,
vielen Dank für eure Antworten und tut mir leid das ich erst jetzt antworte.
Also ich weiß schon ungefähr glaube ich worauf du hinaus willst mush, aber wenn es nicht
zu viele Umstände macht wäre ein kleines Beispiel wirklich sehr hilfreich für mich.

Schöne Grüße
Anddro
0

#5 Mitglied ist offline   Ludacris 

  • Gruppe: Moderation
  • Beiträge: 4.666
  • Beigetreten: 28. Mai 06
  • Reputation: 218
  • Geschlecht:Männlich

geschrieben 12. März 2012 - 18:44

Der margin würde da nicht viel bringen weil er ein dropdownfeld hat. Wenn müsste er jeweils ein &nbap; oder &Tab; (ich glaub es war &Tab) davorschreiben
0

#6 Mitglied ist offline   Stefan_der_held 

  • Gruppe: Offizieller Support
  • Beiträge: 14.289
  • Beigetreten: 08. April 06
  • Reputation: 885
  • Geschlecht:Männlich
  • Wohnort:Dortmund NRW
  • Interessen:Alles wo irgendwie Strom durchfließt fasziniert mich einfach weswegen ich halt Elektroinstallateur geworden bin :)

geschrieben 12. März 2012 - 21:51

Beitrag anzeigenZitat (mush: 10. März 2012 - 15:28)

Zuerst:
if($file[0] != '.') { // Versteckte Dateien nicht anzeigen

Kommentar stimmt nicht. Unter Unix-Systemen repräsentiert "." das aktuelle Verzeichnis. ".." ist das übergeordnete Verzeichnis. Wenn du versteckte Dateien ausblenden mächtest, musst du prüfen, ob der Dateiname mit "." beginnt. Du prüfst jedoch ob der Dateiname gleich "." ist, was nur einmal pro Ordner der Fall ist.


bin zwar linuxseitig etwas eingerostet....

würde in der Konsole entsprechend

!= .?*

eingeben denn:

Eine versteckte Datei hat MINDESTENS ein Zeichen (der Platzhalter '?') nach dem Punkt, keines vorher, aber n dahinter (PLatzhalter '*') :wink:

ob das direkt 1:1 in PHP übernahmefähig ist müsste man schauen. da habe ich momentan keine Möglichkeit zu.
0

#7 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 19. März 2012 - 15:05

Die eigentlich Frage war doch aber irgendwie, wo das Leerzeichen zum Einrücken hin muß.

versuche es mal direkt hinter dem ">" also so:

$content .= '<option value="'.$folder.'/'.$row.'">&nbsp;'.$row.'</option>';



Da muß es erstmal hin. Ich weiß jetzt aber nicht, ob innerhalb der Schleife noch tiefere Unterordnungen kommen können. Das würde jetzt vor allen Listeneinträgen innerhalb dieser Schleife ein Leerzeichen machen.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#8 Mitglied ist offline   Anddro 

  • Gruppe: aktive Mitglieder
  • Beiträge: 43
  • Beigetreten: 11. Oktober 07
  • Reputation: 0
  • Geschlecht:Männlich
  • Interessen:Amerikanische Serien gucken und Nachrichten bei WinFuture lesen

geschrieben 19. März 2012 - 17:46

Danke Holger_N,
aber das bringt leider nicht den gewünschten Erfolg, da wie du bereits sagst, vor jedem Eintrag einfach nur
ein Leerzeichen macht, aber eben nicht diese Struktur wie ich sie mir wünschen würde.

Ich schätze mal die ganze Funktion muss irgendwie anders aufgebaut werden,
nur habe ich leider keine Ahnung wie die aussehen soll...
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0