Meowsalot: Parse error: syntax error, unexpected '}'

Hallo,

was stimmt denn hier nicht?

if ($wochentage[date("w", $zeit)] == "donnerstag") { 
           
  if ($arrayMitarbeiterLager['do_von'] != "") {
       echo $arrayMitarbeiterLager['do_von'] . " bis " . $arrayMitarbeiterLager['do_von'] . " Uhr";
  } else { "ganztägig"}
}

Oder kann ich innerhalb von einem IF kein weiteres IF nutzen? Alle {} sind meiner Meinung nach richtig gesetzt und geschlossen.

Bis bald!
Meowsalot (Bernd)

akzeptierte Antworten

  1. Tach!

    } else { "ganztägig"}

    Ein String allein als Anweisung ist ziemlich sinnlos, aber trotzdem muss eine Anweisung mit einem ; abgeschlossen werden, außer vor einem ?> und am Dateiende.

    dedlfix.

    1. Hallo dedlfix,

      Ein String allein als Anweisung ist ziemlich sinnlos, aber trotzdem muss eine Anweisung mit einem ; abgeschlossen werden, außer vor einem ?> und am Dateiende.

      wie würdest du es dann machen?

      Es wird an der vorletzten also innerhalb vom zweiten IF gemeckert.

      Bis bald!
      Meowsalot (Bernd)

      1. Tach!

        wie würdest du es dann machen?

        Die Frage ist "Was?". Du hast da jedenfalls "ganztägig" als Anweisung stehen, und die ist nicht abgeschlossen. Syntaktisch korrekt ist also else { "ganztägig"; }. Es bleibt aber weiterhin sinnlos. Du kannst den else-Zweig weglassen, denn so wie er jetzt dasteht macht der nichts. Wolltest du das das "ganztägig" vielleicht ausgeben und hast ein echo vergessen? Auch dann kommt ein Semikolon als Abschluss, so wie im if-Zweig.

        dedlfix.

        1. Hallo dedlfix,

          danke für den Hinweis und den Tipp. Es ist einfach zu warm :/ Klar wollte ich ein echo vor "ganztägig" haben, sonst macht es wirklich kein Sinn.

          So funktioniert es

          if ($wochentage[date("w", $zeit)] == "donnerstag") { 
           
           if ($arrayMitarbeiterLager['do_von'] != "") {
                  echo $arrayMitarbeiterLager['do_von'] . " bis " . $arrayMitarbeiterLager['do_von'] . " Uhr";
           } else { echo "ganztägig"; }
          
          }
          

          Und bevor jetzt eine Diskussion aufkommt, ich persönlich mag die Klammern lieber als die ohne. Ich habe damit einfach mehr Überblick.

          Bis bald!
          Meowsalot (Bernd)

          1. hallo

            if ($wochentage[date("w", $zeit)] == "donnerstag") {

            Warum eigentlich nicht

            if( date("w", $zeit) == 3 ){ ... }
            

            Wochentagsnamen werden in ihrer Grundform in Deutsch in der Regel eigentlich immer gross verwendet.

            1. Hallo beatovich,

              Warum eigentlich nicht

              if( date("w", $zeit) == 3 ){ ... }
              

              Hat dieses Vorteile? Oder ist dieses einfach nur kürzer in der Schreibweise?

              Wochentagsnamen werden in ihrer Grundform in Deutsch in der Regel eigentlich immer gross verwendet.

              ich weiß, deshalb wandel ich diese händisch wieder in klein um

              $wochentage = array("sonntag", "montag", "dienstag", "mittwoch", "donnerstag", "freitag", "samstag");
              

              Bis bald! Meowsalot (Bernd)

              1. Hallo Meowsalot,

                Wochentagsnamen werden in ihrer Grundform in Deutsch in der Regel eigentlich immer gross verwendet.

                ich weiß, deshalb wandel ich diese händisch wieder in klein um

                ähm... ja?

                Na ja egal, wenn es nur um die Ausgabe geht, mal so als Hinweis, kennst du text-transform? Erleichtert oft die Arbeit 😉

                Gruss
                Henry

            2. Hallo beatovich,

              Warum eigentlich nicht
              if( date("w", $zeit) == 3 ){ ... }

              ... weil der Donnerstag die 4 ist, und nicht die 3 😂

              Jedenfalls schreit das alles nach umständlicher Lösung, ein Tabellen-Lookup um den Wochentag namentlich abzufragen kann eigentlich nicht sinnvoll sein.

              Rolf

              --
              sumpsi - posui - clusi
              1. hallo

                Warum eigentlich nicht
                if( date("w", $zeit) == 3 ){ ... }

                ... weil der Donnerstag die 4 ist, und nicht die 3 😂

                Danke, wünsch dir einen schönen Wochenanfang 😉

          2. Hallo Bernd,

            dieser Code sieht aus, als wäre er Teil eines größeren Blocks voller Redundanz. Du fragst ab, ob es Donnerstag ist, und verwendest dann die Mitarbeiterlager-Einträge mit dem do_ Präfix. Hast Du Duplikate dieses Codes für die übrigen Wochentage? Und haben die auch diesen Fehler im "bis" Teil? Da steht nämlich do_von als Index 😂

            Wenn ja, bietet sich hier einiges an Optimierung an. Man könnte ein Array machen, das den PHP Wochentagsnummern das Präfix in deiner Mitarbeiterlager-Tabelle zuordnet. Folgender Code kann alle Wochentage behandeln; es könnte sich auch anbieten, ihn in eine Funktion auszulagern. In deinem Code muss die Funktion natürlich nicht direkt hinter dem Echo stehen, die gehört zusammen mit deinen anderen Helper-Funktionen an einen passenden Ort.

            echo zeitraumAusgabe($arrayMitarbeiterLager, $zeit);
            
            function zeitraumAusgabe($kalender, $zeit) {
               static $tagPrefixe = [ 'so', 'mo', 'di', 'mi', 'do', 'fr', 'sa' ];
               $prefix = $tagPrefixe[date('w', $zeit)];
               if ($kalender[$prefix.'_von'] != "") {
                  return $kalender[$prefix.'_von'] . " bis " . $kalender[$prefix.'_bis'] . " Uhr";
               } else {
                  return 'ganztägig';
               }
            }
            

            Das static vor $tagPrefixe sorgt dafür, dass die Variable nur einmal angelegt wird und nicht bei jedem Aufruf von zeitraumAusgabe.

            Rolf

            --
            sumpsi - posui - clusi
            1. Hallo Rolf,

              ohje, der Fehler mit von und bis ist mir noch gar nicht aufgefallen. Mir ist zwar aufgefallen dass die gleiche Uhrzeit ausgegeben wird, ich dachte es wurde falsch eingetragen. Ich sag ja hier unter dem Dach ist es einfach zu warm.

              Ja, du hast recht. Der Code wiederholt sich für jeden Tag, Montag - Sonntag. Danke auch für deine Funktion. Ich werde die direkt mal testen, da habe ich auf alle viel weniger Code was auch die Pflege der Seite angeht.

              Bis bald!
              Meowsalot (Bernd)

              1. Hallo Meowsalot,

                ich sitze im Keller, da geht's. Aber gleich muss ich an den Grill, da geht's bestimmt weniger 😂

                Rolf

                --
                sumpsi - posui - clusi
                1. Hallo Rolf,

                  ich sitze im Keller, da geht's. Aber gleich muss ich an den Grill, da geht's bestimmt weniger 😂

                  du kommst doch auch aus Köln richtig? Ich sitze im vierten Stock in Stammheim und es unerträglich warm. Wie wird das erst im Hochsommer.

                  Viel Spaß beim Grillen und dir einen schönen und Sonnigen Abend.

                  Bis bald!
                  Meowsalot (Bernd)