Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 30-08-2004, 10:51   #1 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
STUFF: Rek. PHP [alle Dateien in Ordner=>Flash Tree]

Hi ihr alle
Beim Basteln mit der Tree Component hab ich eben ein nettes kleines Script gebastelt - was vielen von euch das Handling mit der Tree Component versüßen dürfte

Das Script stammt in der Orinalform hier aus dem Flashforum und wurde von mir um die XML Output Methode erweitert...
Vorher konnte das Script einen Ordner rekursiv auslesen und darstellen...
nun kann er das ganze auch in eine XML verpacken..so das die tree komponente es direkt verarbeiten kann...

Ihr müsst im Script lediglich den Pfad zum Ordner angeben...
und in Flash dann anstatt beim laden des xml`s
ActionScript:
  1. myXML.load(nameDieserPHPDatei)
danach
ActionScript:
  1. myTree.dataProvider(this.firstChild.firstChild)

das wars auch schon sagt wie es euch gefällt !
PHP-Code:
<?php

/**
 * show_dir_array: rekursive ausgabe aller elemente einer verzeichnisstruktur.
 * @author: [url]http://www.axolander.de[/url]
 * @param string myDir: ordner, der durchsucht werden soll.
 * @param int indent: kontrollvariable, um zu bestimmen, wie
 *             viele einrueckungen benoetigt werden.
 * @return: mehrdimensionales array mit allen files.
 * hinweis: aufruf eines ordners bitte IMMER OHNE slash dahinter, sonst
 *             funktioniert das ganze nicht richtig.
 *          wenn die integrität des ersten aufrufs sichergestellt werden kann,
 *            kann die funktion beschleunigt werden, indem
 *             die zwei bedingungen if(substr...) und if(!is_dir...)
 *            auskommentiert werden.
*/
function show_dir_array($myDir ".")
{
    
// diese bedingung auskommentieren, falls o.g.
    // bedingung sichergestellt werden kann,
    // koennte bei großen ordnern zeit sparen.

    //rausgemacht wegen Performance
    
if(substr($myDir,-1) == "/"$myDir substr($myDir,0,-1);
    if(!
is_dir($myDir)) return array();


    
$dir opendir($myDir);
    
$foo = array();

    while(
$file readdir($dir))
    {
        
$newDir $myDir "/" $file;
        if(
$file == "." || $file == "..")  continue;

        if(
is_dir($newDir))  $foo[] = show_dir_array($newDir "/");

        
$foo[] = $newDir;

    }
    return 
$foo;
}
//****************************************************************************************
/**

 * show_dir_string: rekursive ausgabe aller elemente einer verzeichnisstruktur.
 * @author: [url]http://www.axolander.de[/url]
 * @param string myDir: ordner, der durchsucht werden soll.
 * @param int indent: kontrollvariable, um zu bestimmen, wie viele einrueckungen
 *        benoetigt werden.
 * @return: string, eingerueckt
 * hinweis: aufruf eines ordners bitte IMMER OHNE slash dahinter, sonst
 *            funktioniert das ganze nicht richtig.
 *              wenn dieser aufruf sichergestellt werden kann, kann die
 *            funktion beschleunigt werden, indem die zwei bedingungen
 *            if(substr...) und if(!is_dir...) auskommentiert werden.
*/
function show_dir_string($myDir "."$indent 0)
{
    
// diese bedingung auskommentieren, falls o.g.bedingung sichergestellt werden kann,koennte bei großen ordnern zeit sparen.

    
if(substr($myDir,-1) == "/")
      
$myDir substr($myDir,0,-1);
    if(!
is_dir($myDir))
      return 
"";

    
$dir opendir($myDir);
    
$einrueckung str_repeat("&nbsp;"$indent 4);
    
$foo "";

    while(
$file readdir($dir))
    {
        
$newDir $myDir "/" $file;
        if(
$file == "." || $file == "..")
          continue;
        if(
is_dir($newDir))
          
$foo .= show_dir_string($newDir "/", ++$indent);
        
$foo .= $einrueckung $newDir "<br />\n";
    }
    return 
$foo;
}
//****************************************************************************************
/**
 * show_dir_xml: rekursive ausgabe aller elemente einer verzeichnisstruktur in flash konformem xml format
 * @author: [url]http://nkylab.de/blog[/url]
 * @param string myDir: ordner, der durchsucht werden soll.
 * @param int indent: kontrollvariable, um zu bestimmen, wie
 *             viele einrueckungen benoetigt werden.
 * @return: xml string
 * hinweis: aufruf eines ordners bitte IMMER OHNE slash dahinter, sonst
 *             funktioniert das ganze nicht richtig.
 *          wenn die integrität des ersten aufrufs sichergestellt werden kann,
 *            kann die funktion beschleunigt werden, indem
 *             die zwei bedingungen if(substr...) und if(!is_dir...)
 *            auskommentiert werden.
*/
function show_dir_xml($myDir "."$indent 0)
{
    
// diese bedingung auskommentieren, falls o.g.bedingung sichergestellt werden kann,koennte bei großen ordnern zeit sparen.
    
if(substr($myDir,-1) == "/")
      
$myDir substr($myDir,0,-1);
    if(!
is_dir($myDir))
      return 
"";

    
$dir opendir($myDir);
    
$einrueckung str_repeat(" "$indent 4);
    
$foo "";
    while(
$file readdir($dir))
    {
        
$newDir $myDir "/" $file;
        if(
$file == "." || $file == "..")
          continue;
        if(
is_dir($newDir))
          
$foo .= '<node label="'.$file.'">'."\n".show_dir_xml($newDir "/"1)."</node>\n";
        else
        
$foo .= $einrueckung.'<node label="'.$file.'"/>'."\n";
    }
    return 
$foo;
}
//****************************************************************************************
//
/* erste methode: alle files in einem array, schneller als show_dir_string */
// $arr = show_dir_array();
// print_r($arr);

/* zweite methode: string-ausgabe */
//echo "<html><body>";
//echo show_dir_string("../../../test/");
//echo "</body></html>";

/* dritte methode: xml-ausgabe für flash tree*/
echo "<XMLDocumentObject>\n<node>\n".show_dir_xml("../../../downloads/")."</XMLDocumentObject>";
?>
nky ist offline   Mit Zitat antworten
Alt 31-08-2004, 08:01   #2 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
und keiner ders brauchen kann
ok pack ichs halt wieder ein !

Gruss nky
nky ist offline   Mit Zitat antworten
Alt 31-08-2004, 08:25   #3 (permalink)
Flashaholic
 
Benutzerbild von atothek
 
Registriert seit: Feb 2003
Ort: Berlin
Beiträge: 1.459
na das wird schon noch anklang finden. ich finde es klasse wenn ich es auch nicht brauche zur Zeit jedenfalls. ich bedanke mich dafür im namen aller die sich bedanken wollen denne aber die worte fehlen

DANKE nky.

mfg
alex

ps. was ist mit deinem Flash -> PHP Pbject/Array transfer geworden?
__________________
TVNEXT Solutions
atothek ist offline   Mit Zitat antworten
Alt 31-08-2004, 08:37   #4 (permalink)
nky
Bontempi Punk
 
Benutzerbild von nky
 
Registriert seit: Dec 2001
Ort: Dtld/Pfalz
Beiträge: 4.185
Der gute atothek - immer ein nettes Wort

Zitat:
ps. was ist mit deinem Flash -> PHP Pbject/Array transfer geworden?
Nix Aber nur aus Zeitmangel...ich programmier privat an so einem abartig fetten Projekt - das ich meine komplette Zeit darein stecke...

Gruss nky
nky ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

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 sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:37 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele