schleife prüfen

Schon festgestellt? Dem Forum sind gerade alle Interaktionsmöglichkeiten genommen. :(

Mehr dazu unter: Abstimmung über das Forum

  • Hey!

    Ich mache aktuell folgendes:



    Ich würde gerne am Anfang prüfen, ob bei allen Ergebnissen der Status "online" ist.

    Wie mache ich das? Ich kann ja schlecht if ($status = "true") nehmen, es sind ja mehrere Ergebnisse.


    Vielen Dank schonmal.

  • Wenn der Status überall online ist, soll einfach "Alles online" ausgegeben werden, anderenfalls "Es läuft nicht alles so, wie es sollte"...

  • Nutze $result = $sth->fetchAll()

    und dann:

  • *smile* trickreich, aber ich würde es leicht lesbar vorziehen:

    Code
    1. $statement = $conn->prepare("SELECT * FROM `{$project}` WHERE entrytype = ?");
    2. $statement->execute(array('module'));
    3. $status = "online";
    4. while ($row = $statement->fetch()) {
    5. // Hier prüfe ich einen Status und lasse ihn ausgeben
    6. if (offline) {
    7. $status = "offline";
    8. }
    9. }
  • Die Lösung von cottton ist schon sehr gut. Ich würde nur nicht direkt vergleichen, sondern über array_diff() die offline Datensätze holen.

    Wenn die leer sind, weiß ich dass alle online sind, ansonsten habe ich alle die, die offline sind:

    PHP
    1. $allStatus = array_column($result, 'status');
    2. $allStatusOnline = array_filter($allStatus, function ($value) { return $value === 'online'; });
    3. $allStatusOffline = array_diff( $allStatus, $allStatusOnline );
    4. if ( empty($allStatusOffline) ) {
    5. echo 'Alle sind online';
    6. } else {
    7.     // hier separierte Ausgabe on- und offline
    8. }
  • So wie ich den Eingangsbeitrag verstanden habe, möchte er entweder Alle sind online ausgeben oder eben aufgelistet, wer on- und wer offline ist.

    Für ersteres würde eine Query reichen, aber nicht für letzteres, daher sollte er schon alle ziehen und in PHP entscheiden.

    Für zweiteres wird auch nur die status Spalte nicht ausreichen, aber das ist dem TE denke ich klar.