Formular mit java automatisch berechnen

vasko

Grünschnabel
Hallo

ich habe diese script
function form_calculate()
{
// Wert des ersten Feldes auslesen:
var preis = Number(document.getElementById('preis').value);
// Wert des zeiten Feldes auslesen:
var stk = Number(document.getElementById('stk').value);
// Das Ergebnisfeld als Object ermittlen, um spaeter das Ergebnis einfuegen zu koennen
var resultField = document.getElementById('test');
// Felder zusammen rechnen
var test = preis*stk;
// Ergebnis ins Ergebnisfeld eintragen
resultField.value = test;
}
hat super funktioniert solange mein form in html war

Jetzt habe ich eine PHP form erstelt und die daten aus mysql ausgelesen

mysql_select_db($mysql_database);
$result = mysql_query("SELECT * FROM test");

while($row = mysql_fetch_assoc($result)){

echo '<form action="update.php" method="post">';
echo '<input type="hidden" name="id[]" value="'.$row['id'].'">';
echo '<table width="600" bgcolor="#999999" align="center" border="0" cellpadding="0" cellspacing="2"> ';
echo '<tr>';
echo '<td width="90" bgcolor="#CCCCCC" align="center"><input id="nummer" type="text" name="nummer[]" value="'.$row['nummer'].'" class="input" size="10" maxlength="20"readonly></td>';
echo '<td width="160" bgcolor="#CCCCCC" align="center"><input id="name "type="text" name="name[]" value="'.$row['name'].'" class="input" size="25" maxlength="50"readonly></td>';
echo '<td width="90" bgcolor="#CCCCCC" align="center"><input id="preis" type="text" name="preis[]" value="'.$row['preis'].'" class="input" onkeyup="form_calculate();" size="10" maxlength="20"readonly></td>';
echo '<td width="90" bgcolor="#CCCCCC" align="center"><input id="stk" type="text" name="stk[]" value="'.$row['stk'].'" class="input" onkeyup="form_calculate();" size="10" maxlength="30"></td>';
echo '<td width="90" bgcolor="#CCCCCC" align="center"><input id="test" type="text" name="test[]" value="'.$row['test'].'" class="input" onkeyup="form_calculate();" size="10" maxlength="20"></td>';

echo '</tr>';
echo '</table><br>';
}

das problem ist jetzt, dass es nur erste spalter ausrechnet und die restlichen nicht


wie bekomme iche das hin, dass es alle zeilen rechnet

Danke
 
Zu Beginn hab ich glatt zwei grundsätzliche Hinweise loszuwerden :)

1. JavaScript (= Scriptcode mit der Funktion form_calculate()) hat nichts mit Java (= Begriff im Betreff u. Deine Wahl des Unterforums) gemeinsam - entsprechend habe ich das Thema verschoben.
2. Die mysql_*-Funktionen sind mit PHP7 entfernt worden. Ist also eine Frage der Zeit, wann sie bei Dir nicht mehr laufen, wie es hier schon einigen Usern ergangen ist. Nutze stattdessen MySQLi oder PDO.

Kommen wir damit zum Kern des Problems. Die Ursache findet sich ganz schnell im ID-Bezeichner der einzelnen <input>-Elemente (id="nummer" bis id="test"), die mit der while-Schleife dupliziert werden, aber gemäß den allgemeinen Konventionen in HTML und JS eindeutig sein müssen, im Quellcode der Seite nur einmalig enthalten sein dürfen.

Ansonsten berücksichtigt / verarbeitet JavaScript typischerweise immer ausschließlich einen der multiplen ID-Bezeichner (preis, stk, test) - entweder den erst- oder letztgenannten im HTML-Dokumentbaum <body>...</body>.

Mögliche Lösungen:

Statt .getElementByID() mit gleichlautenden/-namigen IDs eine andere Methode wählen, die Formularelemente im DOM anzusprechen (siehe hierzu jeweils das erste Kapitel "Verwendung"):

https://wiki.selfhtml.org/wiki/JavaScript/DOM/Document/forms#Verwendung
https://wiki.selfhtml.org/wiki/JavaScript/DOM/Document/forms/elements#Verwendung

Oder die Bezeichner im PHP- u. JS-Code inkrementieren, um eins erhöhen:

PHP: http://stackoverflow.com/questions/...-form-input-ids-and-input-names-in-while-loop
JS: http://stackoverflow.com/questions/3231459/create-unique-id-with-javascript

Und kann es nicht sein, dass

1. in Deinem gezeigten PHP-Script ein Submit-Button für das Formular, sowie das schliessende </form> fehlt, was unerwünschte Nebeneffekte erzeugt?
2. die while-Schleife in <form><table> </table></form> stattfinden soll, und nicht anders herum?

[edit]Tipp-Ex[/edit]
 
Zuletzt bearbeitet:
Zurück