Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
16.01.2007, 19:33
chriss



PHP-Quellcode:<?php
$dir 
'../uploads/';
        if (
is_dir ($dir)) {
            if (
$dh opendir ($dir)) {
                while ((
$file readdir ($dh)) !== false) {
                    if (!
is_dir ($file) && $file != '.' && $file != '..') {
                        if (
in_array ($file$images)) {
                            
$selected ' selected="selected"';
                        } else {
                            
$selected '';
                        }
                        
$im_opt .= '<option value="' $file '"' $selected '>' $file '</option>' "\n";
                    }
                }
                
closedir($dh);
            }
        }
?>
Ich prüfe in Zeile 6 ob in der Variable $file ein Verzeichnis gespeichert ist. Aus irgendeinem Grund liefert er aber sowohl bei Verzeichnissen und auch bei Dateien ein TRUE zurück.

Jemand eine Idee? -> Ich will nur Dateien ausgegeben haben,

--


Dieser Beitrag wurde am 16.01.2007 um 19:34 von nox bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
16.01.2007, 21:05
chriss



PHP-Quellcode:<?php
!is_dir ($dir.$file)
?>

--

zum Seitenanfang zum Seitenende Profil || Suche
002
16.01.2007, 23:21
LeJean



PHP-Quellcode:<?php
$images 
= array();

$dir './dir/';
        if (
is_dir ($dir)) {
            if (
$dh opendir ($dir)) {
                while (
$file readdir ($dh)) {
                    if (!(
is_dir($dir.$file) || $file == '.' || $file == '..')) {
                        if (
in_array ($file$images)) {
                            
$selected ' selected="selected"';
                        } else {
                            
$selected '';
                        }
                        echo 
'<option value="' $file '"' $selected '>' $file '</option>' "\n";
                    }
                }
                
closedir($dh);
            }
        }
?>
(Drumherum ein <select> ... </select>, da du ja options ausgibst)

Das haut bei mir einwandfrei hin... Ich krieg die Files aus $dir gelistet ohne Verzeichnisse (inkl. '.' und '..').
Ich hab jetzt nur die Bedingungen in deinem if-Konstrukt ein bisschen umgedreht. und das '!== false' rausgenommen. Afaik prüft der '!=='-Operator auf Gleichheit in Wert und Typ.. Da ich nicht weiß wie 'false' als Typ gehandled wird, hab ichs zum testen rausgenommen.

Edit: ach ja, mein Verzeichnis /dir beinhaltet 3 Textfiles (eins.txt, zwei.txt, drei.txt) und ein weiteres Verzeichnis..

Vllt hilfts dir ja was .__.

-LeJean-

--


Dieser Beitrag wurde am 16.01.2007 um 23:25 von LeJean bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
17.01.2007, 20:47
K-Putt



@LeJean
Den !== Operatur kannst du nicht Weglassen, damit geht die Typprüfung verloren.
Das würde bedeuten, dass die Schleife abbrechen würde, wenn ein Ordner / eine Datei mit dem Namen "false" auftaucht.
Du musst daher mit !== prüfen, damit die Schleife auch wirklich nur abbricht, ein boolean false von readdir() zurückgegeben wird.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
004
17.01.2007, 21:01
theDon



Zitat:
K-Putt postete

Das würde bedeuten, dass die Schleife abbrechen würde, wenn ein Ordner / eine Datei mit dem Namen "false" auftaucht.

PHP hat zwar sehr merkwuerdige Typkonversionsregeln, aber wird da tatsaechlich ein Identifier in einen String konvertiert?

Edit: Kann ich nicht nachvollziehen, 'false' != false ist immer wahr.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before


Dieser Beitrag wurde am 17.01.2007 um 21:01 von theDon bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
005
17.01.2007, 21:31
K-Putt



Mein Fehler, sorry.

Richtig ist: Die Schleife wird logischerweise abgebrochen wenn ein Ordnername nach false konvertiert - also bei "0" als Ordnernamen.

Mit der Zeit gewöhnt man sich dran, und weiß wo man die === / !== Operatoren braucht.

--

Rambo Engineer @ Drippy's 2fort - finest TFC 1.5 || Bild Upload || The world's most advanced open source database

zum Seitenanfang zum Seitenende Profil || Suche
006
18.01.2007, 00:36
LeJean



jo, das ist wohl richtig. Aber ich hab ja auch nicht gesagt dass ichs ganz rauslassen würde. Habs nur rausgenommen, weil ich nicht genau wusste wie das evaluiert wird und ausschließen wollte dass das daran liegt ;)

Jean

--

zum Seitenanfang zum Seitenende Profil || Suche