Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlermeldung bei else

Einklappen

Neue Werbung 2019

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

  • Fehlermeldung bei else

    Hallo,
    ärgere mich jezt schon seit über einer halben Stunde mit einem Problem herum.
    Die idee ist eigentlich, das mehrere Variabeln in einer Liste angegeben werden, wenn der wochentag der richtige ist und mindestens eine der Variabeln einen Inhalt hat. Das funktioniert soweit alles auch ganz gut, nur hab ich das Problem, das die Werte in einer Liste ausgegeben werden, und die html Aufzählungspunkte, welche per echo ins php script geschrieben sind, nicht verschwinden, auch wenn keine der Bedingungen erfüllt ist, die dafür sorgt, das da etwas stehen sollte. Ich habe schon versucht das ganze einfach zu umgehen , indem ich else {echo ""} setze. Aber dann bekomm ich die Fehlermeldung :
    Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\xampp\htdocs\index.php on line 63
    Hier mal das Script:
    PHP-Code:
    <?php
    include 'hausaufgabenvar.php';
    date_default_timezone_set('UTC');
    $time date("l");
        {
            echo 
    "<ul id> ";
            echo 
    "<li>";
            if (
    $geschichte1 != "Keine Hausaufgaben" ) { echo "Geschichte $geschichte1 ";};
            echo 
    "</li>";
            echo 
    "<li>";
            if (
    $biologie1 != "Keine Hausaufgaben" ) { echo "Biologie $biologie1 ";};
            echo 
    "</li>";
            echo 
    "</ul>";
      
        } ;
        else {echo 
    "";} ;
    ?>
    Danke schon mal für die Hilfe

  • #2
    Wie wäre es mit einem If statt einem else?

    Kommentar


    • #3
      Hab wohl beim kopieren ausversehen was rausgelöscht ...
      PHP-Code:
      <?php
      include 'hausaufgabenvar.php';
      date_default_timezone_set('UTC');
      $time date("l");

          if (
      $time == 'Sunday' and $geschichte1 or $biologie1 != "Keine Hausaufgaben"  );
          {
              echo 
      "<ul id> ";
              echo 
      "<li>";
              if (
      $geschichte1 != "Keine Hausaufgaben" ) { echo "Geschichte $geschichte1 ";};
              echo 
      "</li>";
              echo 
      "<li>";
              if (
      $biologie1 != "Keine Hausaufgaben" ) { echo "Biologie $biologie1 ";};
              echo 
      "</li>";
              echo 
      "</ul>";
          
            
          
          }
          else {echo 
      "";}
          
          
       


      ?>
      Das ist das gesammte script

      Kommentar


      • #4
        Warum Semikolon nach den geschweiften Klammern bei if(...) { ... } ? Gehört da nicht hin: http://php.net/manual/de/control-structures.if.php

        Der Grund warum die Punkte nicht verschwinden ist, dass sie außerhalb der untergeordneten IF-Bedingungen per echo eingefügt werden. Heißt, wenn if($time ...) zutrifft, gibt es immer 2 Listenpunkte, selbst wenn die Bedingungen für $geschichte1 bzw. $biologie1 nicht zutreffen. Wenn du die Listenpunkte erst in if($geschichte1...) etc. erzeugen lässt, erscheinen sie auch nur dann wenn nötig.

        Kommentar


        • #5
          Würde die Bedinung klammern und bei if sauber einrücken, dann ist das auch besser lesbar.

          Und:

          echo "" kannst dir sparen und nummerierte Variablen sind zumeinst ein Zeichen von falschem Design. Warum nutzt du zB nicht Arrays?

          Kommentar


          • #6
            Ansatz als Beispiel.. Den Sonntag darfst selbst noch reinbauen.

            https://eval.in/488458

            hausaufgabenvar.php:
            PHP-Code:
            $aHomework = [
              
            "Geschichte" => ["Übung 23""Übung 25"],
              
            "Biologie"   => ["Übung 12"]
            ]; 

            Auswertung:
            PHP-Code:
            //...

            if (!empty($aHomework)) {

              foreach(
            $aHomework as $fach => $aUebungen) {
                echo 
            "Fach: $fach\n";
                  foreach (
            $aUebungen as $uebung) {
                    echo 
            "  " $uebung."\n";
                  }
              }

            } else {
              echo 
            "Kein HÜ";



            Ausgabe:
            Code:
            Fach: Geschichte
              Übung 23
              Übung 25
            Fach: Biologie
              Übung 12
            LG

            Kommentar


            • #7
              Ich würde anstelle der zweiten foreach ein implode verwenden:
              PHP-Code:
              echo ' ' implodePHP_EOL$aUebungen ) . PHP_EOL 
              bringt jetzt keinen spürbar technischen Vorteil, aber ich finde Schleifen in Schleifen immer etwas unschön...

              Kommentar


              • #8
                Hallo, danke schon mal für die ganzen Antworten. Besonders der Post von Donevan3 hat mir sehr geholfen. Danke dafür. Hab es jetzt mit Bedingungen gelößt. Ist vielleicht nicht das optimum, hat sich aber angeboten und reicht für meine Zwecke völlig aus.
                Wenn ich mal die Muße habe schreib ich das ganze viellicht noch mal um.

                /Marius

                Kommentar

                Lädt...
                X