Stahl Florian: Neuanfang

So, habe nach langer zeit nochmal neu angefangen PHP zu lernen, bin aber total am anfang und habe ein kleines problem.

Was mache ich hier falsch:

<?php
$zahl = 2;
$ha = hart;

if ($zahl > 0)

{echo "hallo $ha";};

else {echo "hallo ich bin da";};

?>

Da kann mir doch sicher jemand weiterhelfen.

  1. Hallo Florian

    Schau dir mal diese Stelle an:

    $ha = hart;

    Fehlen da nicht die Anführungszeichen?

    gruss
    Andi

    1. Hallo Florian

      Schau dir mal diese Stelle an:

      $ha = hart;
      Fehlen da nicht die Anführungszeichen?

      meinst du $ha = "hart"; ?

      geht net, der feler liegt in zeile 18 sagt der browser

      das ist diese zeile:

      else {echo "hallo ich bin da";};

      1. Moin!

        else {echo "hallo ich bin da";};

        Auch hier gehört das zweite Semikolon nicht hin. Lies bitte auch hier: https://forum.selfhtml.org/?t=123052&m=792006

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
        1. Ok, dankeschön für die Hilfe.

  2. Lieber Stahl Florian,

    <?php
    $zahl = 2;
    $ha = hart;

    hier wird eine Konstante "hart" verstanden...

    if ($zahl > 0)

    {echo "hallo $ha";};

    das Semikolon beendet die komplette (meines Wissens) if-Geschichte, sodass das else nimmer greift

    else {echo "hallo ich bin da";};

    ?>

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. if ($zahl > 0)

      {echo "hallo $ha";};
      das Semikolon beendet die komplette (meines Wissens) if-Geschichte, sodass das else nimmer greift

      danke, dass war das problem

      1. Moin!

        if ($zahl > 0)

        {echo "hallo $ha";};
        das Semikolon beendet die komplette (meines Wissens) if-Geschichte, sodass das else nimmer greift

        Das tut es nicht.

        if (1==2)
        {
          # if Zweig, der aus mehreren Anweisungen besteht:
          echo "Eins ist gleich Zwei<br>";
          echo "(1==2)<br>";
        }
        else
        {
          # else Zweig, der aus mehreren Anweisungen besteht:
          echo "Eins ist nicht gleich Zwei<br>";
          echo "(1!=2)<br>";
        }

        danke, dass war das problem

        Nein, daran kann es nicht gelegen haben.

        $ha = hart; sollte zumindest zu einer Warnung führen, wenn es die Konstante hart nicht gibt. Übernommen wird dann tatsächlich der Name der inexistenten Konstante als String.

        Wenn nicht, dann solltest Du in der PHP die Warnungen einschalten:

        error_reporting  =  E_ALL

        Mit dieser für ein Programmier- oder Lernsystem brauchbaren Einstellung bekommts Du eine Fehlermeldung wie:

        Notice: Use of undefined constant hart - assumed 'hart' in test.php on line 12

        Auf "Produktionssystemen" sind diese Warnungen aus womöglich guten Gründen oft abgeschaltet: Der Benutzer soll nicht bemerken, dass der Programmierer nichts taugt.

        Warum taugt er nichts? Ein string wurde nicht als string übergeben. Wenn jetzt irgendjemand 100 Zeilen über Deinem $ha = hart;

        ein:  define ('hart', 'weich');

        einfügt, dann suchst Du tagelang, warum da "weich" ausgegeben wird.

        Hier also was zum spielen:

        <?php
        define ('hart', 'weich');
        $ha=hart;
        echo $ha;
        ?>

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
        1. Moin!

          danke, dass war das problem
          Nein, daran kann es nicht gelegen haben.

          Doch, Du hattest Recht, das zweite Semikolon (Das ich wegen des augenfälligen Fehlers übersehen habe...) verursachte ein zusätzliches Problem.

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix®

          --
          Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
        2. echo $begrüßung;

          das Semikolon beendet die komplette (meines Wissens) if-Geschichte, sodass das else nimmer greift

          Das tut es nicht.

          Es kommt drauf an:

          Variante 1:

          if (bedingung)
              eine_anweisung;
            else
              eine_andere_anweisung;

          Variante 2:

          if (bedingung)
            {
              mehrere;
              Anweisungen;
            }
            else {
              mehrere;
              andere;
              Anweisungen;
            }

          Man kann das auch mischen

          if (bedingung)
              eine_anweisung;
            else {
              mehrere;
              andere;
              Anweisungen;
            }

          Wenn nicht, dann solltest Du in der PHP die Warnungen einschalten:

          error_reporting  =  E_ALL

          Hier sollte einem Anfänger erklärt werden, dass diese Syntax nur in der php.ini funktioniert. Man kann das auch im Script setzen: error_reporting(E_ALL); und in der .htaccess (Beispiele im Handbuch)

          echo "$verabschiedung $name";

          1. Moin!

            Wenn nicht, dann solltest Du in der PHP die Warnungen einschalten:

            error_reporting  =  E_ALL

            Hier sollte einem Anfänger erklärt werden, dass diese Syntax nur in der php.ini funktioniert. Man kann das auch im Script setzen: error_reporting(E_ALL); und in der .htaccess (Beispiele im Handbuch)

            Das wollte ich wohl auch :(

            Scheinbar waren meine Fingerchen zu schnell als ich nach 'PHP' das '.ini' tippte. Dann macht der obige Satz auch Sinn. Ich danke Dir für die Klarstellung, ich hab den Typo bisher übersehen.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
          2. Moin!

            if (bedingung)
                eine_anweisung;
              else
                eine_andere_anweisung;

            Aus methodischen Gründen habe ich eine tiefe Abneigung gegen diese Schreibweise. (Wie übrigens gegen jede unnötige Verkürzung von Quelltexten.) Ich halte sie für Fehlerproduzierend. Deshalb schreibe ich immer die komplette Syntax mit den geschweiften Klammern. Manchmal ist der Kandidat ohne Schweif der Teufel.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development