Trotz Angabe Post wird Variable nur in der Browserzeile angezeig
Alex
- php
0 Peter Pan0 Alex
0 Der Martin0 Alex
Hallo,
ich habe (Quelltext unten)
Dieser berechnet den Preis einer Eingabe laufend.
Am Ende soll alles per post Anweisung an eine php-Datei rechnung-post.php übergeben werden.
Ohne javascript Berechnung funktioniert es, mit wird nichts mehr an das Formular übergeben sondern in der Browserzeile erscheint:
http://website.de/neu.html?Anzahl01=4&Betrag01=23%2C80&Anzahl02=5&Betrag02=41%2C50&Summe=58%2C77&B1=Abschicken
Also wie bei einer get Anweisung.
Offensichtlich verträgt sich javascript mit PHP nicht?
<script type="text/javascript" language="JavaScript">
Preis01 = 5.95;
Preis02 = 8.30;
// legt Dezimalstellen fest und wandelt das Dezimalzeichen . = ,
function Dezimalstellen(num) {
if(isNaN(num))
num = "0";
Vorzeichen = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((Vorzeichen)?'':'-') + num + ',' + cents);
}
function startCalc(){
interval = setInterval("calc()",1);
}
function calc(){
Wert01 = (Preis01 * document.autoSumForm.Anzahl01.value);
Wert02 = (Preis02 * document.autoSumForm.Anzahl02.value);
document.autoSumForm.Betrag01.value = Dezimalstellen(Wert01);
document.autoSumForm.Betrag02.value = Dezimalstellen(Wert02);
zwischen = (Wert01 * 1) + (Wert02 * 1);
if (zwischen <= 20)
zwischen= (zwischen+2.3) // 1. + Versand
else
if (zwischen >= 25)
zwischen = (zwischen*0.9) // 2. minus Rabatt
else
; // 3. Alternative: kein Rabatt
// nachfolgende Befehle
ergebnis = Dezimalstellen(zwischen)
document.autoSumForm.Summe.value = ergebnis;
}
function stopCalc(){
clearInterval(interval);
}
// End -->
</script>
<form name="autoSumForm">
<form action="rechnung-post.php" method="post">
<table cellspacing="2" cellpadding="10" border="0">
<tr><td>Artikel</td><td>Stückzahl</td><td>Einzelpreis</td><td>Summe</td></td></tr>
<tr><td>artikel1</td><td><input size="2" type=text name="Anzahl01" value="" onFocus="startCalc();" onBlur="stopCalc();"><br></td><td>5,95 Euro</td><td><input size="8" readonly type=text name="Betrag01" value="" > Euro<br></td></tr>
<tr><td>artikel2</td><td><input size="2" type=text name="Anzahl02" value="" onFocus="startCalc();" onBlur="stopCalc();"><br></td><td>8,30 Euro</td><td><input size="8" readonly type=text name="Betrag02" value=""> Euro<br></td></tr>
<tr><td>Gesamtsumme</td><td> </td><td> </td><td><input size="8" readonly type=text name="Summe"> Euro<br></td></tr>
</table>
<input type="submit" value="Abschicken" name="B1"></td>
<td>
<input type="reset" value="Zurücksetzen" name="B2"></td>
</tr>
</table>
</form>
</form>
</form>
<br><br>
Hi!
Was soll das denn werden?
> <form name="autoSumForm">
> <form action="rechnung-post.php" method="post">
off:PP
<form name="autoSumForm">
<form action="rechnung-post.php" method="post">
Diese Vermutung hatte ich auch schon.
Der Form Name autosumform ist für die Berechnung der einzelnen Zellen zuständig.
Ein schließen des </form> VOR der Absendefunktion half mir nicht weiter
By the way...Du fällst mir immer wieder auf, weil du für fast jedes Problem eine Antwort hast. Leider häufig etwas kniffelig, wobei ich mir ziemlich sicher bin, daß wenn ich mir nur lange genug Deine Antwort durchlese ich auch auf die Lösung komme...
Auf der anderen Seite dürfte es dem php Formular egal sein, wie es heißt. Ich sage ja "Nimm die Variablen und schieb sie an das php-Formular".
Hi,
Ohne javascript Berechnung funktioniert es, mit wird nichts mehr an das Formular übergeben sondern in der Browserzeile erscheint:
http://website.de/neu.html?Anzahl01=4&Betrag01=23%2C80&Anzahl02=5&Betrag02=41%2C50&Summe=58%2C77&B1=Abschicken
also kann man schon mal sicher sagen, dass das Javascript hier unerwünscht dazwischenpupst. Im übrigen solltest du dir verkneifen, erfundene, aber existierende Domainnamen für Beispiele zu missbrauchen; extra dafür wurden Beispieldomains eingeführt.
Offensichtlich verträgt sich javascript mit PHP nicht?
Javascript und PHP wissen gar nichts voneinander, sie können sich nicht in die Quere kommen.
Übrigens greift keins deiner Javascripts in den Formularversand ein.
<form name="autoSumForm">
<form action="rechnung-post.php" method="post">
Was ist denn das? Formulare dürfen nicht verschachtelt werden. Vermutlich ignoriert der Browser das zweite form-Tag, und somit gelten die Defaults method="get" und action="". Das Formular ruft also sich selbst wieder auf. Ein Zusammenhang mit aktivem oder nicht aktivem Javascript ist nicht erkennbar.
</form>
</form>
</form>
Hoppla! Hast du irgendwo noch ein drittes Formular aufgemacht?? Ich hab nur die zwei oben beanstandeten gesehen.
Ciao,
Martin
<form name="autoSumForm">
<form action="rechnung-post.php" method="post">Was ist denn das? Formulare dürfen nicht verschachtelt werden. Vermutlich ignoriert der Browser das zweite form-Tag, und somit gelten die Defaults method="get" und action="". Das Formular ruft also sich selbst wieder auf. Ein Zusammenhang mit aktivem oder nicht aktivem Javascript ist nicht erkennbar.
Hallo Martin,
Danke!
<form name="autoSumForm" action="rechnung-post.php" method="post">>
So scheint es zu funktionieren, also keine zwei einzelnen <form> Tags sondern eines!