netzlerin: if-Klausel in <form... URL mitgeben

Hallo alle

auf unserer Website gibt es themenspezifische Inhalte. Die Besucher sollen Ihre Kommentare zu diesen Themen abgeben können. Das php-Formular bzw. dessen Inhalt ist überall gleich. Einziger Unterschied: einmal bezieht sich das Formular auf Thema 1, einmal auf Thema 2. Anstatt zwei verschiedene Formulare zu bauen, hätte ich gerne zweimal dasselbe eingebaut. Der einzige Unterschied: füllt man das Formular auf Seite 1 (Thema 1) und schickt es ab, steht im Subject(oder auch im Text) 'Feedback zum Thema 1'. Schickt man es auf Seite 2 (Thema 2) ab, steht im Subject (oder im Text) 'Feedback zum Thema 2'. Da die Fragen überall die gleichen sind, muss man einfach gut erkennen können, von welcher Seite bzw. auf welches Thema sich die Antworten beziehen.

Es müsste doch möglich sein, im Formular eine if-else-Klausel einzubauen, die die URL, je nach Seite, mitschickt. Und diese URL entspricht dann dem Thema.

Kann mir jemand einen Tipp geben, wie das in php geht??

Vielen Dank.

  1. yo,

    Es müsste doch möglich sein, im Formular eine if-else-Klausel einzubauen, die die URL, je nach Seite, mitschickt. Und diese URL entspricht dann dem Thema.

    das geht recht einfach, nicht gerade mit einer if klausel, sondern mit einer variablen, die mit einem "hidden" input tag mitgeschickt wird. dort kann der wert entsprechend gesetzt werden und dann nach der auswertung entsprechend verzweigt werden.

    Ilja

    1. yo,

      Es müsste doch möglich sein, im Formular eine if-else-Klausel einzubauen, die die URL, je nach Seite, mitschickt. Und diese URL entspricht dann dem Thema.

      das geht recht einfach, nicht gerade mit einer if klausel, sondern mit einer variablen, die mit einem "hidden" input tag mitgeschickt wird. dort kann der wert entsprechend gesetzt werden und dann nach der auswertung entsprechend verzweigt werden.

      Ilja

      Danke für die Antwort, Ilja!

      Ich weiss nicht, ob es so einfach ist...: das Formular wird aus einem Modul erzeugt, d.h. alles, was im Formular steht, kommt aus ein- und demselben Modul. Dieses wird in eine html-Seite geladen. Der Inhalt (das php-Modul) ist also immer der gleiche. Deshalb kam ich auf die Idee mit der URL, weil die sich unterscheidet.

      Geht das wirklich ohne if-Klausel?

      Danke für einen Tipp.

      1. Hello,

        Geht das wirklich ohne if-Klausel?

        Ggf. musst Du ob_start() bemühen.
        Irgendwann einmal muss der Buchsatabensalat für das Formular ja generiert werden.
        Dann wird die von die eingefügte Variable abgefragt und als hidden-element mitgesandt.

        Das Setzen der Variable (z.B. eine globale) machst Du immer gleich beim Eintritt in die entsprechende Sequenz des Moduls. Etwas chirurgischen Eingriff wird es also erfordern.

        Harzliche Grüße vom Berg
        esst mehr http://www.harte-harzer.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Hello,

          Geht das wirklich ohne if-Klausel?

          Ggf. musst Du ob_start() bemühen.
          Irgendwann einmal muss der Buchsatabensalat für das Formular ja generiert werden.
          Dann wird die von die eingefügte Variable abgefragt und als hidden-element mitgesandt.

          Das Setzen der Variable (z.B. eine globale) machst Du immer gleich beim Eintritt in die entsprechende Sequenz des Moduls. Etwas chirurgischen Eingriff wird es also erfordern.

          Harzliche Grüße vom Berg
          esst mehr http://www.harte-harzer.de

          Tom

          Hallo Tom
          danke für die Antwort!

          Ok, hier die 'Skizze':

          die URL z.B. http://meinesite.de/showthread.php?threadid=20072

          Im Modul steht dann u.a.:

          <form action="Ihre_Meinung.php" method="post">
          //dann hier z.B. eine Auswahl
           <select name="select_Inhalt" class="form" value="<? echo $select_Inhalt;?>">
                <option selected>zu knapp</option>
                <option>zu ausf&uuml;rlich</option>
                <option>gerade recht</option>
           </select>

          <input type=submit name=Submit value="Senden">

          </form>

          und im 'Ihre_Meinung.php'

          <?php
          // eine Zeile
          Zum Inhalt        : $select_Inhalt
          ?>

          Wie mache ich hier den chirurgischen Eingriff?

          Danke für den Tipp!

          1. Hello,

            Ok, hier die 'Skizze':

            die URL z.B. http://meinesite.de/showthread.php?threadid=20072

            Im Modul steht dann u.a.:

            <form action="Ihre_Meinung.php" method="post">
            //dann hier z.B. eine Auswahl
            <select name="select_Inhalt" class="form" value="<? echo $select_Inhalt;?>">
                  <option selected>zu knapp</option>
                  <option>zu ausf&uuml;rlich</option>
                  <option>gerade recht</option>
            </select>

            <input type=submit name=Submit value="Senden">

            </form>

            und im 'Ihre_Meinung.php'

            <?php
            // eine Zeile
            Zum Inhalt        : $select_Inhalt
            ?>

            Wie mache ich hier den chirurgischen Eingriff?

            Wo soll denn der variante Inhalt erscheinen? In Ihre_Meinung.php oder im Formular?

            Screib doch einfach mal an die entsprechende Stelle

            <!--{FormVar01}-->

            Das fällt auf und dann schauen wir, wie man das zur rechten Zeit ersetzen kann.

            Harzliche Grüße vom Berg
            esst mehr http://www.harte-harzer.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Hello,

              Ok, hier die 'Skizze':

              die URL z.B. http://meinesite.de/showthread.php?threadid=20072

              Im Modul steht dann u.a.:

              <form action="Ihre_Meinung.php" method="post">
              //dann hier z.B. eine Auswahl
              <select name="select_Inhalt" class="form" value="<? echo $select_Inhalt;?>">
                    <option selected>zu knapp</option>
                    <option>zu ausf&uuml;rlich</option>
                    <option>gerade recht</option>
              </select>

              <input type=submit name=Submit value="Senden">

              </form>

              und im 'Ihre_Meinung.php'

              <?php
              // eine Zeile
              Zum Inhalt        : $select_Inhalt
              ?>

              Wie mache ich hier den chirurgischen Eingriff?

              Wo soll denn der variante Inhalt erscheinen? In Ihre_Meinung.php oder im Formular?

              Screib doch einfach mal an die entsprechende Stelle

              <!--{FormVar01}-->

              Das fällt auf und dann schauen wir, wie man das zur rechten Zeit ersetzen kann.

              Harzliche Grüße vom Berg
              esst mehr http://www.harte-harzer.de

              Tom

              Hallo Tom

              Der Inhalt des Formulars, den die Leute abschicken, ist IMMER gleich. Einzig ich, die die Mails lese, erhalte im Subject ein 'Feedbackformular zum Thema 1' oder 'Feedbackformular zum Thema 2' - das wäre mein Wunsch ;-)

              Das Script muss also bloss erkennen, von welcher Seite das Formular abgeschickt wurde diese 'Kennung' in das Mail schreiben, welches ich bekomme.

              Klingt doof, ich weiss, aber ich habe mehr als 30 Themen und zu jedem dieser Themen dasselbe Feedback-Formular. Ich möchte also nicht 30 Module erzeugen und 30 formaction-Scripts.

              Auf der Website gibt es einzig die URL, die bei jeder Seite verschieden ist. Kann man diese denn nicht irgendwie mitgeben, sobald man den Submit-Button klickt? Und dann die URL 1 in ein 'Thema 1'-Wort umwandeln bzw. die URL 2 in ein 'Thema 2' usw. Wenn dies dann noch in die Subject-Zeile des ankommenden Mails geschrieben wird, bin ich schon sehr happy :-)

              Danke für den Tipp!

              1. Hello,

                die URL z.B. http://meinesite.de/showthread.php?threadid=20072

                <form action="Ihre_Meinung.php" method="post">
                //dann hier z.B. eine Auswahl

                <select name="select_Inhalt" class="form" value="<? echo $select_Inhalt;?>">  <!-- ## ???? -->

                <option selected>zu knapp</option>
                      <option>zu ausf&uuml;rlich</option>
                      <option>gerade recht</option>
                </select>

                <input type="hidden" name="thema" value="<?php echo htmlentities($thema); ?>">

                <input type=submit name=Submit value="Senden">

                </form>

                nun musst Du nur schauen, wie Du $thema an das Modul übergibst und wo Du es noch vor dem Aufruf des Modules setzen kannst.

                Was soll das value-Attribut im <select> bewirken?

                Harzliche Grüße vom Berg
                esst mehr http://www.harte-harzer.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau
                1. Hello,

                  die URL z.B. http://meinesite.de/showthread.php?threadid=20072

                  <form action="Ihre_Meinung.php" method="post">
                  //dann hier z.B. eine Auswahl
                         <select name="select_Inhalt" class="form" value="<? echo $select_Inhalt;?>">  <!-- ## ???? -->
                        <option selected>zu knapp</option>
                        <option>zu ausf&uuml;rlich</option>
                        <option>gerade recht</option>
                  </select>

                  <input type="hidden" name="thema" value="<?php echo htmlentities($thema); ?>">

                  <input type=submit name=Submit value="Senden">

                  </form>

                  nun musst Du nur schauen, wie Du $thema an das Modul übergibst und wo Du es noch vor dem Aufruf des Modules setzen kannst.

                  Was soll das value-Attribut im <select> bewirken?

                  Harzliche Grüße vom Berg
                  esst mehr http://www.harte-harzer.de

                  Tom

                  Hallo Tom
                  danke für Deine Antwort!

                  <select name="select_Inhalt" value="<? echo $select_Inhalt;?>">

                  Das Value gibt den Wert der Auswahl aus, z.B. 'gerade recht' (siehe oben)

                  Die entsprechende Zeile in Ihre_Meinung.php heisst

                  Inhalt : $select_Inhalt

                  Und genau diese Zeile oben bekomme via Mail zugestellt.

                  Ok, verstehe ich das richtig: kann ich Deine Zeile oben also so ändern:

                  <input type="hidden" name="Thema" value="<?php echo htmlentities($Thema); ?>">

                  und eine Zeile in Ihre_Meinung.php einfügen
                  Inhalt : $Thema

                  Geht aber leider nicht. Das Mail gibt mir bloss die Zeile so
                  Inhalt :

                  zurück statt so:
                  Inhalt : http://meinesite.de/showthread.php?threadid=20072

                  Was mache ich falsch??

                  Danke für Deinen Tipp!

                  1. Hello,

                    <select name="select_Inhalt" class="form" value="<? echo $select_Inhalt;?>">  <!-- ## ???? -->

                    Was soll das value-Attribut im <select> bewirken?

                    Das Value gibt den Wert der Auswahl aus, z.B. 'gerade recht' (siehe oben)

                    Die entsprechende Zeile in Ihre_Meinung.php heisst

                    Inhalt : $select_Inhalt

                    zumindest in SelfHTML kann ich kein Attribut 'value' für select entdecken:
                    http://de.selfhtml.org/html/referenz/attribute.htm#select

                    Und ich denke nicht, dass ich hier die HTML-Spezifikation bemühen muss.

                    Harzliche Grüße vom Berg
                    esst mehr http://www.harte-harzer.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
                    1. Hello,

                      <select name="select_Inhalt" class="form" value="<? echo $select_Inhalt;?>">  <!-- ## ???? -->

                      Was soll das value-Attribut im <select> bewirken?

                      Das Value gibt den Wert der Auswahl aus, z.B. 'gerade recht' (siehe oben)

                      Die entsprechende Zeile in Ihre_Meinung.php heisst

                      Inhalt : $select_Inhalt

                      zumindest in SelfHTML kann ich kein Attribut 'value' für select entdecken:
                      http://de.selfhtml.org/html/referenz/attribute.htm#select

                      Und ich denke nicht, dass ich hier die HTML-Spezifikation bemühen muss.

                      Harzliche Grüße vom Berg
                      esst mehr http://www.harte-harzer.de

                      Tom

                      Hallo Tom
                      Danke für Deine Antwort. Ok, das kann natürlich sein, dass man dieses Attribut so nicht verwenden sollte. Das kann ich ja ändern...

                      Aber meine Anfrage bezieht sich eigentlich auch nicht darauf, wie ich die Inhalte der restlichen Formularfelder weitergeben kann, sondern wie ich die URL der entsprechenden Seite ans verschickte Formular mitgeben kann.

                      1. Auf Seite x.php habe ich ein simples Kontaktformular. Wenn ich dieses abschicke, bekomme ich ein Mail.
                      2. Auf Seite y.php habe ich GENAU DAS GLEICHE Kontaktformular. Wenn ich dieses abschckt, bekomme ich wieder ein Mail.

                      Das Einzige, was ich brauche, ist ein Hinweis auf dem Antwortmail, von welcher Seite das Formular verschickt wurde.

                      Ich vermute, man muss beim Submit-Button anseetzen. In etwa so: immer wenn der Submit-Button geklickt wird, soll zusätzlich die URL der Seite mitgegeben werden.

                      Wie mache ich das??

                      Danke für einen Tipp

                      1. Hallo

                        Aber meine Anfrage bezieht sich eigentlich auch nicht darauf, wie ich die Inhalte der restlichen Formularfelder weitergeben kann, sondern wie ich die URL der entsprechenden Seite ans verschickte Formular mitgeben kann.

                        Das Einzige, was ich brauche, ist ein Hinweis auf dem Antwortmail, von welcher Seite das Formular verschickt wurde.

                        Setze in das Formular ein <input type="hidden"> ein, dessen value mit <?php echo $_SERVER["PHP_SELF"]; ?> befüllt wird. Nehmen wir weiterhin an, das dieses <input type="hidden"> den Namen "url" trägt. Im auswertenden Skript kommt diese Variable als $_POST["url"] an. Dort musst du selbige nur noch auswerten.

                        Tschö, Auge

                        --
                        Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
                        (Victor Hugo)
                        Veranstaltungsdatenbank Vdb 0.1
                        1. Hallo Auge!

                          danke für Deine Antwort. Es klappt noch nicht ganz. Ich habs so gemacht. Im Formular (welches ein Modul darstellt) steht:

                          <input type="hidden" name="url"
                          value="<?php echo $_SERVER['PHP_SELF']; ?>">

                          Im auswertenden Formular hab ich eingetragen:
                          <?php
                          .... (andere Felder)
                          E-Mail                     : $email
                          Adresse                    : $_POST["url"]
                          ";

                          Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in ../kontaktformular.php on line 46 (..=ganze Adresse)

                          Wo stimmt was nicht? Ich bin aber sicher, die Lösung ist nahe ;-)

                          Danke für einen Tipp

                          Hallo

                          Aber meine Anfrage bezieht sich eigentlich auch nicht darauf, wie ich die Inhalte der restlichen Formularfelder weitergeben kann, sondern wie ich die URL der entsprechenden Seite ans verschickte Formular mitgeben kann.

                          Das Einzige, was ich brauche, ist ein Hinweis auf dem Antwortmail, von welcher Seite das Formular verschickt wurde.

                          Setze in das Formular ein <input type="hidden"> ein, dessen value mit <?php echo $_SERVER["PHP_SELF"]; ?> befüllt wird. Nehmen wir weiterhin an, das dieses <input type="hidden"> den Namen "url" trägt. Im auswertenden Skript kommt diese Variable als $_POST["url"] an. Dort musst du selbige nur noch auswerten.

                          Tschö, Auge

                          1. echo $begrüßung;

                            <?php
                            .... (andere Felder)
                            E-Mail                     : $email
                            Adresse                    : $_POST["url"]
                            ";

                            Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in ../kontaktformular.php on line 46 (..=ganze Adresse)

                            Mit dem abgebildeten Fragment kann ich deine Fehlermeldung nicht nachstellen. Aber wenn du ein Arrayelement innerhalb eines mit "" eingefassten Strings angeben willst, musst du das in {} setzen, damit der PHP-Parser weiß, dass das zusammengehört. Also:

                            $var = "... {$_POST['url']} ...";

                            Die '' oder "" um das url wegzulassen ist zwar unter Ignorieren einer Notice möglich aber nicht empfehlenswert.

                            echo "$verabschiedung $name";

                            1. Hallo - danke für die Antwort!

                              Ich habs so versucht:

                              <input type="hidden" name="url" value="<?php echo $_SERVER['PHP_SELF']; ?>">

                              und im kontaktformular.php

                              <?php
                              E-Mail                     : $email
                              Adresse                    : {$_POST["url"]}
                              ";

                              Tatsächlich wird jetzt (juhuii!) eine Zeile im Mail ausgegeben. Die Adresse stimmt noch nicht, aber jetzt bedarf es vermutlich noch ne 'Anleitung' zur Datenbankabfrage. Im Moment gibt es die Adresse der Einstiegsseite an.... > /cms/front_content.php Jetzt brauche ich noch die idcatart=xxx

                              echo $begrüßung;

                              <?php
                              .... (andere Felder)
                              E-Mail                     : $email
                              Adresse                    : $_POST["url"]
                              ";

                              Parse error: parse error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in ../kontaktformular.php on line 46 (..=ganze Adresse)

                              Mit dem abgebildeten Fragment kann ich deine Fehlermeldung nicht nachstellen. Aber wenn du ein Arrayelement innerhalb eines mit "" eingefassten Strings angeben willst, musst du das in {} setzen, damit der PHP-Parser weiß, dass das zusammengehört. Also:

                              $var = "... {$_POST['url']} ...";

                              Die '' oder "" um das url wegzulassen ist zwar unter Ignorieren einer Notice möglich aber nicht empfehlenswert.

                              echo "$verabschiedung $name";

                          2. Hallo

                            <?php

                            .... (andere Felder)
                            E-Mail                     : $email
                            Adresse                    : $_POST["url"]
                            ";

                            
                            >   
                            > Parse error: parse error, unexpected '\"', expecting T\_STRING or T\_VARIABLE or T\_NUM\_STRING in ../kontaktformular.php on line 46 (..=ganze Adresse)  
                            >   
                            > Wo stimmt was nicht?  
                              
                            ~~~php
                            <?php  
                            // .... (andere Felder)  
                            E-Mail                     : $email  
                            Adresse                    : ".$_POST["url"]."  
                            // weitere Felder(?)  
                            ";
                            

                            Nimm den Variablennamen aus dem normalen Textfluss (Wenn ich das mal so formulieren darf.).

                            Tschö, Auge

                            --
                            Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
                            (Victor Hugo)
                            Veranstaltungsdatenbank Vdb 0.1