Ankündigung

Einklappen
Keine Ankündigung bisher.

Sagen wenn verz leer ist

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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?


  • #2
    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

    Kommentar


    • #3
      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';
      ?>

      Kommentar


      • #4
        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

        Kommentar


        • #5
          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."

          Kommentar


          • #6
            Jaaa! Er funktioniert!


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

            Vielen dank!!!

            Kommentar


            • #7
              Krass,

              da wird mir immer bewusst wie kompliziert PHP eigentlich ist .

              Kommentar


              • #8
                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

                Kommentar


                • #9
                  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

                  Kommentar

                  Lädt...
                  X