php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 08-05-2008, 14:14
infernalshade
 Member
Links : Onlinestatus : infernalshade ist offline
Registriert seit: Jan 2008
Beiträge: 165
infernalshade ist zur Zeit noch ein unbeschriebenes Blatt
Standard Kleinen Denkanstoss zur Baumstruktur?

Hallo!

Ich hab mir mal folgendes Script geschrieben:

PHP-Code:
<?php
$ordner
="";
$pfad="../";

baum($ordner,$pfad);

function 
baum($ordner,$pfad)
{
    
$folder=$ordner;
    
$dir=$pfad;
    
    
$openfolder=$dir.$folder;
    if (
$handle opendir($openfolder)) {
        while (
false !== ($file readdir($handle))) {
            if (
$file != "." && $file != "..") {
                if(
is_dir($dir.$folder.$file))
                {
                    echo 
$file."<br />";
                    
$ordner=$folder.$file."/";
                    
$pfad=$dir;
                    
baum($ordner,$pfad);
                }
                else {
                    echo 
$file."<br />";
                }
            }
        }
        
closedir($handle);
    }
}
?>
Dieses Script erzeugt z.B. die Ausgabe:

add.php
admin
add_user.php
delete.php
edit.php
highlighter
filechange.php
filechange2.php
frame.php
highlighter.php
images
doc.png
folder.png
...

Also alle untereinander...

Wie kann ich es aber machen das die Ausgabe z.b. wie folgt aussieht?

add.php
admin
-add_user.php
delete.php
edit.php
highlighter
-filechange.php
-filechange2.php
-frame.php
-highlighter.php
-images
--doc.png
--folder.png

Also mit einrücken (Können Striche oder Leerzeichen sein, eigentlich egal!)

mfg
infernalshade
Mit Zitat antworten
  #2 (permalink)  
Alt 08-05-2008, 14:19
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

nimm z.b. den kompletten pfad, drösel die tiefe per explode auf und rücke anhand der anzahl von einträgen ein:
PHP-Code:
else {
   
$depth explode ('/',$dir.$folder);
   echo 
str_repeat("&nbsp;"count($depth)).$file;

so in der art.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 08-05-2008, 14:25
infernalshade
 Member
Links : Onlinestatus : infernalshade ist offline
Registriert seit: Jan 2008
Beiträge: 165
infernalshade ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke, Danke, das probier ich gleich mal aus

mfg
Mit Zitat antworten
  #4 (permalink)  
Alt 08-05-2008, 14:27
jahlives
 Master
Links : Onlinestatus : jahlives ist offline
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.279
jahlives ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
nimm z.b. den kompletten pfad, drösel die tiefe per explode auf und rücke anhand der anzahl von einträgen ein:
Dann doch lieber gleich Nested Sets verwenden
http://www.klempert.de/nested_sets/
http://dev.mysql.com/tech-resources/...ical-data.html
http://www.php-resource.de/tutorials/read/21/1/

Viel Spass

Gruss

tobi
__________________
Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."
Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)
Mit Zitat antworten
  #5 (permalink)  
Alt 08-05-2008, 14:31
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Ja, das macht ganz besonders viel Sinn
Mit Zitat antworten
  #6 (permalink)  
Alt 08-05-2008, 14:31
infernalshade
 Member
Links : Onlinestatus : infernalshade ist offline
Registriert seit: Jan 2008
Beiträge: 165
infernalshade ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Oha, naja so kompliziert muss es dann auch nicht sein!

Danke jahlives, aber mit der Methode von Kropf haut es schon ganz gut hin

Muss jetzt nur noch die Leerzeichen durch Grafiken ersetzen!

Vielen Dank trotzdem!

mfg
Mit Zitat antworten
  #7 (permalink)  
Alt 08-05-2008, 14:33
unset
  Moderator
Links : Onlinestatus : unset ist offline
Registriert seit: Jan 2007
Ort: Düsseldorf
Beiträge: 3.782
unset befindet sich auf einem aufstrebenden Ast
Standard

Wäre auch Blödsinn mit Nested Sets.
Mit Zitat antworten
  #8 (permalink)  
Alt 08-05-2008, 15:14
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Statt explode und count kannst du auch mal testen, ob substr_count oder count_chars fixer ist (wovon ich ausgehe).
Mit Zitat antworten
  #9 (permalink)  
Alt 08-05-2008, 15:18
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Noch eine Möglichkeit: Die Rekursionstiefe übergeben.
PHP-Code:
function baum($ordner$pfad$depth 0)
{
    
// …
    
baum($ordner$pfad$depth+1);
    
// …

Mit Zitat antworten
  #10 (permalink)  
Alt 08-05-2008, 15:34
infernalshade
 Member
Links : Onlinestatus : infernalshade ist offline
Registriert seit: Jan 2008
Beiträge: 165
infernalshade ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Also mit dem ZweiZeiler von Kropff haut es super hin!

Geschwindigkeit ist nicht weiter wichtig, da es nicht allzuviel ist und nur einmal geladen werden muss!

@onemorenerd
Diese Methode ist auch nicht schlecht, vllt noch bissl kürzer! Mal schaun!


Das mit den Grafik haut allerdings nicht ganz hin wie ich das wollte...
Es sollte so aussehn wie z.b. im Windows-Explorer! Da ich aber jetzt nur Leerzeichen einrücke (Also lauter gleiche Zeichen) ist dies einfacher als wenn ich verschiedene Zeichen vorne dran machen muss (z.B. ein + und dann --- oder so!)

mfg
Mit Zitat antworten
  #11 (permalink)  
Alt 08-05-2008, 15:42
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Du musst doch nur alle Grafiken gleich breit machen.
Mit Zitat antworten
  #12 (permalink)  
Alt 08-05-2008, 15:52
infernalshade
 Member
Links : Onlinestatus : infernalshade ist offline
Registriert seit: Jan 2008
Beiträge: 165
infernalshade ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ja ne das Problem ist ja nicht die Größe der Grafiken, SONDERN das ich ja mit Grafiken nicht mit einem count reinzählen kann weil ja in jeder Zeile eine verschiedene Anordnung von Symbolen vor dem Dateinamen wär!

Hier ein Beispiel:

+Ordner
+-Datei.php
+-Unterordner
+--Unterordner
+Datei1.php
Mit Zitat antworten
  #13 (permalink)  
Alt 08-05-2008, 16:00
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Die Position der +-Zeichen ist im Windows Explorer aber nicht ganz vorn.
Hier hast du was zum Nachbauen.
Mit Zitat antworten
  #14 (permalink)  
Alt 08-05-2008, 16:13
infernalshade
 Member
Links : Onlinestatus : infernalshade ist offline
Registriert seit: Jan 2008
Beiträge: 165
infernalshade ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das ist genau das was ich versuche zu bauen, nur will ich das selber realisieren, will ja ein PHP-Progger werden

Zumindest bekomm ich auf der Seite schonmal alle benötigten Grafiken!

Danke für den Link!

mfg
infernalshade
Mit Zitat antworten
  #15 (permalink)  
Alt 13-05-2008, 12:30
infernalshade
 Member
Links : Onlinestatus : infernalshade ist offline
Registriert seit: Jan 2008
Beiträge: 165
infernalshade ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi Leute!

Bin jetzt so weit:
PHP-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Filechange</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<?php
$ordner
="";
$pfad="../";

baum($ordner,$pfad);

function 
baum($ordner,$pfad)
{
    
$imgvertline='<img src="treeimg/vertline.gif" height="22" widht="16" />';
    
$imgmnode='<img src="treeimg/mnode.gif" height="22" widht="16" />';
    
$imgnode='<img src="treeimg/node.gif" height="22" widht="16" />';
    
$imgfolder='<img src="treeimg/folderopen.gif" height="22" widht="24" />';
    
$imgdoc='<img src="treeimg/doc.gif" height="22" widht="24" />';

    
$folder=$ordner;
    
$dir=$pfad;
    
    
$openfolder=$dir.$folder;
    if (
$handle opendir($openfolder)) {
        while (
false !== ($file readdir($handle))) {
            if (
$file != "." && $file != "..") {
                if(
is_dir($dir.$folder.$file))
                {
                    
$depth explode ('/',$dir.$folder);
                    
$depth=count($depth)-2;
                    echo 
"<div class='treediv'>";
                    if (
$depth==1) echo $imgmnode;
                    if (
$depth==2) echo $imgvertline.$imgmnode;
                    if (
$depth==3) echo $imgvertline.$imgvertline.$imgmnode;
                    if (
$depth==4) echo $imgvertline.$imgvertline.$imgvertline.$imgmnode;
                    echo 
$imgfolder;                    
                    echo 
$file."</div>";
                    
$ordner=$folder.$file."/";
                    
$pfad=$dir;
                    
baum($ordner,$pfad);
                }
                else {
                    
$depth explode ('/',$dir.$folder);
                    
$depth=count($depth)-2;                    
                    if(
substr($file,-3)=="php") {
                        echo 
"<div class='treediv'>";
                        if (
$depth==1) echo $imgnode;
                        if (
$depth==2) echo $imgvertline.$imgnode;
                        if (
$depth==3) echo $imgvertline.$imgvertline.$imgnode;
                        if (
$depth==4) echo $imgvertline.$imgvertline.$imgvertline.$imgnode;
                        echo 
$imgdoc;
                        echo 
"<a href='./highlighter.php?&url=".$folder.$file."' target='hlframe'>".$file."</a></div>";
                    }
                }
            }
        }
        
closedir($handle);
    }
}
?>
</body>
</html>
Wie es aussieht sieht man aufm Screenshot!

Jedoch hab ich noch 2 Probleme....die Vertikalen Linien gehen auch noch runter wenn kein Ordner mehr weiter unten kommt!

2. Die Ordner-Bezeichnungen stehen am unteren Rand der Grafiken und nicht mittig, hier meine CSS-Klasse:

PHP-Code:
.treediv {
    
font-family:ArialHelveticasans-serif;
    
font-size:12px;
    
line-height:22px;
    
height:22px;
    
vertical-align:middle;


Hat jemand neLösung zu den beiden Problemen?

mfg
infernalshade
Angehängte Grafiken
Dateityp: jpg tree.jpg (73,8 KB, 132x aufgerufen)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

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