[GastForen Programmierung/Entwicklung JavaScript automatische Berechnung

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

automatische Berechnung

Mannix-KR
Beiträge gesamt:

21. Mai 2006, 13:04
Beitrag # 1 von 14
Bewertung:
(5183 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

Ich habe ein Problem:
Ich habe verschiedene Eingabefelder (im Code mal 4 von später mal mehr als 150), und rechts neben 4 Eingabefeldern jeweils zwei Ausgabefelder.
Ich möchte, wenn ich in eines der Eingabefelder einen Wert eingebe, daß dieser mit einem festen Wert (z.B. $f_305_305_08_p[$z]) multipliziert wird, und das Ergebnis in einem Ausgabefeld (Summe_2), und die Summe der 4 Eingabefelder in Summe_1 angezeigt wird, ohne daß ich dazu einen Button betätigen muß.
Ist das möglich?
Die Seite ist in PHP und HTML geschrieben:
Code
if($poliert_08 > 0) 
{
echo "<form action=\"warenkorb.php\" method=\"post\">";
echo "\n<tr align=\"center\" valign=\"top\">";
echo "\n<td align=\"right\">8 mm&nbsp;&nbsp;<br>Bestellmenge (m<sup>2</sup>):&nbsp;&nbsp;</td>";
echo "\n<td>\n";
if ($f_305_305_08_p[$z] > 10) echo number_format($f_305_305_08_p[$z] , 2, ',', '.')."&nbsp; &euro;"; else echo "a. A." ;
?> <br><input name="f_305_305_08_p" value="1" type="text" size="5"> <?
echo "</td>";
echo "\n<td>\n";
if ($f_305_610_08_p[$z] > 10) echo number_format($f_305_610_08_p[$z] , 2, ',', '.')."&nbsp; &euro;"; else echo "a. A." ;
?> <br><input name="f_305_610_08_p" value="2" type="text" size="5"> <?
echo "</td>";
echo "\n<td>\n";
if ($f_400_400_08_p[$z] > 10) echo number_format($f_400_400_08_p[$z] , 2, ',', '.')."&nbsp; &euro;"; else echo "a. A." ;
?> <br><input name="f_400_400_08_p" value="3" type="text" size="5"> <?
echo "</td>";
echo "\n<td>\n";
if ($f_600_600_08_p[$z] > 10) echo number_format($f_600_600_08_p[$z] , 2, ',', '.')."&nbsp; &euro;"; else echo "a. A." ;
?> <br><input name="f_600_600_08_p" value="4" type="text" size="5"> <?
echo "</td>";
echo "\n<td align=\"left\">\n";
?>
&nbsp;<input name="summe_1" value="0" type="text" size="5"> &euro;
&nbsp;<input name="summe_1" value="0" type="text" size="5"> m<sup>2</sup><br>
<?
echo "</td>";
echo "\n</tr>";
echo "</form>";
}

Zum Abschluß kommt natürlich, wenn es funktioniert, noch ein submit-button, um die gesammelten Daten über Warenkorb.php in eine Datenbank zu schreiben, aber so weit bin ich noch nicht.
X

automatische Berechnung

SabineP
Beiträge gesamt: 7586

21. Mai 2006, 13:45
Beitrag # 2 von 14
Beitrag ID: #230394
Bewertung:
(5172 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mannix,

die Vergleichsoperatoren für Javascript findest Du hier:

http://de.selfhtml.org/...toren.htm#berechnung

Wenn Javascript im Browser deaktiviert ist, kann nichts berechnet werden.
Also wäre es doch besser, wenn Du die Produkte und Summen mit PHP ermittelst anstatt mit Javascript.

Gruß Sabine


als Antwort auf: [#230390]

automatische Berechnung

Mannix-KR
Beiträge gesamt:

21. Mai 2006, 19:34
Beitrag # 3 von 14
Beitrag ID: #230443
Bewertung:
(5162 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, Sabine.
Aber mit PHP ist das doch noch schwieriger, oder??


als Antwort auf: [#230394]

automatische Berechnung

SabineP
Beiträge gesamt: 7586

21. Mai 2006, 20:00
Beitrag # 4 von 14
Beitrag ID: #230447
Bewertung:
(5157 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nö, warum sollte das schwieriger sein?

Arithmetische Operatoren
http://www.php.net/...ators.arithmetic.php


als Antwort auf: [#230443]

automatische Berechnung

Mannix-KR
Beiträge gesamt:

21. Mai 2006, 20:17
Beitrag # 5 von 14
Beitrag ID: #230449
Bewertung:
(5153 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das wichtigste zuertst: My english is very bad!
Dann kommt noch dazu, daß mit JS irgendwie eine onchange-Function existiert, wovon ih bei PHP noch nie gehört habe.


als Antwort auf: [#230447]

automatische Berechnung

SabineP
Beiträge gesamt: 7586

21. Mai 2006, 20:56
Beitrag # 6 von 14
Beitrag ID: #230457
Bewertung:
(5151 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das Javascript-Ereignis onchange wird zum Berechnen ja auch nicht benötigt.

Die Formulardaten sendest Du per Formular und submit-Button an das PHP-Script,
PHP kann anschließend die Berechnungen durchführen und das Ergebnis speichern.

Gruß Sabine


als Antwort auf: [#230449]

automatische Berechnung

Mannix-KR
Beiträge gesamt:

21. Mai 2006, 21:10
Beitrag # 7 von 14
Beitrag ID: #230460
Bewertung:
(5149 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das wäre ja kein Problem.
Aber ich möchte, daß sich der Wert in den beiden Ausgabefeldern in dem Moment ändert, wenn der Inhalt eines der Eingabefelder geändert wird: Also ohne submit.
Und dazu brauche ich wohl onchange, aber ich weiß nicht wie!?


als Antwort auf: [#230457]

automatische Berechnung

Mannix-KR
Beiträge gesamt:

22. Mai 2006, 21:07
Beitrag # 8 von 14
Beitrag ID: #230650
Bewertung:
(5104 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
was auch gehen könnte, ist onkeyup, aber auch hier: Wie sieht die function aus??
Kann mir wirklich keiner helfen??


als Antwort auf: [#230457]
(Dieser Beitrag wurde von Mannix-KR am 22. Mai 2006, 21:08 geändert)

automatische Berechnung

Mannix-KR
Beiträge gesamt:

22. Mai 2006, 22:02
Beitrag # 9 von 14
Beitrag ID: #230662
Bewertung:
(5099 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe mal eine Test-Datei angelegt, um mein Problem zu verdeutlichen:
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
<!--
function berech(ein_1,ein_2,ein_3,ein_4,aus_1,aus_2)
{
aus_1 = ein_1+ein_2+ein_3+ein_4;
aus_2 = ein_1*wert_1+ein_2*wert_2+ein_3*wert_3+ein_4*wert_4;
alert(aus_1);
alert(aus_2);
}
//-->
</script>
</head>

<body background="grafik/hg-blau.jpg" text="white" link="white" vlink="white" alink="white">
<form name="form1" action="#">
<input name="test_1" onkeyup="berech(this.value,text_2,text_3,text_4,wert_1,wert_2,ausgabe_1,ausgabe_2)" value="5" type="text" size="5">Test-1<br>
<input name="test_2" onkeyup="berech(this.value,text_1,text_3,text_4,wert_1,wert_2,ausgabe_1,ausgabe_2)" value="6" type="text" size="5">Test-2<br>
<input name="test_3" onkeyup="berech(this.value,text_1,text_2,text_4,wert_1,wert_2,ausgabe_1,ausgabe_2)" value="7" type="text" size="5">Test-3<br>
<input name="test_4" onkeyup="berech(this.value,text_1,text_2,text_3,wert_1,wert_2,ausgabe_1,ausgabe_2)" value="8" type="text" size="5">Test-4<br><br>
<input name="wert_1" value="3" type="hidden" size="5">
<input name="wert_2" value="4" type="hidden" size="5">
<input name="ausgabe_1" value="10" type="text" size="5">Ausgabe<br>
<input name="ausgabe_2" value="20" type="text" size="5">Ausgabe<br><br>
</form>
</body>
</html>


als Antwort auf: [#230650]

automatische Berechnung

oesi50
  
Beiträge gesamt: 2315

22. Mai 2006, 22:24
Beitrag # 10 von 14
Beitrag ID: #230664
Bewertung:
(5095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
versuchs mal so:
Code
<BODY> 

<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
<!--
function rechne(o){
var tmp = parseFloat(o.form.f1.value) + parseFloat(o.form.f2.value);
o.form.p1.value = tmp ? tmp : '';
}
//-->
</SCRIPT>


<FORM METHOD= ACTION="#">

<INPUT TYPE="text" NAME="f1" onkeyup="rechne(this);">
<INPUT TYPE="text" NAME="f2" onkeyup="rechne(this);">
<INPUT TYPE="text" NAME="p1">

</FORM>
</BODY>



als Antwort auf: [#230662]

automatische Berechnung

Mannix-KR
Beiträge gesamt:

22. Mai 2006, 23:10
Beitrag # 11 von 14
Beitrag ID: #230670
Bewertung:
(5093 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dankeschön, so gehts (zumindest in der Test-Datei).
Aber damit ich auch verstehe, was ich da so abschreibe: Was bedeutet
==> = tmp ? tmp : '' <==
Um beide benötigten Berechnungen zu bekommen, habe ich die Testdatei so geändert:
Code
<html> 
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<BODY>

<SCRIPT LANGUAGE="JavaScript" type="text/javascript">
<!--
function rechne(o){
var tmp = parseFloat(o.form.f1.value) + parseFloat(o.form.f2.value) + parseFloat(o.form.f3.value) + parseFloat(o.form.f4.value);
var tmp2 = parseFloat(o.form.f1.value) * parseFloat(o.form.w1.value) + parseFloat(o.form.f2.value) * parseFloat(o.form.w2.value) +
parseFloat(o.form.f3.value) * parseFloat(o.form.w3.value) + parseFloat(o.form.f4.value) * parseFloat(o.form.w4.value) ;
o.form.p1.value = tmp ? tmp : '';
o.form.p2.value = tmp2 ? tmp2 : '';
}
//-->
</SCRIPT>

<FORM METHOD= ACTION="#">
<INPUT TYPE="text" NAME="f1" onkeyup="rechne(this);"> Test-1<br>
<INPUT TYPE="text" NAME="f2" onkeyup="rechne(this);"> Test-2<br>
<INPUT TYPE="text" NAME="f3" onkeyup="rechne(this);"> Test-3<br>
<INPUT TYPE="text" NAME="f4" onkeyup="rechne(this);"> Test-4<br>
<INPUT TYPE="text" NAME="p1">
<INPUT TYPE="text" NAME="p2">
<INPUT TYPE="hidden" NAME="w1" value="10">
<INPUT TYPE="hidden" NAME="w2" value="20">
<INPUT TYPE="hidden" NAME="w3" value="30">
<INPUT TYPE="hidden" NAME="w4" value="40">
</FORM>
</BODY>
</html>

Der nächste Schritt ist jetzt für mich, daß ich der funktion noch den Namen der Form mitgebe, weil auf der Seite mehr als 20 Forms geben wird, und ich nicht für jede eine eigene Funktion anlegen möchte.
Geht das auch?


als Antwort auf: [#230664]

automatische Berechnung

oesi50
  
Beiträge gesamt: 2315

23. Mai 2006, 00:13
Beitrag # 12 von 14
Beitrag ID: #230677
Bewertung:
(5089 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Der nächste Schritt ist jetzt für mich, daß ich der funktion noch den Namen der Form mitgebe, weil auf der Seite mehr als 20 Forms geben wird, und ich nicht für jede eine eigene Funktion anlegen möchte.
Geht das auch?


deshalb verwendet man ja 'this'.

Code
o.form.p1.value = tmp ? tmp : ''; 


ist das gleiche wie

Code
if(tmp){ 
o.form.p1.value = tmp;
}
else{
o.form.p1.value = '';
}



als Antwort auf: [#230670]

automatische Berechnung

Mannix-KR
Beiträge gesamt:

23. Mai 2006, 01:06
Beitrag # 13 von 14
Beitrag ID: #230684
Bewertung:
(5084 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke, das war mir (wie so vieles) neu.
Die Sache klappt einwandfrei: In meiner Testdatei.
Aber wenn ich die function und die Aufrufe ins Originalfile einsetze, tut sich garnichts.
Hast Du eine Idee?
http://muster.natursteine-carpediem.de/...-cristallo/index.php ist die Originaldatei,
und unter http://muster.natursteine-carpediem.de/test2.php ist die Testdatei....


als Antwort auf: [#230677]
(Dieser Beitrag wurde von Mannix-KR am 23. Mai 2006, 01:14 geändert)

automatische Berechnung

Mannix-KR
Beiträge gesamt:

23. Mai 2006, 12:15
Beitrag # 14 von 14
Beitrag ID: #230753
Bewertung:
(5042 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich bin der Sache schon ein Stück näher gekommen.
Aber wie bekomme ich den Wert einer PHP-Variable als Value-Wertvorlage in eine Form?
Code
<? if ($f_305_610_08_p > 10) echo number_format($f_305_610_08_p , 2, ',', '.')." &euro;"; else echo " " ;?>  
<INPUT TYPE="text" NAME="f2" onkeyup="rechne(this);" value="0" size="5">
<INPUT TYPE="hidden" NAME="w2" value=([b]hier soll der Inhalt der PHP-Variablen $f_305_610_08_p hin)>
<input type="hidden" name="e2">

Die function sieht so aus:
Code
<SCRIPT LANGUAGE="JavaScript" type="text/javascript">  
<!-- function rechne(o){
var tmp1 = parseFloat(o.form.f1.value) + parseFloat(o.form.f2.value) + parseFloat(o.form.f3.value) + parseFloat(o.form.f4.value);
var erg1 = parseFloat(o.form.f1.value) * parseFloat(o.form.w1.value) ;
var erg2 = parseFloat(o.form.f2.value) * parseFloat(o.form.w2.value) ;
var erg3 = parseFloat(o.form.f3.value) * parseFloat(o.form.w3.value) ;
var erg4 = parseFloat(o.form.f4.value) * parseFloat(o.form.w4.value) ;
var tmp2 = erg1 + erg2 + erg3 + erg4 ;
o.form.e1.value = erg1;
o.form.e2.value = erg2;
o.form.e3.value = erg3;
o.form.e4.value = erg4;
o.form.p1.value = tmp1 ? tmp1 : '';
o.form.p2.value = tmp2 ? tmp2 : '';
}
//-->
</SCRIPT>


Die Seite ist als Test unter http://muster.natursteine-carpediem.de/test2.php abgelegt


als Antwort auf: [#230684]
(Dieser Beitrag wurde von Mannix-KR am 23. Mai 2006, 12:17 geändert)
X