[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:
(4393 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:
(4385 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:
(4375 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:
(4370 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nö, warum sollte das schwieriger sein?

Arithmetische Operatoren
http://www.php.net/...ators.arithmetic.php
Gruß Sabine


als Antwort auf: [#230443]

automatische Berechnung

Mannix-KR
Beiträge gesamt:

21. Mai 2006, 20:17
Beitrag # 5 von 14
Beitrag ID: #230449
Bewertung:
(4366 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:
(4364 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:
(4362 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:
(4317 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:
(4312 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:
(4308 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>



Grüße Oesi
Ich weiß, dass ich nicht weiß... (Sokrates)


als Antwort auf: [#230662]

automatische Berechnung

Mannix-KR
Beiträge gesamt:

22. Mai 2006, 23:10
Beitrag # 11 von 14
Beitrag ID: #230670
Bewertung:
(4306 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:
(4302 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 = '';
}



Grüße Oesi
Ich weiß, dass ich nicht weiß... (Sokrates)


als Antwort auf: [#230670]

automatische Berechnung

Mannix-KR
Beiträge gesamt:

23. Mai 2006, 01:06
Beitrag # 13 von 14
Beitrag ID: #230684
Bewertung:
(4297 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:
(4255 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

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
26.01.2021 - 27.01.2021

Digicomp Academy AG, Zürich oder virtuell
Dienstag, 26. Jan. 2021, 08.30 Uhr - Mittwoch, 27. Jan. 2021, 17.00 Uhr

Kurs

In diesem Advanced-Kurs erlernen Sie weitergehende Methoden im Dokumentenaufbau, der Typografie und im Bereich Layouttechniken. Nach diesem Kurs können Sie strukturierte Dokumente erstellen oder bestehende effizienter anpassen.

Dauer: 2 Tage
Preis: CHF 1'400.–

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/INDEM2

Veranstaltungen
27.01.2021 - 28.01.2021

Digicomp Academy AG, Bern oder Basel
Mittwoch, 27. Jan. 2021, 08.30 Uhr - Donnerstag, 28. Jan. 2021, 17.00 Uhr

Kurs

Mit After Effects können Sie visuelle Effekte und Animationen für Video, Web, DVD und Blu-Ray erzeugen. In diesem Kurs lernen Sie die Grundlagen kennen und sehen inspirierende Anwendungsbeispiele, die Ihnen helfen, Ihre eigenen Ideen umzusetzen.

Preis: CHF 1'700.-
Dauer: 2 Tage

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/AFT

Neuste Foreneinträge


Absätze vor/nach AF suchen

Laser Drucker druckt schwarze Flecken Links und Rechts von Blatt

Gleich Große Icons erstellen

PSD CS6 (!) Mac: Dialog "Dateiinformationen" Fenster leer und Sackgasse

Langsamer MacMini

Illustrator Skript Übersatztext - Hilfe benötigt

ID CC 2019 und 2020: Crash beim Startvorgang - 2021

Inhalt Textrahmen verbinden

iPhone Farbprofil

Exel ohne leeres Tabellenblatt starten
medienjobs