Wenn Order leer ist, dann... (PHP)?

4 Antworten

Guck dir mal diese Funktion an:

http://php.net/manual/de/function.scandir.php


$array = scandir(<dir>);

if(count($array) == 2) // 2 weil das array IMMER "." und ".." enthält
echo "Dir is empty";
else
//do stuff

Oder als funktion:

/**
* Scans if the dir is empty
*
* @param string $dir - Path to the Directory
* @return bool - true if dir is empty else false
*/
function isDirEmpty($dir) {
$array = scandir($dir);

if(count($array) == 2)
return true;

return false;
}

// Kann dann so wiederverwendet werden:
if(isDirEmpty('./images'))
echo 'Verzeichnis ist leer';
0

Dein Code füllt ein Array mit allen Dateien im angegebenen Verzeichnis, jetzt brauchst du nur noch prüfen wieviele bzw. ob Dateien im Array sind (oder dieser String oder was das sein soll, jedenfalls solltest du das als Arrays implementieren).

Die Aufgelisteten Überverzeichnise .. und . sowie die Datei "index.php" werden dabei berücksichtigt.

Wenn also das Array $liste leer ist hast du deine Bedingung für deine IF-Verzweigung ( nicht Schleife!! ).

Ps. Google ist dein Freund.


Prüfe wieviele DATEIEN vorhanden sind oder wieviele ORDNER. Logischerweise solltest du . Und .. nicht mitzählen

Mehrere while Schleifen ineinander

Hallo zusammen,

ich glaube, meine Frage ist ziemlich leicht zu beantworten, da sie, wahrscheinlich, einfach nur auf einem Denkfehler beruht^^. Dennoch sitze ich jetzt seit einiger Zeit daran und finde keine Lösungsmöglichkeit, auch mit dem Inkrement einer Variable, damit eine Schleife nur einmal ausgeführt wird, führt nicht zum gewünschten Ergebnis. Vielleicht kann mir hier ja jemand weiterhelfen, bzw. hatte das gleiche Problem auch mal ;-)

Erstmal zum Vorhaben: Ich hole aus einer MySQL Datenbank die Spalte "Namen", diese Spalte beinhaltet, wer hät's gedacht, einige Namen. Der zweite Teil ist, dass ich mit der php Funktion "opendir" ein Verzeichnis auf dem Server öffne und alle Verzeichnisse dahinter auslese. Sprich: Ich öffne mit php den Ordner Namen, dann listet er mir die Verzeichnisse (sind mit Namen betitelt) dahinter auf. Soweit so gut, einzelnd funktioniert das auch super. Das Problem kommt erst, wenn ich beides gleichzeitig mache, dazu später mehr... Am Ende möchte ich die Namen, die ich aus der Datenbank geholt habe, von den Verzeichnisnamen abziehen, dies erfolgt mit string replace.

Nun der Code:

    $abfrage = "SELECT Name FROM blabla ORDER BY ID ASC";
    $ergebnis = mysql_query($abfrage);  
    while($row = mysql_fetch_object($ergebnis))
    {   
    echo $row->Name;

    if ($handle = opendir('../../../Namen/')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            echo $file;
        }
    }
    closedir($handle);
    }
    }

In der ersten while Schleife hole ich den Inhalt aus der Datenbank und gebe ihn aus, passt, dann öffne ich das Verzeichnis "Namen" auf dem Server und lasse die Verzeichnisse dahinter auflisten. Als Seitenoutput bekomme ich jetzt allerdings den ersten Namen der Datenbank, dann die Verzeichnisse auf dem Server, dann wieder ein Name der Datenbank und die Verzeichnisse auf dem Server, dann wieder ein Name der Datenbank usw. Ist logisch, da ich ja beide while Schleifen ineinander verschachtelt habe, somit bekomme ich jedes Mal, wenn etwas aus der Datenbank geholt wird, den Serverinhalt mit. Das soll aber nicht sein...

Nun zu meiner Frage: Wie bekomme ich es hin, dass ich $row->Name (erste while) von $file (zweite while) abziehen kann, ohne dass mir hunderte Sachen (while Ergebnisse) ausgegeben werden? Irgendwie stehe ich auf dem Schlauch...

Über eine Antwort und eine kurze Erklärung würde ich mich wirklich sehr freuen!

Grüße, Hummel

...zur Frage

Wie kann ich mit CMS prüfen ob ein Ordner leer ist?

ich möchte gerne prüfen ob in einem Ordner Dateien oder Unterordner sind deswegen einmal mit /A:-d für Dateien und einmal /A:d für Ordner aber wenn ich die Batch datei starte zeigt der mir immer an das ein Unterordner vorhanden ist.

ich Bitte um Hilfe?

@echo on

Set "testdir=C:_Prog_Data\CMD\KI\Test2"

Set "testdir2=C:_Prog_Data\CMD\KI\Test2"

Set "status=nul"

Set "status2=nul"

if exist "%testdir%" dir /B /A:-d "%testdir%">nul 2>nul || Set status=leer

if exist "%testdir%" dir /B /A:-d "%testdir%">nul 2>nul && Set status=Nleer

if exist "%testdir2%" dir /B /A:d "%testdir2%">nul 2>nul || Set status2=leer

if exist "%testdir2%" dir /B /A:d "%testdir2%">nul 2>nul && Set status2=Nleer

echo Datei :%status%

echo Ordner:%status2%

If "%status%;%status2%" == "leer;leer" echo %testdir% ist leer

If %status% == Nleer echo %testdir% ist nicht leer

If %status2% == Nleer echo %testdir% ist nicht leer

pause

...zur Frage

Linux while schleife rückwärts durch datei

Wie kann ich eine Schleife rückwärts durch eine Txt laufen lassen? Es soll mit der letzten Zeile anfangen und oben aufhören.

...zur Frage

PHP: mit if-Bedingung neue Seite öffnen

Hi

habe bis jetzt:

        if($_POST["passwort"]=="XYXYXY")
            {
             include 'index.php';
            }
        else
            {
            echo '
            <form action="" method="post">
            <input type="Password" name="passwort">
            </form> ';
            }

nun möchte ich aber nicht include sondern, dass es die den link öffnet.

Vielen Dank für Ratschläge!

...zur Frage

Random PHP?

Ich weiß, dass ich zufällige Zahlen mit PHP generieren kann, ich brauche aber einen Random Text aus zahlen, Buchstaben, Großbuchstaben (vill. Sonderzeichen) bestehend aus 64 Zeichen der Generiert wird.

...zur Frage

Was möchtest Du wissen?