Vorschau der in einem Formular gemachten Angaben

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

  • Vorschau der in einem Formular gemachten Angaben

    Moin,
    habe ein kleines Problem.
    Ich habe ein Formular, mit 15 Forumlarfeldern, die alle im Array $d[] liegen.
    Nun habe ich einen Button, der das ganze sendet und das Formular hat als action="<?php print $PHP_SELF;?>", womit ich Code im Kopf der Datei aufrufe.
    Jetzt möchte ich einen zweiten Button neben "SENDEN" haben, der eine ganz einfache Vorschau erzeugt, bloß die Variablen $kd[] mit <br>.
    Aber irgendwie komme ich nicht an die Variablen ran, es gibt keine Werte.
    Ich habe den zweiten button schon generiert mit einer javascript-Anweisung zum Öffnen eines neuen Fensters.
    Was muß ich machen.
    Hier der Code des Formulars:

    <form action="<?php print $PHP_SELF;?>">
    <input type="hidden" name="aktion" value="kdSenden">
    <table border="1" bordercolor="#F0F0F0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" width="459" height="527">
    <tr>
    <td valign="top">
    <table border="0" cellpadding="3" align="left" width="455">
    <tr bgcolor="#0066FF">
    <td colspan="3"><font><b>Angaben, die wir ben&ouml;tigen</b></font></td>
    </tr>
    <tr>
    <td bgcolor="#0099FF" width="123"><font>Firma</font></td>
    <td nowrap bgcolor="#F0F0F0" width="181">
    <p><font>
    <input tabindex=1 type="text" name="kd[Firma]" value="<? print $kd[Firma];?>">
    </font></p>

    >>>>>>>>>>>So gehts weiter mit allen anderen Formularfeldern
    >>>>>>>>>>>DANN


    <input tabindex=11 type=submit name="kdSenden" value="Senden">
    </font></div>
    </td>
    <td nowrap bgcolor="#F0F0F0" width="181">&nbsp;</td>
    <td nowrap bgcolor="#0099FF" width="125">
    <input tabindex=12 type=button value="Vorschau" onClick="FensterAuf('formvorschau.php?$uebergabe','Formularvorschau','width=491,height=440')">
    </font></div>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    </form>


    Und hier der PHP-Code im Kopf der Formulardatei:

    <?php

    $nachricht = "";
    if (isset ($aktion) && $aktion=="kdSenden")
    {if ($kd[Anrede] == " ")
    $nachricht .= "Bitte geben Sie Ihre Anrede an.<br>\n";
    if (empty ($kd[Name]))
    $nachricht .= "Bitte geben Sie Ihren eigenen Namen an.<br>\n";
    if (empty ($kd[Ort]))
    $nachricht .= "Bitte geben Sie Ihren Firmensitz/Wohnort an.<br>\n";
    if (empty ($kd[PLZ]))
    $nachricht .= "Bitte geben Sie Ihre Postleitzahl an.<br>\n";
    if (empty ($kd[Telefon]))
    $nachricht .= "Bitte geben Sie Ihre Telefonnummer an.<br>\n";
    if (empty ($kd[EMail]) || substr_count ($kd[EMail], "@") == "0")
    $nachricht .= "Bitte geben Sie eine gültige E-Mail-Adresse an.<br>\n";
    if ($kd[Dienstleistung] == " ")
    $nachricht .= "Bitte geben Sie Ihr Interessengebiet an.<br>\n";
    if ($nachricht == "")
    {
    if ($kd[Anrede] == "Herr")
    {
    $anrede = "Sehr geehrter Herr $kd[Name],\n\n"; }
    else
    {
    $anrede = "Sehr geehrte Frau $kd[Name],\n\n"; }

    $ausgabe = str_out ($kd);

    mail ($kd[EMail], "XXX", "$XXX", "XXX");
    mail ($XXX, "XXX", "XXX", "XXX");
    Header ("Location: ../XXX/XXX.php");
    }

    }
    ?>


    Ich hatte schon eine Lösung mit javascript nachgedacht.
    Aber ich habe doch die Variablen in PHP und müßte doch eigentlich über eine "Abfrage-Zeichenkette" weiterkommen, oder?
    Vielleicht könnt Ihr mir helfen.
    Bis dann
    Mario
    Mario Heiß IT-Services

  • #2
    Hi,

    wenn ich das richtig verstehe bekommt dein Popup die Array Werte nicht. Bei solchen Sachen mache ich das immer wie folgt;

    onClick="new_win_2('vor.php?kd[Firma]=<? echo $kd["Firma"] ?>

    Gruß
    en-null-i-zett-drei

    Kommentar


    • #3
      Geht nicht

      Hi,
      vielen Dank für Deine Antwort.
      Leider funktioniert es nicht. Die Übergabe bleibt immer leer. Die Variable bekommt einfach keinen Wert.
      Hast Du/Ihr noch eine Idee?
      Gruß
      Mario Heiß IT-Services

      Kommentar


      • #4
        Nun, vieleicht sollstest du in der Printanweisung deines Input Feldes das ass. Array auch richtig schreiben.

        nicht>>> print $kd[Firma];
        sondern> print $kd["Firma"]; (Mit Gänsefüsschen)

        #INPUT FELD IM FORM
        ###################
        <input tabindex=1 type="text" name="kd[Firma]" value="<? print $kd["Firma"];?>">

        #POPUP AUFRUF
        #############
        <input tabindex=12 type=button value="Vorschau" onClick="new_win_2('vor.php?kd[Firma]=<? echo $kd["Firma"] ?>','Formularvorschau','width=491,height=440')">

        Klar ist das du "vor.php" und "new_win_2()" so ändern musst das sie auf deine Scripte zeigen.

        [Editiert von n0iz3 am 10-07-2001 um 13:10]
        en-null-i-zett-drei

        Kommentar


        • #5
          ... mit 15 Forumlarfeldern, die alle im Array $d[] liegen ...
          ...
          ... der eine ganz einfache Vorschau erzeugt, bloß die Variablen $kd[] mit <br>.
          Warum so umständlich?

          Erst mal ist klar: Wenn du deine Formulareingaben in ein Array $d schreibst, hast du hinterher ein Array $d und keins $kd.
          Zweitens ist es bei der Ausgabe doch piepegal, ob du das Array $kd ausgibst oder das Array $d ... benutz doch einfach $d weiterhin.

          Und wenn du partout das $kd benutzen willst, dann übernimm am Anfang die Werte aus $d: if (empty($kd)) $kd = $d;

          Übrigens: wenn du die Werte als Text ausgeben willst und nicht in Eingabefelder, dann besser so: echo htmlentities($f[Firma])."<br>\n";
          mein Sport: mein Frühstück: meine Arbeit:

          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

          Kommentar


          • #6
            Hi,

            eine andere Möglichkeit wäre das ganze mit Sessions zu machen, Ist eleganter, sicherer und nicht umständlich.

            Grüsse
            en-null-i-zett-drei

            Kommentar


            • #7
              GESCHAFFT!!!!!!!!!!!

              Hallöchen,

              ich danke Euch für Eure tatkräftige Unterstützung. Nun habe ich es geschafft.
              Das einzige, was noch nicht funktioniert hat, ist die Tatsache, daß ich momentan über URL die Variablen "einzeln" (was bedeutet z.B. Formularfeld=name="$kd[EMail]") übergebe.
              Si sieht das ganze aus:

              if (isset ($action) && $action=="Vorschau")
              {
              Header ("Location: xxxx.php?kd[Firma]=$kd[Firma]&kd[Anrede]=$kd[Anrede]&kd[Name]=$kd[Name]&kd[Ort]=$kd[Ort]&kd[PLZ]=$kd[PLZ]&kd[Telefon]=$kd[Telefon]&kd[EMail]=$kd[EMail]&kd[Internet]=$kd[Internet]&kd[Dienstleistung]=$kd[Dienstleistung]&kd[Bemerkung]=$kd[Bemerkung]");
              }

              Ich habe es noch nicht hinbekommen, das Array zu übergeben.
              Wenn ich die Daten absende, funktioniert die Übergabe des Arrays $kd.
              Allerdings habe ich hier noch eine Function eingebaut, die die einzelnen Elemente zusammenfügt.
              Brauche ich solch eine Funktion auch für die einfache Übergabe ohne große Weiterverarbeitung??
              Vielen Dank für Eure Hilfe.
              Mario Heiß IT-Services

              Kommentar


              • #8
                Hm,

                ja wird sehr lang mit 15 Werten. Veruche es doch mit einfach mal mit Sessions.

                Am Rande:
                schon wieder Gänsefüsschen vergessen

                ?kd[Firma]=$kd["Firma"]&kd[Anrede]=$kd["Anrede"]
                Gruß

                [Editiert von n0iz3 am 10-07-2001 um 14:13]
                en-null-i-zett-drei

                Kommentar


                • #9
                  JO!

                  Das ist eine gute Idee.
                  Ich werde es probieren, wenn ich es fertig habe.
                  Dankeschön!!!!
                  Grüße.
                  Mario Heiß IT-Services

                  Kommentar


                  • #10
                    Es scheint aber auch ohne Gänsefüßchen zu funktionieren.
                    Wie kan nich jetzt das komplette Array übertragen?
                    Danke nochmal für Deine Hilfe...
                    Mario Heiß IT-Services

                    Kommentar


                    • #11
                      geht das überhaupt, wenn du über Jskript ein popup aufrufst, dass dahin die formular felder mit übergeben werden?

                      ich sage NEIN, weil ein formular ja folgend definiert wird:

                      <form enctype="text/plain" action="xyz.php" method="post">

                      <input type=submit name=action value=save>
                      </form>

                      erst wenn der submit button gedrückt wird, werden auch alle daten des formulars mit an die angegebene Seite übermittelt...

                      also kann man nicht einfachmalso ein jskript popup öffnen und da die daten erwarten...

                      mein tip:
                      dein eingabeformular sieht so aus:

                      <form enctype="text/plain" action="verarbeiten.php" method="post">
                      <input type=submit name=action value=SENDEN>
                      <input type=submit name=action value=VORSCHAU>
                      </form>

                      dann machst du im verarbeitungsformular nur noch ne verzweiguung:

                      switch($action)
                      {
                      case "VORSCHAU":
                      {
                      (vorschauskript)
                      ..
                      break;
                      }
                      case "SENDEN":
                      {
                      (sendenkript)
                      ..
                      break;
                      }
                      }


                      alles klar...
                      (keine gewähr auf syntaktische Fehler!)

                      mfg andreas

                      Kommentar


                      • #12
                        Na klar...!

                        Jo,
                        ein bißchen JavaScript habe ich schon gebraucht.

                        So habe ich es gelöst.

                        <script language="JavaScript">
                        <!--
                        function Vorschau()
                        {
                        window.open('','Formularvorschau','width=491,height=440');
                        document.kdsenden.action.value='Vorschau';
                        document.kdsenden.target='Formularvorschau';
                        }

                        function Abschicken()
                        {
                        document.kdsenden.action.value='kdSenden';
                        document.kdsenden.target='_self';
                        }
                        //-->
                        </script>
                        <form name="kdsenden" action="<?php print $PHP_SELF;?>">
                        <input type="hidden" name="action" value="kdSenden">
                        <input tabindex=11 type=submit name="submit" value="Senden" onClick="Abschicken();">
                        <input tabindex=12 type=submit name="submit" value="Vorschau" onClick="Vorschau();">
                        </form>

                        Das Formular ist jetzt stark vereinfacht dargestellt.
                        Und dann frage ich in einer if-Abrage PHP-nah ab, welchen Wert denn jetzt die var $action hat.
                        Dann rufe ich über LOCATION: ... die einzelnen Seiten auf.
                        So gehts...
                        Gruß
                        Mario Heiß IT-Services

                        Kommentar


                        • #13
                          Hallo,

                          das man über JS keine Variablen übergeben kann ist Unsinn.

                          Die Übergabe erfolgt genau so wie in PHP über die Uri per POST oder GET.

                          Das geht auch. Das einzige was hier noch zu machen ist das ganze "eleganter" zu lösen.

                          Soweit ich weiss kann man ein Array nur auf diese Weise in ein neues Fenster übergeben, oder mit Sessions. Es gibt auch andere Möglichkeiten, wie z.B. abspeichern in eine DB, dass ist aber sehr "unelegant" und umständlich.

                          Ich bleib dabei... Sessions ist die Lösung

                          Gruß

                          Ah, ich seh grade es hat sich erledigt, war zu langsam
                          en-null-i-zett-drei

                          Kommentar


                          • #14
                            Gänsefüße oder Anführungszeichen sind allerhöchstens notwendig, wenn es sich beim Key um ein reserviertes Wort von php handelt. Ansonsten wird zwar ein Warning erzeugt, daß an der Stelle ein String vermutet wird; aber die sieht man nirgends und der Zeitverlust ist nicht meßbar.
                            mein Sport: mein Frühstück: meine Arbeit:

                            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                            Kommentar

                            Lädt...
                            X