th123: Summen bilden / Werte aus Formular auslesen und automatisch aktu

Liebe Kollegen,
Bitte helft einem blutigen Anfänger :-)
Ich bin kurz vorm Verzweifeln, ich hoffe einer von euch kann mir weiterhelfen.

Ich habe ein Formular (siehe unten Quellcode), in dem für drei Veranstaltungen Kauf-Pakete angeboten werden. Über die radiobutton-Auswahl kann das jeweilige Formular gebucht werden.

Klickt der Nutzer jetzt bei va1 z.B. Paket 1 (1000,-), bei va2 Paket 2 (2000,-) und bei va3 Paket 5 (5.000,-) erhält er einen bestimmten Rabatt auf den Gesamtpreis - bspw. hier 10%, da über 5.000,- Euro Gesamtvolumen.

Dass es die Zahlen unten aktualisiert habe ich hinbekommen, aber wie bilde ich nun aus der diesen Zahlen die Summen?

Ich hoffe, mir kann jemand helfen und bedanke mich im Voraus ...

<html>
<head>
</head>
<body>
<form action="xxx" method="POST">

<p>
<table border="0" cellspacing=2 width="495">
  <tr>
    <td align="left" class="text">&nbsp;</td>
    <td bgcolor="2A5395" style="color:ffffff"><center><b>Paket 1</b><br><font style="font-size:10px">1.000,- Euro</font></td>
    <td bgcolor="2A5395" style="color:ffffff"><center><b>Paket 2</b><br><font style="font-size:10px">2.000,- Euro</font></td>
    <td bgcolor="2A5395" style="color:ffffff"><center><b>Paket 3</b><br><font style="font-size:10px">3.000,- Euro</font></td>
    <td bgcolor="2A5395" style="color:ffffff"><center><b>Paket 4</b><br><font style="font-size:10px">4.000,- Euro</font></td>
    <td bgcolor="2A5395" style="color:ffffff"><center><b>Paket 5</b><br><font style="font-size:10px">5.000,- Euro</font></td>
  </tr>

<tr>
    <td align="left" class="text" bgcolor="D9E5F1">Veranstaltung 1</td>
    <td bgcolor="D9E5F1"><center><input type="radio" name="AWF" value="Paket_1" onClick="javascript:document.getElementById('va1').firstChild.nodeValue='1000'"></td>
    <td bgcolor="D9E5F1"><center><input type="radio" name="AWF" value="Paket_2" onClick="javascript:document.getElementById('va1').firstChild.nodeValue='2000'"></td>
    <td bgcolor="D9E5F1"><center><input type="radio" name="AWF" value="Paket_3" onClick="javascript:document.getElementById('va1').firstChild.nodeValue='3000'"></td>
    <td bgcolor="D9E5F1"><center><input type="radio" name="AWF" value="Paket_4" onClick="javascript:document.getElementById('va1').firstChild.nodeValue='4000'"></td>
    <td bgcolor="D9E5F1"><center><input type="radio" name="AWF" value="Paket_5" onClick="javascript:document.getElementById('va1').firstChild.nodeValue='5000'"></td>
  </tr>

<tr>
    <td align="left" class="text" bgcolor="B4CBE7">Veranstaltung 2</td>
    <td bgcolor="B4CBE7"><center><input type="radio" name="BAWF" value="Paket_1" onClick="javascript:document.getElementById('va2').firstChild.nodeValue='1000'"></td>
    <td bgcolor="B4CBE7"><center><input type="radio" name="BAWF" value="Paket_2" onClick="javascript:document.getElementById('va2').firstChild.nodeValue='2000'"></td>
    <td bgcolor="B4CBE7"><center><input type="radio" name="BAWF" value="Paket_3" onClick="javascript:document.getElementById('va2').firstChild.nodeValue='3000'"></td>
    <td bgcolor="B4CBE7"><center><input type="radio" name="BAWF" value="Paket_4" onClick="javascript:document.getElementById('va2').firstChild.nodeValue='4000'"></td>
    <td bgcolor="B4CBE7"><center><input type="radio" name="BAWF" value="Paket_5" onClick="javascript:document.getElementById('va2').firstChild.nodeValue='5000'"></td>
  </tr>

<tr>
    <td align="left" class="text" bgcolor="D9E5F1">Veranstaltung 3</td>
    <td bgcolor="D9E5F1"><center><input type="radio" name="FTITB" value="Paket_1" onClick="javascript:document.getElementById('va3').firstChild.nodeValue='1000'"></td>
    <td bgcolor="D9E5F1"><center><input type="radio" name="FTITB" value="Paket_2" onClick="javascript:document.getElementById('va3').firstChild.nodeValue='2000'"></td>
    <td bgcolor="D9E5F1"><center><input type="radio" name="FTITB" value="Paket_3" onClick="javascript:document.getElementById('va3').firstChild.nodeValue='3000'"></td>
    <td bgcolor="D9E5F1"><center><input type="radio" name="FTITB" value="Paket_4" onClick="javascript:document.getElementById('va3').firstChild.nodeValue='4000'"></td>
    <td bgcolor="D9E5F1"><center><input type="radio" name="FTITB" value="Paket_5" onClick="javascript:document.getElementById('va3').firstChild.nodeValue='5000'"></td>
  </tr>

</table><p>
<input type="submit" value=" weiter ">
</form>

<table border="0">
<tr><td>Veranstaltung 1:</td>
<td><div id="va1">nicht gebucht</div></td>
</tr>
<tr><td>Veranstaltung 2:</td>
<td><div id="va2">nicht gebucht</div></td>
</tr>
<tr><td>Veranstaltung 3:</td>
<td><div id="va3">nicht gebucht</div></td>
</tr>
<tr><td>Summe:</td>
<td>
?????????????????????
</td>
</tr>
<tr><td>Rabatt:</td>
<td>
?????????????????????
</td>
</tr>
<tr><td>Gesamtpreis:</td>
<td>
?????????????????????
</td>
</tr>

</body>
</html>

  1. Mahlzeit th123,

    Dass es die Zahlen unten aktualisiert habe ich hinbekommen, aber wie bilde ich nun aus der diesen Zahlen die Summen?

    Auf keinen Fall clientseitig (z.B. mit Javascript), da der Benutzer dieses deaktivieren bzw. manipulieren kann. Formularverarbeitung hat *IMMER* und *GRUNDSÄTZLICH* auf dem Server zu erfolgen.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo EKKi,
      danke für die schnelle Nachricht. Die Formularverwertung soll dann mit PHP serverseitig erfolgen. Damit habe ich auch kein Problem. Mein Problem ist die "Vorarbeit", die "Spielerei" vor dem Absenden des Formulares. Hierzu gehört das von mir beschriebene Problem und ich meinte, die "Aktualisierung per Klick" im Browser kann nur mit JavaScript erfolgen, oder?
      Bin gern offen für einen anderen Vorschlag ...
      Grüße, th

      1. Mahlzeit th123,

        danke für die schnelle Nachricht. Die Formularverwertung soll dann mit PHP serverseitig erfolgen. Damit habe ich auch kein Problem. Mein Problem ist die "Vorarbeit", die "Spielerei" vor dem Absenden des Formulares.

        Achso.

        Hierzu gehört das von mir beschriebene Problem und ich meinte, die "Aktualisierung per Klick" im Browser kann nur mit JavaScript erfolgen, oder?

        Das ist richtig. Ich würde Dir dazu raten, statt irgendwelcher <div>s einfach simple schreibgeschützte Texteingabefelder zu nehmen, deren Werte Du per Mausklick auf die Radiobuttons festlegst. Weiterhin würde ich Dir raten, diese Festlegung nicht jeweils direkt im onclick-Handler der einzelnen Radiobuttons zu notieren, sondern dort nur eine Funktion aufzurufen (der Du dann z.B. den Preis sowie den Namen des Texteingabefeldes, in dem der Preis erscheinen soll übergibst). In dieser Funktion kannst Du dann auch direkt die Summenermittlung (die ich allerdings auch wieder in eine eigene Funktion auslagern würde - DRY-Prinzip) aufrufen:

        <script type="text/javascript">  
          
        [code lang=javascript]function summenberechnung() {  
          
          var summe = 0;  
          
          for (var i = 1; i <= 3; i++) {  
            var preis = parseFloat(document.getElementsByName('va' + i)[0].value);  
          
            if (!isNaN(preis)) {  
              summe += preis;  
            }  
          }  
          
          document.getElementsByName('summe')[0].value = summe;  
          
          rabattberechnung();  
        }  
          
          
        function auswahl(name, preis) {  
          
          preis = parseFloat(preis);  
          
          if (!isNaN(preis)) {  
            var txt = document.getElementsByName(name)[0];  
            txt.value = preis;  
          
            summenberechnung();  
          }  
        }
        

        </script>

        ...

        <form action="xxx" method="post" onsubmit="summenberechnung()">

        ...

        <input type="radio" name="AWF" value="Paket_1" onclick="auswahl('va1', 1000);">

        ...

        <input type="text" name="va1" readonly="readonly">
        [/code]

        MfG,
        EKKi

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