Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Verzeichniss einlesen

  1. #1
    HTML Newbie
    Registriert seit
    28.07.2010
    Beiträge
    9
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard Verzeichniss einlesen

    Hallo, hoffe mir kann einer helfen....
    Folgendes ich habe einen Ordner (X) welches wiederrum einige Ordner enthält, in diesen Ordnern befindet sich dann ein Datei die immer mit .ctrl endet welche ich Laden möchte.
    Ich bräuchte nun ein Script welches mir den Ordner(X) mit den darin enthaltenen Ordnern durchsucht, und überall wo eine .ctrl enthalten ist daraus ein <option> generiert. *hoffe man versteht was ich meine*

    Ich war nicht untätig und habe es schonmal versucht... komme aber gerade nicht weiter.

    Hier mal mein code (ich weis nicht schön aber selten *grins*)#

    PHP-Code:
    function select_read_dir($dir,$data) {

        
    $i=0;
        
    $hdl opendir("./X/");
        while (
    false !== ($file readdir($hdl))) {
            if (
    $file != "." && $file != "..") {
                
    $DATA_RKD[] = $file;
            }
        }
        
    sort($DATA_RKD,0);
        while (
    $i count($DATA_RKD))
        {
            
    $hst strtolower(substr($DATA_RKD[$i], 03));
            
    $kdr strtolower(substr($_REQUEST[kde], 03));
            if (
    $kdr == $hst) {
                echo 
    "<option value=\"".$DATA_RKD[$i]."\" selected>".$DATA_RKD[$i]."</option>\n";
            } else {
                echo 
    "<option value=\"".$DATA_RKD[$i]."\">".$DATA_RKD[$i]."</option>\n";
            }
            
    $i++;
        }
        echo 
    "</select>\n";

    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Bandit
    Gast

    Standard AW: Verzeichniss einlesen

    Ähm, ich empfehle mal, die ganzen opendir, readdir und closedir durch ein simples glob zu ersetzen, damit lassen sich schon mal einige Sachen vereinfachen. Weiterhin sehe ich da eine Variable $DATA_RKD, die aus dem nichts erscheint. Dafür wird aber der Parameter $data nirgendwo benutzt. Ich würde mir in solchen Funktionen maximal die Dateinamen holen und auf keinen Fall ein select-Feld anlegen, dass du übrigens nur schließt und nie öffnest.

    Fazit: komplett überarbeiten und vorher ein paar Gedanken machen, wie man sowas am geschicktesten lösen kann.

    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  3. #3
    HTML Newbie
    Themenstarter

    Registriert seit
    28.07.2010
    Beiträge
    9
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Verzeichniss einlesen

    Ich glaube ich hole mir die Hilfe wo anders !
    Ich wollte kein Kurs in "Wie habe ich zu Proggen ! oder wie Debugge ich !" sondern einen Lösungs vorschlag zum Script...

    1.) Hättest Du dir das Script mal richtig angesehen , dannn hättets du auch bemerkt das es eine function ist die den wert $dir & $data übergeben bekommt !
    2.) $DATA_RKD[] = $file; sie erscheint also nicht aus dem "NICHTS !"

    aber egal ich versuche es mal wo anders...

  4. #4
    Kaiser(in)
    Registriert seit
    29.03.2009
    Ort
    1011 1111 1011 WorldWideWeb
    Beiträge
    2.439
    Danke
    2
    Bekam 6 mal "Danke" in 6 Postings

    Standard AW: Verzeichniss einlesen

    Brauchst du nicht, crossposting ist böse ...
    Bandit hat schon recht, $DATA_DRK wird nirgends als Array definiert und $data bekommt die Funktion zwar übergeben (das hat bandit aber nicht gemeint) aber die funktion benutzt $data nirgends.
    Egal. Du gehst die sache am besten so an:
    Bau dir eine Funktion, die ein verzeichnis scannt. Wenn diese Funktion innerhalb eines Verzeichnisses wieder auf eines stößt, dann ruft sie sich selbst mit dem ordner als parameter auf. Zurück kommt dann ein array mit pfaden zu den ordnern, in denen .ctrl dateien sind. Das Kannst du ja dann verarbeiten.
    Geändert von Tobse (04.08.2010 um 12:44 Uhr)
    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.
    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  5. #5
    Bandit
    Gast

    Standard AW: Verzeichniss einlesen

    Zitat Zitat von SpiderZLS Beitrag anzeigen
    Ich glaube ich hole mir die Hilfe wo anders !
    Wenn du meinst!
    Zitat Zitat von SpiderZLS Beitrag anzeigen
    Ich wollte kein Kurs in "Wie habe ich zu Proggen ! oder wie Debugge ich !" sondern einen Lösungs vorschlag zum Script...
    Den hast du bekommen, sogar relativ ausführlich!
    Zitat Zitat von SpiderZLS Beitrag anzeigen
    1.) Hättest Du dir das Script mal richtig angesehen , dannn hättets du auch bemerkt das es eine function ist die den wert $dir & $data übergeben bekommt !
    Und wenn du dir deinen eigenen Scheiß mal richtig angesehen hättest, wäre dir aufgefallen, dass $data überhaupt nicht benutzt wird.
    Zitat Zitat von SpiderZLS Beitrag anzeigen
    2.) $DATA_RKD[] = $file; sie erscheint also nicht aus dem "NICHTS !"
    Doch! Wenn du mal das Error-Reporting von PHP hochdrehen würdest, würde dir PHP diese Zeile um die Ohren hauen.

    Wenn du null Ahnung hast, solltest du nicht ausgerechnet dehnen, die dir Tipps geben, auch noch so blöde kommen. Und wenn du so simple Sachen nicht hinbekommst, musst du auch nicht diejenigen anmachen, die solche Scripte locker schreiben können. Mit anderen Worten: komm runter!!!!

  6. #6
    der/die Göttliche Avatar von jojo87
    Registriert seit
    23.03.2007
    Ort
    Leipzig
    Alter
    30
    Beiträge
    3.131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Verzeichniss einlesen

    Hab ich gute Laune heute

    Ordnerklasse:
    PHP-Code:

    <?php
    /**
     * Dir
     * class represanting a folder in filesystem
     * provides read-access to files and subfolders
     * @author jojo
     *
     */
    class Dir
    {
        
    /**
         * Directory is uninitialized
         */
        
    const DIR_BLANK 0;
        
        
    /**
         * Director did a scan of
         * to be represented filesystem-folder
         *
         */
        
    const DIR_SCANNED 1;

        
    /**
         * file-separator
         * 
         */
        
    const DIR_SEPARATOR "/";
        
        
    /**
         * indicating state of directory
         * @var int
         */
        
    protected $_state Dir::DIR_BLANK;
        
        
    /**
         * the rootdirectory in filesystem
         * from that on dirs are read
         * @var string
         */
        
    protected $_root "/";
        
    /**
         * parent directory
         * @var Dir
         */
        
    protected $_parent;
        
        
    /**
         * array with subdirectories
         * subdirectories are uninitialized, i.e. did not scan themself
         * @var array<Dir>
         */
        
    protected $_subdirs = array();
        
        
    /** name of directory
         * @var string
         */
        
    protected $_name;

        
    /** array with files
         * @var array<Dir_File>
         */
        
    protected $_files = array();

        
    /**
         * constructor
         *
         * @param string $path path to dir
         * @param Dir $parent the parent-directory if any
         * @param string root the root directory of package
         * @throws Dir_DirNotReadableException if dir is not readable
         * @throws Dir_DirOutOfScopeException if dir is above root-folder
         * @return void
         */
        
    public function __construct($pathDir $parent=null$root=null)
        {
           if (!
    $root && defined("DIR_ROOT")) {
               
    $this->_root realpath(DIR_ROOT);
           } elseif (
    $root) {
               
    $this->_root realpath($root);
           }
           if (!
    is_dir($this->_root Dir::DIR_SEPARATOR $path)) {
               throw new 
    Dir_DirNotReadableException($this->_root Dir::DIR_SEPARATOR $path " does not exist!");
           }

           
    $this->_parent $parent;
           if (empty(
    $path)) {
               
    $path "/";
           }
           
    $this->_name realpath($this->_root Dir::DIR_SEPARATOR $path);
           if (
    strpos($this->_name$this->_root) === FALSE) {
               throw new 
    Dir_DirOutOfScopeException($this->_name " is not within the root-directory specified: " $this->_root);
           }
           
        }

        
    /**
         * returns the root-directory this package is working on
         * @return string root-folder
         */
        
    public function getRoot()
        {
            return 
    $this->_root;
        }

        
    /**
         * returns all subdirs
         * @return array<Dir>
         */
        
    public function getSubdirs()
        {
            return 
    $this->_subdirs;
        }

        
    /**
         * returns all files
         * @return array<Dir_File>
         */
        
    public function getFiles()
        {
            return 
    $this->_files;
        }
        
        
    /**
         * returns dirname with full path
         * beginning from root
         * @return string
         */
        
    public function getPathname()
        {
            return 
    substr($this->_namestrrpos($this->_name$this->_root Dir::DIR_SEPARATOR)+strlen($this->_root)+1);
        }
        
        
    /**
         * returns dirname without path
         * @return string
         */
        
    public function getName()
        {
            return (
    $this->_name === $this->_root) ? "" substr($this->_namestrrpos($this->_name"/")+1);
        }

        
    /**
         * returns parent-directory
         * watch its state!
         * @return Dir the parent dir
         */
        
    public function dirUp()
        {
            return 
    $this->_parent;    
        }
        
        
    /**
         * loads this dir, subdirs(without files and non-recursive)
         * and this dir's files
         * 
         * @todo implement recursion
         *
         * @param $rec boolean  wether to load all subdirs recursivly,
         *                      i.e. calling ls on them !NOT IMPLEMENTED YET!
         * @return Dir
         */
        
    public function ls($rec=false)
        {
            try {
                
    $it = new DirectoryIterator($this->_name);
                foreach (
    $it as $node) {
                    
    $name $node->getFilename();
                    if (!
    $node->isDot() && $name[0] != ".") {
                        if (
    $node->isDir()
                            && 
                            !
    array_key_exists($name$this->_subdirs)
                        ) {
                            
    $this->_subdirs[$name]
                                = new 
    Dir($this->getPathname() . Dir::DIR_SEPARATOR $name$this$this->_root);
                        }
                        if (
    $node->isFile()
                            && 
                            !
    array_key_exists($name$this->_files)
                        ) {
                            
    $this->_files[$name] = new Dir_File($this$name);
                        }
                    }
                }
                
    $this->_state Dir::DIR_SCANNED;
            } catch (
    Exception $e) {
                
    $this->_state Dir::DIR_BLANK;
                throw 
    $e;
            }
            return 
    $this;
        }

        
    /**
         * indicates dir's state
         * @return boolean
         */
        
    public function isReady()
        {
            return (bool)
    $this->_state;
        }

    }
    Dateiklasse:
    PHP-Code:

    <?php
    /** represents a file 
     * @author jojo
     *
     */
    class Dir_File
    {    
        
    /**
         * parent directory
         * @var Dir
         */
        
    protected $_dir;
        
        
    /**
         * filename
         * @var string
         */
        
    protected $_name;

        
    /**
         * standard constructor
         *
         * @param Dir $dir parent directory
         * @param string $name full name
         * @return void
         */
        
    public function __construct(Dir $dir$name)
        {
            
    $this->_dir $dir;
            
    $this->_name $name;
        }
        
        
    /** magic get
         * @param $var
         * @return mixed
         */
        
    public function __get($var)
        {
            
    //all properties are protected
            
    $prop "_" $var;
            if (
    property_exists($this$prop)) {
                return 
    $this->$prop;
            }
            return 
    null;
        }

        
    /**
         * returns full name of file
         * beginning from specified root
         * @return string full filename
         */
        
    public function getPathname()
        {
            return 
    $this->_dir->getPathname() . Dir::DIR_SEPARATOR $this->_name;
        }
        
        
    /**
         * returns file-extension
         * @return string file-extension
         */
        
    public function getExtension()
        {
            return 
    substr($this->_namestrrpos($this->_name".")+1);
        }
    }
    Script:
    PHP-Code:

    <?php
    ini_set
    ('display_errors'1);
    require_once 
    './Dir.php';
    require_once 
    './Dir/File.php';
    require_once 
    './Dir/DirOutOfScopeException.php';
    require_once 
    './Dir/DirNotReadableException.php';
    define('DIR_ROOT'realpath(dirname(__FILE__)));   // root-folder from which to start reading.
                                                        // access to folders above will be forbidden
                                                        // Note: without trailing slash
                                        

    function getCtrlFiles(Dir $dir) {
        
    $ctrls = array();
        
    $dir $dir->ls();
        foreach (
    $dir->getFiles() as $file) {
            if (
    $file->getExtension() == "ctrl") {
                
    $ctrls[] = $file;
            }
        }
        
    $subdirs $dir->getSubdirs();
        if (!empty(
    $subdirs)) {
            foreach (
    $subdirs as $subdir) {
                
    $res getCtrlFiles($subdir);
                foreach (
    $res as $file) {
                    
    $ctrls[] = $file;
                }
            }
        }
        return 
    $ctrls;
    }

    echo 
    '<pre>';
    $readDir 'test';             // Folder to read (without slashes)
    $dir = new Dir($readDir);

    foreach (
    getCtrlFiles($dir) as $file) {
        echo 
    $file->getPathname() . "<br />";
    }
    zip im Anhang

    PS: Bandits Worte würde ich mir nochmal zu Herzen nehmen
    Angehängte Dateien Angehängte Dateien
    Geändert von jojo87 (05.08.2010 um 08:58 Uhr)

  7. #7
    Pion
    Gast

    Standard AW: Verzeichniss einlesen

    Sehr schön Jojo allerdings bezweifle ich das der TS mit dem Code viel anfangen kann bzw verstehen wird


    Ich hätte es mehr so aufgebaut:

    - Filemodel
    - Ordnermodel
    - Filemapper
    - Ordnermapper

  8. #8
    HTML Newbie
    Themenstarter

    Registriert seit
    28.07.2010
    Beiträge
    9
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Verzeichniss einlesen

    Ich weiss partou nicht warum "manche" immer eine derart wiederliche Arroganz und unfreundlichkeit an den Tag legen das einem echt übel wird..

    Anstatt dumme Sprüche zu reißen währe eine kurze knappe Antwort oder gar eine Lösung besser gewesen.

    Das Forum hier hat den Namen definitiv verfehlt !

    "forum-hilfe.de"

    Nein den NICHT Cracks ist es nicht gestattet zu fragen, da wird erwartet das mann alles weiß und der ÜBERCODER ist !
    Kommt mal von euren Hohen Rössern runter.

    ICH HABE FERTIG !
    Und WEG !

  9. #9
    Bandit
    Gast

    Standard AW: Verzeichniss einlesen

    Ähm, du verwechselst da was. Foren sind nicht dafür da, fertige Quellcodes zu liefern, da gibt es Hilfe zur Selbsthilfe.

    Ich sehe auch nicht, wo jemand arrogant und unfreundlich dahergekommen ist. Das siehst nur du so, weil du keine fertige Lösung bekommen hast.

    Ich sag' dir mal was: auf Leute mit deiner Einstellung kann jedes Forum verzichten!

  10. #10
    der/die Göttliche Avatar von jojo87
    Registriert seit
    23.03.2007
    Ort
    Leipzig
    Alter
    30
    Beiträge
    3.131
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Verzeichniss einlesen

    Zitat Zitat von SpiderZLS Beitrag anzeigen
    Ich weiss partou nicht warum "manche" immer eine derart wiederliche Arroganz und unfreundlichkeit an den Tag legen das einem echt übel wird..

    Anstatt dumme Sprüche zu reißen währe eine kurze knappe Antwort oder gar eine Lösung besser gewesen.

    Das Forum hier hat den Namen definitiv verfehlt !

    "forum-hilfe.de"

    Nein den NICHT Cracks ist es nicht gestattet zu fragen, da wird erwartet das mann alles weiß und der ÜBERCODER ist !
    Kommt mal von euren Hohen Rössern runter.

    ICH HABE FERTIG !
    Und WEG !
    Ey sach ma gehts noch?
    Ich setz dir hier ne mehr als fertige Lösung hin (obwohl das tatsächlich nicht die Intention dieses Forums ist) und du meckerst immer noch?
    Dann hau ab. Brauch keiner sowas.

Ähnliche Themen

  1. Buchstaben einlesen?
    Von Dodo im Forum Flash Forum
    Antworten: 1
    Letzter Beitrag: 17.05.2008, 21:19
  2. Zeile einlesen
    Von driver im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 0
    Letzter Beitrag: 08.02.2008, 10:57
  3. verzeichniss
    Von zofka im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 0
    Letzter Beitrag: 31.01.2007, 17:17
  4. verzeichniss
    Von zofka im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 0
    Letzter Beitrag: 28.01.2007, 14:31
  5. Relatives Verzeichniss
    Von Cruizer23 im Forum HTML & CSS Forum
    Antworten: 2
    Letzter Beitrag: 04.05.2004, 15:55

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •