php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.10.2005, 14:30  
Gast
 
Beiträge: n/a
Standard Sagen wenn verz leer ist

Hallo!

Ich bin so langsam am verzweifeln! Ich bekomme es einfach nicht hin, das er mir sagt wenn das verzeichniss leer ist! Ich habe dazu folgendes Script geschrieben:

Code:
$verzeichnis=dir ("./dir/");

while ($eintrag=$verzeichnis->read())

if ($eintrag != "." && $eintrag != "..") {

echo "Moin";


} elseif(empty($eintrag) == TRUE) {

echo "Das Verzeichniss ist leer!";

}


$verzeichnis->close();
könnt ihr mir weiterhelfen?
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.10.2005, 14:47  
Gast
 
Beiträge: n/a
Standard

Hi,
ich hab das zwar nicht ausprobiert, aber so wäre ungefähr mein Lösungsweg, probier das mal:

PHP-Code:
$verzeichnis fopen("./dir/");
while(
$files readdir($verzeichnis))
{
    if(
$files != "." && $files != "..")
    {
        echo 
"Verzeichnis wurde gelesen";
    }

    if(empty(
$files))
    {
        echo 
"Verzeichnis ist leer...";
    }

Flo
 
Alt 17.10.2005, 14:50  
Gast
 
Beiträge: n/a
Standard

Die Vorgehensweise in ganzen Sätzen ausformulieren hilft.

PHP-Code:
<?php
$isEmpty 
true;
$verzeichnis=dir("./dir/");
while (
$eintrag=$verzeichnis->read()) {
    if (
$eintrag == '.' || $eintrag == '..')
        continue;
    else
    {
        
$isEmpty false;        
        break;
    }
}
$verzeichnis->close();

echo 
'Das Verzeichniss ist ', ($isEmpty) ? 'leer':'nicht leer';
?>
 
Alt 17.10.2005, 14:54  
Gast
 
Beiträge: n/a
Standard

Warning: fopen() expects at least 2 parameters, 1 given in /home/www/kunden/XXXXX/XXXX/XXXX/script.php on line 23

Warning: readdir(): supplied argument is not a valid Directory resource in /home/www/kunden/XXXXX/XXXX/XXXX/script.php on line 24

Fatal error: Call to a member function on a non-object in /home/www/kunden/XXXXX/XXXX/XXXX/script.php on line 38
 
Alt 17.10.2005, 14:56  
Benutzer
 
Registriert seit: 29.06.2004
Beiträge: 50
brain_overload
Standard

Code:
// Geht nicht, weil...
if ($eintrag != "." && $eintrag != "..") {
    // ...wenn ein Unterverzeichnis oder eine Datei
} elseif(empty($eintrag) == TRUE) { 
    // ...wenn $eintrag=="." oder $eintrag==".."  *und* empty($eintrag)
    // ==> wird also niemals wahr sein
}
Versuch's mal so:
Code:
$cnt_entries = 0;
$d = opendir($dir);
while( false !== ($entry=readdir($d)) )
{
	if ($entry != "." && $entry != "..")
	{
		echo "$entry
";
		$cnt_entries++;
	}
}
closedir($d);
if($cnt_entries==0) echo "Keine Dateien, keine Unterverzeichnisse gefunden."
brain_overload ist offline  
Alt 17.10.2005, 15:03  
Gast
 
Beiträge: n/a
Standard

Jaaa! Er funktioniert!


Ich danke dir! Ich glaube alleine wäre ich da nie drauf gekommen!

Vielen dank!!!
 
Alt 17.10.2005, 15:05  
Gast
 
Beiträge: n/a
Standard

Krass,

da wird mir immer bewusst wie kompliziert PHP eigentlich ist .
 
Alt 17.10.2005, 15:08  
Gast
 
Beiträge: n/a
Standard

Es geht ja auch bei Bedarf einfacher
PHP-Code:
<?php echo count(glob('./dir/*')) ? 'nicht leer':'leer'?>
Nur kann es bei der Version sein, dass unnötigerweise ein riesiges Feld angelegt wird.
Und selbst bei der Version von brain_overload wird mehr gemacht, als gefordert wurde
 
Alt 17.10.2005, 15:17  
Gast
 
Beiträge: n/a
Standard

Und nun das Ganze noch ordentlich verpackt:
PHP-Code:
<?
 
function isDirectoryEmpty($dir)
 {
     
$result true;
     
     if (
file_exists($dir) && is_dir($dir))
     {
        
$handle = @opendir($dir) or die ("$dir konnte nicht geöffnet werden");
        
        while (
$file readdir($handle))
        {
            if (
$file != "." && $file != "..")
            {
               
$result false;
               break;
            }
        }
        
        
closedir($handle);
     }
     else
       die (
"$dir ist ein ungültiges Verzeichnis");
     
     return 
$result;
 }
 
 
$empty isDirectoryEmpty(".");
 
 echo (
$empty) ? "Leer
"Nicht leer
"
;
?>
Gruß
phpfan
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Formular soll nicht leer verschickt werden hansstalder PHP Tipps 2008 21 23.04.2008 10:58
via "if" überprüfen ob feld leer ist Black-Devil PHP Tipps 2008 15 24.03.2008 14:55
session nach seitenwechsel leer... GELight PHP Tipps 2006 8 17.09.2006 15:17
$_FILES leer cycap PHP Tipps 2006 5 20.08.2006 14:35
übergebene Variable ist leer Ministry PHP Tipps 2006 16 25.03.2006 20:35
$_FILES leer? PHP Tipps 2007 3 13.12.2005 19:12
Uploadscript - tmp_name immer leer trotz Auswahl PHP Tipps 2005-2 5 25.10.2005 13:18
[Erledigt] Wie kann ich überprüfen ob eine variabel leer ist? PHP Tipps 2005-2 14 22.10.2005 20:56
abfrage ob spalte leer PHP-Fortgeschrittene 3 23.09.2005 15:49
$_FILES ist leer... PHP Tipps 2005-2 9 14.06.2005 21:37
rmdir --> permission denied (chmod 707, folder leer) PHP Tipps 2005 3 21.05.2005 12:54
[Erledigt] Rückgabewert einer Funktion bleibt manchmal leer PHP Tipps 2005 8 02.02.2005 18:15
Formulareingabe prüfen auf Zahl, bzw. Feld leer ist PHP Tipps 2004-2 2 02.12.2004 09:39
höchstes datum, wenn feld ist nicht leer Datenbanken 4 06.08.2004 12:03
[Erledigt] Verzeichnis leer??? PHP Tipps 2004 9 09.07.2004 13:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php readdir leer, ordner php wenn leer

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:12 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.