Brotkruemel: PHP IF abfrage in HTML

Hi, ich wollte im HTML code eine if abfrage starten welche guckt ob Antwort_5 keine leere menge ist.
Falls das zutrifft soll er eine weitere Zeile in die Tabelle einfügen mit Antwort_5 und dem Radiobutton.

Hab schon mehrere sachen versucht, aber mit php habe ich noch recht wenig Erfahrung.
Das hier ist der letzte Versuch von mir:

<?php if($Antwort_5 != "") { ?>
        <htmlcode  >
         <tr>
          <td><label id="Label1">{*$Antwort_5*}</label></td>
   <td><input name="Radio1" type="radio" value="Antwort_5"></td>
         </tr>
        </htmlcode>
      <?php }  ?>

klappen tuts aber nicht, falls wer den richtigen Weg kennt würde ich ihn gerne hören.

mfg

kruemel

  1. Mahlzeit Brotkruemel,

    Hi, ich wollte im HTML code eine if abfrage starten welche guckt ob Antwort_5 keine leere menge ist.

    In HTML gibt es keine if-Abfragen. In PHP hingegen schon.

    Hab schon mehrere sachen versucht, aber mit php habe ich noch recht wenig Erfahrung.

    Das allein ist nicht schlimm. Ist Dir klar, wo und von wem PHP-Code ausgeführt wird (nämlich auf dem und durch den Webserver) und was (im Normalfall) als Ergebnis der PHP-Code-Verarbeitung generiert wird (nämlich HTML-Code) und an wen dieser dann ausgeliefert wird (nämlich den Browser)? Wenn nicht: hole diese absoluten Grundlagen nach!

    Das hier ist der letzte Versuch von mir:

    <?php if($Antwort_5 != "") { ?>

    ^                             ^
    Hier beginnt PHP-Code ... und hier endet er. Alles, was nicht explizit als PHP-Code ausgezeichnet ist (durch öffnende <?php- und schließende ?>-Tags), wird von PHP 1:1 genau so, wie es ist, an den Browser durchgereicht ...

    <htmlcode  >
             <tr>
              <td><label id="Label1">{*$Antwort_5*}</label></td>

    ... insbesondere also auch dieser Inhalt des Labels. Wenn Du also möchtest, dass dort irgendetwas "aus PHP" hingeschrieben wird, müsstest Du an dieser Stelle was machen?

    klappen tuts aber nicht, falls wer den richtigen Weg kennt würde ich ihn gerne hören.

    Das ist in einem textbasierten Forum schwer ... oder hast Du 'nen Screenreader installiert? ;-)

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Huhu,

    gibt es die Variable "Antwort_5" überhaupt? Wenn ja, wo kommt sie her? Wird sie weiter oben deklariert und mit nem Wert belegt oder kommt sie aus nem Formular, was übergeben wird? ..... oder oder oder ....

    So wie es aussieht, baust du ein Formular, welches nach dem Abschicken darauf überprüft wird, ob es vollständig ausgefüllt wurde.
    Wenn das so ist, dann ist an deinem Code so ziemlich alles falsch ....

    Grundsätzlich:
    Du brauchst ein http://de.selfhtml.org/html/formulare/definieren.htm@title=Formular, eventuell http://de.selfhtml.org/html/formulare/eingabe.htm@title=Eingabefelder und in deinem Beispiel auf jeden Fall <http://de.selfhtml.org/html/formulare/auswahl.htm@title=Radiobutton und ähnliches>.

    Die Eingabefelder, Radiobutton oder was auch immer haben Namen. Wird ein Formular abgeschickt, ergeben diese Namen die Schlüsselwörter des assoziativen Arrays, welches die übergebenen Werte speichert. Welches Array das ist, hängt von der Art der Übertragung ab. Es gibt POST und GET, wie du in Link 1 hoffentlich gelesen hast.

    In deinem Beispiel-Code steht
    <input name="Radio1" type="radio" value="Antwort_5">

    Angenommen, das Formular wird bei POST verschickt, sähe dieses anschließend wie folgt aus:
    $_POST("Radio1"=>"Antwort_5")

    Dein Versuch
    if($Antwort_5 != "")
    zu überprüfen schlägt also fehl, da es $Antwort_5 anscheinend nicht gibt.

    Und selbst wenn der Radiobutton "Antwort_5" heißen würde, dann müsste die Abfrage
    if($_POST['Antwort_5'] != "")
    lauten.

    Soviel nur mal kurz zum Verständnis ... in Wirklichkeit ist alles noch viel komplizierter ;-)

    mfg
    Knusperklumpen

    P.S. HTML kennt keine IF-Abfrage

    1. Und selbst wenn der Radiobutton "Antwort_5" heißen würde, dann müsste die Abfrage
      if($_POST['Antwort_5'] != "")
      lauten.

      Selbst wenn, würde ich zu einer Prüfung mittels isset() oder empty() raten - mit einem Leerstring vergleichen ist selten das was man wirklich will.

      1. so sieht es halt grad bei mir aus
        <?php if(!empty($Antwort_5)){
              ?>
               <tr>
                <td><label id="Label1">{*$Antwort_5*}</label></td>
                <td><input name="Radio1" type="radio" value="Antwort_5"></td>
               </tr>
        <?php }
              ?>

        oder auch mal so

        <?php if(!empty($Antwort_5))  {
        echo "<tr> <td><label id="Label1">{*$Antwort_5*}</label></td> <td><input name="Radio1" type="radio" value="Antwort_5"></td></tr>";
               }
        ?>

        Hab mich halt an irgendwelche ergoogelten beispiele gehalten aber funktionieren tut bis jetzt noch nichts ;/

        1. so sieht es halt grad bei mir aus
          <?php if(!empty($Antwort_5)){
                ?>
                 <tr>
                  <td><label id="Label1">{*$Antwort_5*}</label></td>
                  <td><input name="Radio1" type="radio" value="Antwort_5"></td>
                 </tr>
          <?php }
                ?>

          was in $Antwort_5 drinnen steht, wissen wir aber immer noch nicht.

          Hab mich halt an irgendwelche ergoogelten beispiele gehalten aber funktionieren tut bis jetzt noch nichts ;/

          var_dump($Antwort_5); wäre der erste Schritt um zu sehen, was daher kommt :)

          1. mhh
            ist das wirklich so umständlich? Ich will doch nur das er den HTML code nur dann bearbeitet wenn die IF abfrage im php code zutrifft. Dafür muss es doch eine Möglichkeit geben.
            Der Html code geht ja ohne den php schnick schnack so wie er soll ;/

            1. mhh
              ist das wirklich so umständlich?

              ja ;-)

            2. ist das wirklich so umständlich?

              Nein, es ist trivial - dir fehlen aber offensichtlich Grundlagen.

              Ich will doch nur das er den HTML code nur dann bearbeitet wenn die IF abfrage im php code zutrifft.

              Ohne zu wissen was in deiner Variable daherkommt oder wie sie zustande kommt, ist es ein Ding der Unmöglichkeit - wie sollen wir das wissen, wenn du es nichtmal selbst weißt?

              Dafür muss es doch eine Möglichkeit geben.

              ja:

              if(isset($foo)) {  
                echo 'bar';  
              }
              

              Wie das in deinem Kontext auszusehen hat, wissen wir immer nicht.

              Der Html code geht ja ohne den php schnick schnack so wie er soll ;/

              Das bezweiflet keiner - wir wissen aber immer noch nicht ob dein Code überhaupt durch den PHP-Interpreter ausführt wird, ob eine Template-Engine dazwischenhängt oder ob die Variable $Ausgabe_5 überhaupt das beinhaltet, was du glaubst.

              1. ist das wirklich so umständlich?

                Nein, es ist trivial - dir fehlen aber offensichtlich Grundlagen.

                Oh Gott ... ich habe auf die selbe Frage mit "ja" geantwortet ... das verwirrt mich ja jetzt selber ... hmm ...

                Aber nein ... du hast recht, dass es im Falle der eigentlichen Frage eine triviale Antwort gibt. Letztlich ist das gesamte Thema "Formularbehandlung" aber komplex und kompliziert.

                1. ist das wirklich so umständlich?

                  Nein, es ist trivial - dir fehlen aber offensichtlich Grundlagen.

                  Oh Gott ... ich habe auf die selbe Frage mit "ja" geantwortet ... das verwirrt mich ja jetzt selber ... hmm ...

                  Ich bezog mich lediglich auf die Verzweigung mittels if - diese ist trivial. Du hast die komplette Formularabwicklung gesehen, das ist natürlich nicht trivial :)

                  Aber nein ... du hast recht, dass es im Falle der eigentlichen Frage eine triviale Antwort gibt. Letztlich ist das gesamte Thema "Formularbehandlung" aber komplex und kompliziert.

                  Ja, so meinte ich das :)

              2. Nach stunden habe ich gemerkt das gar kein php code verarbeitet wird, egal was... dann habe ich gegoogelt und herrausgefunden das tpl php code ignoriert.
                Da ich sowas das erste mal mache will ich gar nicht wissen wieso tpl solche einschränkungen hat... naja mal sehen was jetzt getan werden muss.
                Jetzt muss ich das irgendwie im Controller machen ^^

                1. Das ist der Sinn von Template-Engines, dass im Template selbst nach Möglichkeit kein Code ausgeführt wird (oder werden kann) da die Engine (theoretisch) unabhängig von der Scriptsprache sein sollte.

                  Welches System dafür verantwortlich ist, verschweigst du aber bereits wieder geschickt - so wird dir niemand helfen können, ich wünsche dir viel Erfolg beim weiteren Stundenlangen googlen.

                  Ich klinke mich hier einfach mal aus.

                2. Mahlzeit Brotkruemel,

                  Nach stunden habe ich gemerkt das gar kein php code verarbeitet wird, egal was... dann habe ich gegoogelt und herrausgefunden das tpl php code ignoriert.

                  Was genau verstehst Du in diesem Zusammenhang unter "tpl"?

                  Jetzt muss ich das irgendwie im Controller machen ^^

                  Aha. Weitergehende Informationen: immer noch Fehlanzeige.

                  Ich halte es wie suit ... viel Spaß noch beim Weitersuchen.

                  Und falls Du wirklich einmal Hilfe brauchst, halte Dich bitte an die Tipps für Fragende und liefere wenigstens die absolut notwendigen Minimalinformationen - sonst hat's echt keinen Zweck.

                  MfG,
                  EKKi

                  --
                  sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        2. Mahlzeit Brotkruemel,

          so sieht es halt grad bei mir aus

          Das sieht immer noch sehr unstrukturiert aus. Wie suit bereits schrieb fehlen eigentlich immer noch haufenweise relevante Details zu Deiner Problembeschreibung, die Du uns bisher verschwiegen hast.

          <td><label id="Label1">{*$Antwort_5*}</label></td>

          Was z.B. bezweckst Du mit dieser Schreibweise?

          {*$Antwort_5}

          hat in HTML genau *keine* Funktionalität außer dass der Text genauso an den Browser durchgereicht wird. Was erwartest Du, dass passieren soll?

          Hab mich halt an irgendwelche ergoogelten beispiele gehalten aber funktionieren tut bis jetzt noch nichts ;/

          Einfach nur herumgoogeln und Code zusammenkopieren bringt in nahezu fast allen Fällen nichts. Grundlagen erlernen wäre vermutlich angesagt. Tu Dir selbst einen Gefallen und versuch's zumindest ...

          MfG,
          EKKi

          --
          sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
      2. Selbst wenn, würde ich zu einer Prüfung mittels isset() oder empty() raten - mit einem Leerstring vergleichen ist selten das was man wirklich will.

        Da gebe ich dir recht ... deswegen sagte ich ja, dass es in Wirklichkeit noch viel komplizierter ist ...

        An den Ersteller:
        _richtige_ Formularbehandlung ist tatsächlich eine der aufwendigsten und kompliziertesten Dinge, die einem beim normales Entwickeln in Web über den Weg laufen. Da kann man viel Falsch machen. Sei dir also bewusst, worauf du dich einlässt und dass du u.U. viel lesen und lernen musst, bevor ein Formular ordentlich und _sicher_ funktioniert ...