eMatt: Formulardaten für Umfrage in Cookie zwischenspeichern

Hallo allerseits!

Habe das Problem, dass ich eine Umfrage mit HTML-Formularen machen und dabei ist mein eigentliches Problem, dass es wie gesagt mehrere Formulare sein sollen und dass ich es im Intranet publizieren muss und deswegen keinen externen Formulardienstleister in Anspruch nehmen kann. Der interne bietet allerdings nicht die Möglichkeit an Daten, die auf einem Forumlar gemacht wurden, in eine Variable zu speichern und erst mit einem weiteren Formular gesamt zu verschicken.
Deswegen versuche ich jetzt die Daten in einem Cookie zu speichern und in jedem Formular auf dieses Cookie zuzugreifen und dann auf dem letzten Formular alles gesamt zu verschicken. Aber irgendwie klappt das nicht so ganz - bin JavaScript-Anfänger.
Da die Formulare wie gesagt im Intranet publiziert werden hier der Code von 2 Formularen mit denen ich das ganze gerade teste. (Dazwischen ist noch eine Seite, auf der aber keine Daten eingegeben werden.)

1. Formular:
<html>

<head>
 <meta http-equiv="Content-Type">
 <link rel="stylesheet" type="text/css" href="Stylesheet.css" media=all>
 <title>Umfrage zur Standardisierung</title>
 <script type="text/javascript">
  <!-- JavaScript vor nicht JavaScript-fähigen Browsern verstecken
  var EvtlAnderes
  function BeiClick() {
   AnderesAktiviert();
   EvtlAnderesBelegen();
   Cookie();
  }
  function AnderesAktiviert() {
   if (document.Formular.KenntUnsVon[0].checked==false && document.Formular.KenntUnsVon[1].checked==false &&
      document.Formular.KenntUnsVon[2].checked==false && document.Formular.KenntUnsVon[3].checked==false &&
      document.Formular.KenntUnsVon[4].checked==false && document.Formular.KenntUnsVon[5].checked==false &&
      document.Formular.KenntUnsVon[6].checked==false) {
      window.alert("Sie müssen etwas auswählen um mit der Umfrage fortfahren zu können!")}
     else {
    if (document.Formular.anderesEingabe.value != "" && document.Formular.KenntUnsVon[6].checked == false) {
     window.alert("Sie dürfen nichts in das Textfeld eingeben, wenn Sie nicht auch den "
     + "Radiobutton 'Anderes' ausgewählt haben!");}
    else {location.href="http://www.intranet.undsoweiter'";}
   }
  }
  function EvtlAnderesBelegen() {
   if (document.Formular.KenntUnsVon[6].checked == true) {EvtlAnderes = document.Formular.anderesEingabe.value}
   else {EvtlAnderes = ""}
  }
  function Cookie() {
  // Die Infos dieses Formulars als Cookie zwischenspeichern (Im letzten Formular werden sie alle zusammen versendet.) //
   if (liesCookie('CookieESN1Umfrage') == null) {
    var expdate = new Date();
    expdate.setTime(expdate.getTime() + (1000 * 60 * 60 * 24 * 80));
    setzeCookie('CookieESN1Umfrage', expdate, document.Formular.KenntUnsVon.value, EvtlAnderes);}
   else if (liesCookie('CookieESN1Umfrage') != null) {
    VorhandenesCookieLoeschen();
    var expdate = new Date();
    expdate.setTime(expdate.getTime() + (1000 * 60 * 60 * 24 * 80));
    setzeCookie('CookieESN1Umfrage', expdate, ", Kennt uns von = ", document.Formular.KenntUnsVon.value, EvtlAnderes)};
  }
  function liesCookieWert (offset) {
   var endstr = document.cookie.indexOf (";", offset)
   if (endstr == -1) {
    endstr = document.cookie.length; }
   return unescape(document.cookie.substring(offset, endstr));
  }
  function liesCookie (CookieName) {
   var arg = CookieName + "=";
   var argLaenge = arg.length;
   var CookieLaenge = document.cookie.length;
   var i = 0;
   while (i < CookieLaenge) {
    var j = i + argLaenge;
    if (document.cookie.substring(i,j) == arg) {return liesCookieWert(j)};
    if (i == 0) {break};
   }
   return null;
  }
  function setzeCookie(name, wert1, wert2, wert3, wert4) {
   var argv = setzeCookie.arguments;
   var argc = setzeCookie.arguments.length;
   var expires = (argc > 2) ? argv[2] : null;
   var path = (argc > 3) ? argv[3] : null;
   //var domain = (argc > 4) ? argv[4] : null;
   var domain = "www.intranet.bosch.com";
   var secure = (argc > 5) ? argv[5] : null;
   document.cookie = name + "=" + escape(wert1 + ", " + wert2 + ", " + wert3 + ", " + wert4) +
    ((expires == null) ? "" : ("; expires = " +
    expires.toTimeString())) + ((path == null) ? "" : ("; path=" + path)) +
    ((domain == null) ? "" : ("; domain = " + domain)) + ((secure == true) ? "; secure" : "");*/
  }
  function VorhandenesCookieLoeschen() {
   var abgelaufen = new Date();
   abgelaufen.setTime(abgelaufen.getTime() - 1000000);
   var CookieWert = getCookie('CookieESN1Umfrage');
   document.cookie = 'CookieESN1Umfrage' + "=" + CookieWert + "expires=" + abgelaufen.toTimeString();
  }
  //-->
 </script>
</head>

<body>
 <h1>
  Umfrage zur Standardisierung
 </h1>
 <br>
 <br>
 <form name="Formular" method="post">
  <table align=center>
   <tr>
    <td></td>
    <td>
     Woher kennen Sie ESN1?
    </td>
    <td></td>
   </tr>
   <tr>
    <td width=25%>
     &nbsp;
    </td>
    <td class="Auflistung" width=50%>
     <br>
     <input type="radio" name="KenntUnsVon" value="PPL"> Von der PPL<br>
     <input type="radio" name="KenntUnsVon" value="Handbuch"> Durch das EE-Handbuch<br>
     <input type="radio" name="KenntUnsVon" value="Website"> Von der Website<br>
     <input type="radio" name="KenntUnsVon" value="Responsibility-Matrix"> Durch die Responsibility-Matrix<br>
     <input type="radio" name="KenntUnsVon" value="Newsletter"> Durch den Newsletter<br>
     <input type="radio" name="KenntUnsVon" value="New-Parts-Matrix"> New-Parts-Matrix-Abfrage<br>
     <input type="radio" name="KenntUnsVon" value="Anderes"> Anderes: <input name="anderesEingabe"
      type="text" style="font-size:11pt;color:#990000;width:50mm;height:7mm;" maxlength="50"><br>
    </td>
    <td width=25%>
     &nbsp;
    </td>
   </tr>
  </table>
  <br>
  <br>
   <p class="pButton" >
    <input class="Button" type="button" value=" Zurück "
    onclick="location.href='http://www.intranet.undsoweiter'">
    <input class="Button" type="button" value=" Weiter " onclick="BeiClick()">
   </p>
 </form>
</body>

</html>

Das 3. Formular folgt in der 1. Antwort auf dieses Posting, da es sonst zu lang würde.

Wär echt cool, wenn mir jemand helfen könnte! Viele Dank schon mal.

Gruß,
eMatt

  1. Hier das 3. Formular:

    <html>

    <head>
    <meta http-equiv="Content-Type">
    <link rel="stylesheet" href="Stylesheet.css" type="text/css" media="all">
    <title>Umfrage zur Standardisierung</title>
     <script type="text/javascript">
      //<!-- JavaScript vor nicht JavaScript-fähigen Browsern verstecken
      var GlaubtWirMachen;
      function BeiClick() {
       WerteInVariablenSchreiben();
       Cookie();
       RichtigOderFalsch();
      }
      function RichtigOderFalsch() {
         if (document.Formular.GlaubtWirMachen[2].checked==false && document.Formular.GlaubtWirMachen[4].checked==false &&
            document.Formular.GlaubtWirMachen[7].checked==false && document.Formular.GlaubtWirMachen[0].checked==false &&
            document.Formular.GlaubtWirMachen[1].checked==false && document.Formular.GlaubtWirMachen[3].checked==false &&
            document.Formular.GlaubtWirMachen[5].checked==false && document.Formular.GlaubtWirMachen[6].checked==false) {
           window.alert("Sie müssen etwas auswählen um mit der Umfrage fortfahren zu können!")}
         else {
          if (document.Formular.GlaubtWirMachen[2].checked==true && document.Formular.GlaubtWirMachen[4].checked==true &&
            document.Formular.GlaubtWirMachen[7].checked==true && document.Formular.GlaubtWirMachen[0].checked==false &&
            document.Formular.GlaubtWirMachen[1].checked==false && document.Formular.GlaubtWirMachen[3].checked==false &&
            document.Formular.GlaubtWirMachen[5].checked==false && document.Formular.GlaubtWirMachen[6].checked==false) {
            location.href="http://www.intranet.undsoweiter";}
          else {location.href="http://www.intranet.undsoweiter";}
         }
      }
      function WerteInVariablenSchreiben() {
       GlaubtWirMachen = new Array(6);
       GlaubtWirMachen[0] = "";
       GlaubtWirMachen[1] = "";
       GlaubtWirMachen[2] = "";
       GlaubtWirMachen[3] = "";
       GlaubtWirMachen[4] = "";
       GlaubtWirMachen[5] = "";
       GlaubtWirMachen[6] = "";
       if(document.Formular.GlaubtWirMachen[0].checked){GlaubtWirMachen[0] = document.Formular.GlaubtWirMachen[0].value};
       if(document.Formular.GlaubtWirMachen[1].checked){GlaubtWirMachen[1] = document.Formular.GlaubtWirMachen[1].value};
       if(document.Formular.GlaubtWirMachen[2].checked){GlaubtWirMachen[2] = document.Formular.GlaubtWirMachen[2].value};
       if(document.Formular.GlaubtWirMachen[3].checked){GlaubtWirMachen[3] = document.Formular.GlaubtWirMachen[3].value};
       if(document.Formular.GlaubtWirMachen[4].checked){GlaubtWirMachen[4] = document.Formular.GlaubtWirMachen[4].value};
       if(document.Formular.GlaubtWirMachen[5].checked){GlaubtWirMachen[5] = document.Formular.GlaubtWirMachen[5].value};
       if(document.Formular.GlaubtWirMachen[6].checked){GlaubtWirMachen[6] = document.Formular.GlaubtWirMachen[6].value};
       for (var i=0; i<=6; i=i+1) {
        if (GlaubtWirMachen[i] != "") {GlaubtWirMachen = GlaubtWirMachen  + ", " + GlaubtWirMachen[i]}
       };
      }
      function Cookie() {
      // Die Infos dieses Formulars als Cookie zwischenspeichern (Im letzten Formular werden sie alle zusammen versendet.) //
       if (liesCookie('CookieESN1Umfrage') == null) {
        window.alert("Es konnten noch keine Informationen zwischengespeichert werden, weil wahrscheinlich die " +
        "Cookie-Einstellungen Ihres Browsers zu 'streng' eingestellt sind. Da Sie dies jedoch wahrscheinlich " +
        "nicht selbst einstellen dürfen, bzw. können (deaktiviert) sollten Sie Ihren IV-Beauftragten um Hilfe bitten.");}
       else if (liesCookie('CookieESN1Umfrage') != null) {
        var CookieWert = getCookie('CookieESN1Umfrage');
        setzeCookie('CookieESN1Umfrage', CookieWert, ", GlaubtWirMachen = ", GlaubtWirMachen);}
      }
      function liesCookieWert (offset) {
       var endstr = document.cookie.indexOf (";", offset);
       if (endstr == -1) {
        endstr = document.cookie.length; }
       return unescape(document.cookie.substring(offset, endstr));
      }
      function liesCookie (CookieName) {
       var arg = CookieName + "=";
       var argLaenge = arg.length;
       var CookieLaenge = document.cookie.length;
       var i = 0;
       while (i < CookieLaenge) {
        var j = i + argLaenge;
        if (document.cookie.substring(i,j) == arg) {return liesCookieWert(j)};
        if (i == 0) {break};
       }
       return null;
      }
      function setzeCookie(name, wert1, wert2, wert3, wert4) {
       var argv = setzeCookie.arguments;
       var argc = setzeCookie.arguments.length;
       var expires = (argc > 2) ? argv[2] : null;
       var path = (argc > 3) ? argv[3] : null;
       var domain = (argc > 4) ? argv[4] : null;
       var secure = (argc > 5) ? argv[5] : null;
       document.cookie = name + "=" + escape(wert1 + ", " + wert2 + ", " + wert3 + ", " + wert4) +
        ((expires == null) ? "" : ("; expires = " +
        expires.toTimeString())) + ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain = " + domain)) + ((secure == true) ? "; secure" : "");
      }
      //-->
     </script>
    </head>

    <body>
     <h1>
      Umfrage zur Standardisierung
     </h1>
     <br>
     <form name="Formular" action="http://www.intranet.undsoweiter" method="post"
     onsubmit="return BeiClick();">
      <input type="hidden" name="to" value="meineeMailAddy">
      <input type="hidden" name="from">
      <input type="hidden" name="subject" value="Umfrage zu ESN1">
      <input type="hidden" name="okmessageurl" value="http://www.intranet.undsoweiter">
      <input type="hidden" name="showfieldname" value="1">
      <input type="hidden" name="delimiter" value="crlf">
      <table>
       <tr>
        <td>
         &nbsp;
        </td>
        <td>
         Was, glauben Sie, machen wir?
        </td>
        <td>
         &nbsp;
        </td>
       </tr>
       <tr>
        <td width=15%>
         &nbsp;
        </td>
        <td width=70%>
         <table>
         <tbody class="TabelleObenAusrichten">
          <tr class="TabelleObenAusrichten">
           <td>
            <br>
            <input type="checkbox" name="GlaubtWirMachen" value="Blablabla"><br>
           </td>
           <td class="TabellePage5">
            <br>Blablabla
            <br>
           </td>
          </tr>
          <tr class="TabelleObenAusrichten">
           <td>
            <input type="checkbox" name="GlaubtWirMachen" value="CorporateDesign"><br>
           </td>
           <td class="TabellePage5">
            Das Corporate Design<br>
           </td>
          </tr>
          <tr class="TabelleObenAusrichten">
           <td>
            <input type="checkbox" name="GlaubtWirMachen" value="PPMundGleichteilekonzept"><br>
           </td>
           <td class="TabellePage5">
            &Uuml;berwachung neu eingeführter Teile bzgl. der PPM und des Gleichteilekonzepts<br>
           </td>
          </tr>
          <tr class="TabelleObenAusrichten">
           <td>
            <input type="checkbox" name="GlaubtWirMachen" value="Dokumentation"><br>
           </td>
           <td class="TabellePage5">
            Dokumentation der Fortschreitung der Standardisierung<br>
           </td>
          </tr>
          <tr valign="top" class="TabelleObenAusrichten">
           <td>
            <input type="checkbox" name="GlaubtWirMachen" value="bevorzugendeTeile">
           </td>
           <td class="TabellePage5">
            Abstimmen und Umsetzen, welche Teile zu bevorzugende Teile sind<br>
           </td>
          </tr>
          <tr class="TabelleObenAusrichten">
           <td>
            <input type="checkbox" name="GlaubtWirMachen" value="Arbeitsplätze">
           </td>
           <td class="TabellePage5">
            Vereinheitlichung der Arbeitspl&auml;tze und B&uuml;ror&auml;ume<br>
           </td>
          </tr>
          <tr class="TabelleObenAusrichten">
           <td>
            <input type="checkbox" name="GlaubtWirMachen" value="Englisch">
           </td>
           <td class="TabellePage5">
            &Uuml;berführung deutscher Dokumente in die Konzernsprache Englisch<br>
           </td>
          </tr>
          <tr class="TabelleObenAusrichten">
           <td>
            <input type="checkbox" name="GlaubtWirMachen" value="Workshops">
           </td>
           <td class="TabellePage5">
            Organisation von entsprechenden Standardi&shy;sierungs&shy;workshops<br><br>
           </td>
          </tr>
          </tbody>
         </table>
        </td>
        <td width=15%>
         &nbsp;
        </td>
       </tr>
       <tr height="100px" class="TabelleObenAusrichten">
        <td></td>
        <td align=center>
         <input class="Button" type="button" value=" Zurück "
         onclick="location.href='http://www.intranet.undsoweiter'">
         <input class="Button" type="submit" value=" Weiter "> <!-- onclick="BeiClick()" -->
        <td></td>
       </tr>
         </table>
          </form>
    </body>

  2. hi,

    Aber irgendwie klappt das nicht so ganz - bin JavaScript-Anfänger.

    Du nimmst doch nicht ernsthaft an, dass sich jetzt jemand meterweise durch deinen Code blättert?

    Beim liefern einer vernünftigen Problembeschreibung kann dir </hilfe/charta.htm#tipps-fuer-fragende> helfen - "klappt nicht" ist jedenfalls keine.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo nochmal!

      Wenn ich im Browser auf der Seite "javaScript:alert(unescape(document.cookie));" eingeb bringt er mir eine Meldung wie "ASPSESSIONIDSSCBCTBB=IHK....; ASPSESSIONIDASTTTDAB=JLF....".
      "...." bedeutet: da kann ich keine Wörter mehr erkennen, Buchstabensalat.

      Was ist das für n komischer Cookiename? Den hab ich doch nicht definiert. Hatte auch schon, dass die Cookie-Meldung leer war. Sind das 2 Cookies?

      Vielleicht hilft es ja auch, wenn ich vorschlage, dass ihr euch mal folgende Zeilen näher anschaut:
      "setzeCookie('CookieESN1Umfrage', CookieWert, ", GlaubtWirMachen = ", GlaubtWirMachen);}" in der "function Cookie()", sowie folgende Funktion:
      "  function setzeCookie(name, wert1, wert2, wert3, wert4) {
         var argv = setzeCookie.arguments;
         var argc = setzeCookie.arguments.length;
         var expires = (argc > 2) ? argv[2] : null;
         var path = (argc > 3) ? argv[3] : null;
         var domain = (argc > 4) ? argv[4] : null;
         var secure = (argc > 5) ? argv[5] : null;
         document.cookie = name + "=" + escape(wert1 + ", " + wert2 + ", " + wert3 + ", " + wert4) +
          ((expires == null) ? "" : ("; expires = " +
          expires.toTimeString())) + ((path == null) ? "" : ("; path=" + path)) +
          ((domain == null) ? "" : ("; domain = " + domain)) + ((secure == true) ? "; secure" : "");
        }"

      Wenn ihr sonst noch Infos braucht, sagt es einfach.

      Es ist halt schwierig ein Problem zu beschreiben, wenn man nicht ne Fehlermeldung nach dem Motto "In Zeile 7, Zeichen 8 fehlt ein ";"" bekommt. Sorry. ;-)

      Gruß,
      eMatt

      1. Hallo,

        Vielleicht hilft es ja auch, wenn ich vorschlage, dass ihr euch mal folgende Zeilen näher anschaut:
        "setzeCookie('CookieESN1Umfrage', CookieWert, ", GlaubtWirMachen = ", GlaubtWirMachen);}" in der "function Cookie()", sowie folgende Funktion:
        "  function setzeCookie(name, wert1, wert2, wert3, wert4) {
           var argv = setzeCookie.arguments;
        ...

        deine Funktion "setzeCookie" ist so schön kompliziert und da ist es kein Wunder, wenn du sie falsch anwendest.
        Sind dir die Argumente der Funktion klar?
        Scheinbar musst du eine bestimmte Reihenfolge einhalten!

        dabei könnte es mit dieser Alternative so einfach sein:

          
        function cookie_set(name, value, expiredays) {  
          var expire_date = new Date();  
          expire_date.setTime(expire_date.getTime() + (expiredays * 24 * 3600 * 1000));  
          document.cookie = name + "=" + value + "; expires=" + expire_date.toGMTString() ;  
        }  
          
        cookie_set("abc","xyz",2); // cookie 2 Tage gültig  
        cookie_set("abc","",-1); // cookie  löschen  
        
        

        beachte jetzt noch

        • dass "value" kein "=" oder ";" beinhalten darf
        • dass man nicht beliebig viele Cookies vergeben kann

        Gruß plan_B

        --
             *®*´¯`·.¸¸.·
        1. Hallo plan_B!

          Danke für deine Hilfe.
          Sieht gut aus. Habs probiert, aber es funzt leider immer noch nicht.
          Aber egal, bin zu dem Schluss gekommen, dass es eigentlich gar nicht so schlimm ist, wenn ich für jede Frage n eigenes Formular hab und dann dazu je ne Mail krieg. Kann sie ja mit Hilfe des Betreffs entsprechend sortieren. Die Cookies nerven mich jetzt langsam nämlich sowieso.

          Gruß,
          eMatt

          1. Hallo,

            ... Habs probiert, aber es funzt leider immer noch nicht.

            dir war aber schon klar, dass auch bei der _alten_ Version setzeCookie(..),

            • der 1. Paramter der Name
            • nur der 2. Parameter ein Wert ( oder eine 'Summe' von Werten)
            • der 3. Parameter das Verfalldatum
            • der 4. ein Pfad
            • der 5. Domain

            sein durfte und die Aufrufe dazu überhaupt nicht passten?

            setzeCookie('CookieESN1Umfrage', expdate, document.Formular.KenntUnsVon.value, EvtlAnderes);}

            setzeCookie('CookieESN1Umfrage', expdate, ", Kennt uns von = ", document.Formular.KenntUnsVon.value, EvtlAnderes)};

            und es hätte heissen müssen:

            setzeCookie('CookieESN1Umfrage',
              document.Formular.KenntUnsVon.value + "," + EvtlAnderes,
              expdate );

            oder bei der neuen Funtion entsprechend:
             cookie_set('CookieESN1Umfrage',
                document.Formular.KenntUnsVon.value + "," +  EvtlAnderes,  2 );

            Gruß plan_B

            --
                 *®*´¯`·.¸¸.·