Probleme beim Rechnen mit ,

wolle-

Mitglied
Hallo allo zusammen, ich hatte ein Problem in PHP

Könnt ihr Hier sehen : Klick mich

So dieses Problem habe ich nun auch in Javascript.

Es gibt untereinander mehrere Felder - gebe ich eine Zahl mit , ein IGNORIERT er die. Alsob die garnicht da wäre. Er rechnet auf Tastendruck.

Hier mal der Code vorab:

HTML:
<?php
$zugriff = paccess($user);
if($zugriff==0)
{
echo "Sie haben keine Berechtigung!";
echo $back;
}
//Dieser Schritt ist eigentlich überflüssig, da im nächstem Schritt (mit anderer PHP Datei) die Datenbank geöffnet und auch benutzt wird!
else {
include("./config/connect.php");
$query="SELECT * FROM ".$tabletag."_user WHERE id='$user'";
$rs = mysql_query($query);
$name = mysql_fetch_array($rs);
$access = paccess2($user);
$query2="SELECT * FORM ".$tabletag."_kdkennzeichen";
$rs2 = mysql_query($query2);
$name2 = mysql_fetch_array($rs);
}
 
?> 

   <script type="text/javascript">
<!--
function CalcTotal(pForm, pTotalField, pFieldsToAdd){
    var fldArr = pFieldsToAdd.split(",");
    var total = 0;
    for(var i = 0; i < fldArr.length; i++){
        var fld = pForm[fldArr[i]];
        if(!isNaN(fld.value) && fld.value != ""){
            total += parseFloat(fld.value);
        }
    }
    pForm[pTotalField].value = total;
}
//-->
</script>
<p>&nbsp;</p><table width="528" border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#006666">
 <tr>
            <td background="../../gfx/newsback.jpg"><div align="center">
                
        <table width="100%" border="0" align="center" cellpadding="1" cellspacing="1">
          <tr>
                    <td><div align="center"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><strong>Kennzahleneingabe 
                Kundenservice</strong></font></div></td>
                  </tr>
                </table>
                <font size="3" face="Verdana, Arial, Helvetica, sans-serif"></font></div></td>
          </tr>
        </table>   
<p>&nbsp;</p>
<p><strong><font color="#FF0000">Hinweis</font>: Dezimalstellen bitte mit einem 
  <font color="#00CC33" size="5">Punkt</font> anstatt eines <font color="#FF0000">Komma</font> 
  eingeben, also 1.00 statt 1,00 !</strong><br>
</p>
<form name="kennzahladd" method="post" action="<?=$datei?>.php?section=intern&action=show_menu_kdl_do">
  
  <table width="94%" height="1044" border="1" align="center" cellpadding=0 cellspacing=0 bordercolor="#006666" bgcolor="#FFFFFF">
    <tr> 
      <td width="1%">1.</td>
      <td width="41%">Betrieb</td>
      <td colspan="2"> <select name="Betrieb" type="text" size="1">
          <option selected value="bitte auswählen">bitte auswählen</option>
          <option value="xx">xx</option>
          <option value="xx">xx</option>
          <option value="xx">xx</option>
          <option value="xx">xx</option>
          <option value="xx">xxxx</option>
        </select></td>
      <td width="44%"></td>
    </tr>
    <tr> 
      <td>2.</td>
      <td>Monat</td>
      <td colspan="2"> <select name="Monat" type="text" size="1">
          <option selected value="bitte auswählen">bitte auswählen</option>
          <option value="01">1 - Januar</option>
          <option value="02">2 - Februar</option>
          <option value="03">3 - März</option>
          <option value="04">4 - April</option>
          <option value="05">5 - Mai</option>
          <option value="06">6 - Juni</option>
          <option value="07">7 - Juli</option>
          <option value="08">8 - August</option>
          <option value="09">9 - September</option>
          <option value="10">10 - Oktober</option>
          <option value="11">11 - November</option>
          <option value="12">12 - Dezember</option>
        </select> </td>
      <td>&nbsp;</td>
    </tr>
    <tr> 
      <td>3.</td>
      <td>Jahr</td>
      <td width="5%" valign="middle"> <select name="Jahr" type="text" size="1">
          <option selected value="2006">2006</option>
          <option value="2007">2007</option>
          <option value="2008">2008</option>
        </select> </td>
      <td width="9%">&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
    <tr> 
      <td>4.</td>
      <td>durchsch. Prod-Kr&auml;fte HW</td>
      <td valign="middle"> <input name="F01" type="text" size="6"> </td>
      <td>Anzahl</td>
      <td>Trendbericht Abtlg T24 Auswahlzeitraum</td>
    </tr>
    <tr> 
      <td>5.</td>
      <td>Anweseinheitsgrad HW</td>
      <td valign="middle"> <input name="F02" type="text" size="6"> </td>
      <td>%</td>
      <td>Trendbericht Abtlg T31 Auswahlzeitraum</td>
    </tr>
    <tr> 
      <td>6.</td>
      <td>Auslastungsgrad HW</td>
      <td valign="middle"> <input name="F03" type="text" size="6"> </td>
      <td>%</td>
      <td>aus Trendbericht Abtlg T32 Auswahlzeitraum</td>
    </tr>
    <tr> 
      <td>7.</td>
      <td>Leistungsgrad HW</td>
      <td valign="middle"> <input name="F04" type="text" size="6"> </td>
      <td>%</td>
      <td> aus Trendbericht Abtlg T33 Auswahlzeitraum</td>
    </tr>
    <tr> 
      <td>8.</td>
      <td>Produktivit&auml;t</td>
      <td valign="middle"> <input name="F05" type="text" size="6"> </td>
      <td>%</td>
      <td>aus Trendbericht Abtlg T34 Auswahlzeitraum</td>
    </tr>
    <tr> 
      <td>9.</td>
      <td>verk. Std. pro Monat HW</td>
      <td valign="middle"> <input name="F06" type="text" size="6"> </td>
      <td>Stunden</td>
      <td>Trendbericht Abtlg T36 Auswahlzeitraum</td>
    </tr>
    <tr> 
      <td height="27">10.</td>
      <td>Lohnerl&ouml;s je Durchgang</td>
      <td valign="middle"> <input name="F07" type="text" size="6"> </td>
      <td>Euro</td>
      <td>Abtlg Erl&ouml;se A59 allgem Reparatur</td>
    </tr>
    <tr> 
      <td>11.</td>
      <td>Teilerl&ouml;s je Durchgang</td>
      <td valign="middle"> <input name="F08" type="text" size="6"> </td>
      <td>Euro</td>
      <td>Rendbericht Kennzahlen T101 Auswahlzeitraum</td>
    </tr>
    <tr> 
      <td>12.</td>
      <td>Verrechnungssatz 2</td>
      <td valign="middle"> <input name="F09" type="text" size="6"> </td>
      <td>Euro</td>
      <td>Abtlg Erl&ouml;se A55 allgem Reparatur</td>
    </tr>
    <tr> 
      <td>13.</td>
      <td>erzielter Verrechnungssatz</td>
      <td valign="middle"> <input name="F10" type="text" size="6"> </td>
      <td>Euro</td>
      <td>Abtlg Erl&ouml;se A56 allgem Reparatur</td>
    </tr>
    <tr> 
      <td>14.</td>
      <td>durchsch. t&auml;gl. Durchg&auml;nge</td>
      <td valign="middle"> <input name="F11" type="text" size="6"> </td>
      <td>St&uuml;ck</td>
      <td>Managementbericht B17 Auswahlzeitraum</td>
    </tr>
    <tr> 
      <td>15.</td>
      <td>Service- Berater</td>
      <td valign="middle"> <input name="F12" type="text" size="6"> </td>
      <td>Anzahl</td>
      <td>Managementbericht B19 Auswahlzeitraum</td>
    </tr>
    <tr> 
      <td>16.</td>
      <td>t&auml;gl. Durchg.je Prod.- Kraft</td>
      <td valign="middle"> <input name="F13" type="text" size="6"> </td>
      <td>St&uuml;ck</td>
      <td>Abtlg Erl&ouml;se A51 allgem Reparatur</td>
    </tr>
    <tr> 
      <td>17.</td>
      <td>durchschn. Rep.- Zeit je DG</td>
      <td valign="middle"> <input name="F14" type="text" size="6"> </td>
      <td>Stunden</td>
      <td>Abtlg Erl&ouml;se A54 allgem Reparatur</td>
    </tr>
    <tr> 
      <td>18.</td>
      <td>DB III Kst 30 (vom Erl&ouml;s)</td>
      <td valign="middle"> <input name="F17" type="text" size="6"> </td>
      <td>%</td>
      <td>aus KER Kostenstelle Service</td>
    </tr>
    <tr> 
      <td>19.</td>
      <td>DB III 20 (vom Erl&ouml;s)</td>
      <td valign="middle"> <input name="F18" type="text" size="6"> </td>
      <td>%</td>
      <td>aus KER Kostenstelle Service</td>
    </tr>
    <tr> 
      <td>20.</td>
      <td>Anzahl der prod. Kr&auml;fte je unprod. Kraft</td>
      <td valign="middle"> <input name="F19" type="text" size="6"> </td>
      <td>&nbsp;</td>
      <td>unprod. Kr&auml;fte nach KST-verteilung prod Kr&auml;fte mind 50 % nach 
        K&ouml;pfen</td>
    </tr>
    <tr> 
      <td>21.</td>
      <td>Anteil Garantie an Lohnerl&ouml;s</td>
      <td valign="middle"> <input name="F20" type="text" size="6"> </td>
      <td>%</td>
      <td>Konto 801 x 100 Summe geteilt durch L&ouml;hnerl&ouml;s</td>
    </tr>
    <tr> 
      <td>22.</td>
      <td>Anteil Garantie an Teilerl&ouml;s</td>
      <td valign="middle"> <input name="F21" type="text" size="6"> </td>
      <td>%</td>
      <td>Konto 835 x 100 Summe geteilt durch Teilerl&ouml;s</td>
    </tr>
    <tr> 
      <td>23.</td>
      <td>Lagerwertigkeit (Pos. 6 ~ 9)</td>
      <td valign="middle"> <input name="F22" type="text" size="6"> </td>
      <td>%</td>
      <td>Autopart-Gesch&auml;ftsbereich Wertigkeitsanalyse Werte 6-9 zu Gesamtwert</td>
    </tr>
    <tr> 
      <td>24</td>
      <td>Nora-Anteil</td>
      <td valign="middle"> <input name="F23" type="text" size="6"> </td>
      <td>%</td>
      <td>Managementbericht B08 Auswahlzeitraum</td>
    </tr>
    <tr> 
      <td>25.</td>
      <td>unverkaufte Stunden</td>
      <td valign="middle"> <input name="F24" type="text" size="6"> </td>
      <td>Stunden</td>
      <td>Aus Atlg Trendbericht T26-T28</td>
    </tr>
    <tr> 
      <td height="5" colspan="5">&nbsp;</td>
    </tr>
    <tr> 
      <td height="21">26.</td>
      <td valign="middle">in Abh&auml;ngigkeit von Produktivit&auml;t</td>
      <td valign="middle"><input type="text" id="myField6" name="myField6" onkeyup="CalcTotal(this.form, 'myTotalField1', 'myField3,myField4,myField5,myField6');" size="6" /></td>
      <td valign="middle"> Euro</td>
      <td valign="middle">Abtlg Erl&ouml;se A61</td>
    </tr>
    <tr> 
      <td height="21">27.</td>
      <td valign="middle">in Abh&auml;ngigkeit von Auslastung</td>
      <td valign="middle"><input type="text" id="myField5" name="myField5" onkeyup="CalcTotal(this.form, 'myTotalField1', 'myField3,myField4,myField5,myField6');" size="6" /></td>
      <td valign="middle">Euro</td>
      <td valign="middle">Abtlg Erl&ouml;se A62</td>
    </tr>
    <tr> 
      <td height="26">28.</td>
      <td valign="middle">in Abh&auml;ngigkeit von Leistung</td>
      <td valign="middle"><input type="text" id="myField3" name="myField3" onkeyup="CalcTotal(this.form, 'myTotalField1', 'myField3,myField4,myField5,myField6');" size="6" /></td>
      <td valign="middle">Euro</td>
      <td valign="middle">Abtlg Erl&ouml;se A63</td>
    </tr>
    <tr> 
      <td height="25">29.</td>
      <td valign="middle">in Abh&auml;ngigkeit von VS-Schichtung</td>
      <td valign="middle"><input name="myField4" type="text" id="myField4" onkeyup="CalcTotal(this.form, 'myTotalField1', 'myField3,myField4,myField5,myField6');" size="6" /></td>
      <td valign="middle">Euro</td>
      <td valign="middle">Abtlg Erl&ouml;se A64</td>
    </tr>
    <tr bgcolor="#999999"> 
      <? $summe = F28+F29; ?>
      <td height="21">30.</td>
      <td valign="middle"><strong>Teilsumme</strong></td>
      <td valign="middle">&nbsp;</td>
      <td valign="middle"><strong> 
        <input type="text" name="myTotalField1" id="myTotalField1" readonly size="6" />
        </strong></td>
      <td valign="middle"><strong>Erl&ouml;sdifferenz Lohn in &euro;</strong></td>
    </tr>
    <tr> 
      <td height="5" colspan="5">&nbsp;</td>
    </tr>
    <tr> 
      <td height="26">31.</td>
      <td valign="middle">in Abh&auml;ngigkeit von Auslastung</td>
      <td valign="middle"><input type="text" id="myField1" name="myField1" onkeyup="CalcTotal(this.form, 'myTotalField', 'myField1,myField2');" size="6" /> 
      </td>
      <td valign="middle">Euro</td>
      <td valign="middle">Abtlg Erl&ouml;se A65</td>
    </tr>
    <tr> 
      <td height="21">32.</td>
      <td valign="middle">in Abh&auml;ngigkeit von Leistung</td>
      <td valign="middle"><input name="myField2" type="text" id="myField2" 
           onkeyup="CalcTotal(this.form, 'myTotalField', 'myField1,myField2');" 
       size="6" /> </td>
      <td valign="middle">Euro</td>
      <td valign="middle">Abtlg Erl&ouml;se A66</td>
    </tr>
    <tr bgcolor="#999999"> 
      <td height="21">33.</td>
      <td valign="middle"><strong>Teilsumme</strong></td>
      <td valign="middle">&nbsp;</td>
      <td valign="middle"> <input type="text" id="myTotalField" name="total2" readonly size="6" /></td>
      <td valign="middle"><strong>Erl&ouml;sdifferenz Teile in &euro;</strong></td>
    </tr>
    <tr> 
      <td height="5" colspan="5">&nbsp;</td>
    </tr>
    <tr bgcolor="#666666"> 
      <td height="21">34.</td>
      <td valign="middle"><strong>Gesamtsumme</strong></td>
      <td valign="middle">&nbsp;</td>
      <td valign="middle"> <input type="text" id="myTotalField3" name="gesamt" readonly size="6" /></span> 
      </td>
      <td valign="middle"><strong>Erl&ouml;sdifferenz Gesamt</strong></td>
    </tr>
    <tr> 
      <td height="5" colspan="5">&nbsp;</td>
    </tr>
    <tr> 
      <td height="21">35.</td>
      <td valign="middle">+/- Stunden Gesamt</td>
      <td valign="middle"><input name="F25" type="text" size="6" onFocus="CalcTotal(this.form, 'myTotalField3', 'myField1,myField2,myField3,myField4,myField5,myField6');"></td>
      <td valign="middle">Stunden</td>
      <td valign="middle">+/- Stunden (Jahresarbeitszeitkonto)</td>
    </tr>
    <tr> 
      <td height="80">36.</td>
      <td colspan="3" valign="middle">Bemerkungen: </td>
      <td valign="middle"><textarea name="Memo1" cols="60" rows="5"></textarea></td>
    </tr>
  </table>
  <div align="center"><br>
    <input type="submit" name="Submit" value="Kennzahlen speichern">
  </div>
</form>
<p align="center">&nbsp;</p>

Versteht ihr mein Problem?

Gruß Wolle
 
Die Lösung ist recht einfach....Nachkommastellen werden in JS mit einem Punkt getrennt, und nicht mit einem Komma. Deine Eingabe wird deswegen nicht als Zahl erkannt und ignoriert.
 
Ja danke, dass ist aber keine Lösung. Die Frage ist ja, wie ich das , durch einen Punkt ersetzen kann (sofort bei der Eingabe). Das wär die Lösung finde ich :/

Gruß Wolle ;-]
 
Hi, habe mal etwas ausprobiert - will aber nicht:

Code:
<script type="text/javascript">
<!--
var str2 = str.replace(new RegExp(",",".");,'x');
var str3 = str.replace(new RegExp(",",".");,'x');
var str4 = str.replace(new RegExp(",",".");,'x');
var str5 = str.replace(new RegExp(",",".");,'x');
var str6 = str.replace(new RegExp(",",".");,'x');
var str7 = str.replace(new RegExp(",",".");,'x');
var str8 = str.replace(new RegExp(",",".");,'x');
var str9 = str.replace(new RegExp(",",".");,'x');
var str10 = str.replace(new RegExp(",",".");,'x');
var str11 = str.replace(new RegExp(",",".");,'x');
//-->
</script>

Das führe ich im formular aus, wo ich auch die PHP sachen Regexp.. Also in dem, wo die Mysql Daten eingefügt werden sollen.
--
DIE ÄNDERUNG MUSS JA SOFORT PASSIEREN!!
Wenn die änderung nicht sofort bei eingabe passiert, habe ich das Problem, dass die Berechnung falsch ist und der wieder nen falschen Wert hat. Deswegen bei eingabe :/


So in dem Formular selber zum Beispiel:

HTML:
<td height="21">26.</td>
      <td valign="middle">in Abh&auml;ngigkeit von Produktivit&auml;t</td>
      <td valign="middle"><input type="text" id="myField6" name="myField6" onkeyup="CalcTotal(this.form, 'myTotalField1', 'myField3,myField4,myField5,myField6');" size="6" /></td>
   <td valign="middle"> Euro</td>
      <td valign="middle">Abtlg Erl&ouml;se A61</td>
    </tr>
    <tr> 
      <td height="21">27.</td>
      <td valign="middle">in Abh&auml;ngigkeit von Auslastung</td>
      <td valign="middle"><input type="text" id="myField5" name="myField5" onkeyup="CalcTotal(this.form, 'myTotalField1', 'myField3,myField4,myField5,myField6');" size="6" /></td>
      <td valign="middle">Euro</td>
      <td valign="middle">Abtlg Erl&ouml;se A62</td>
    </tr>
    <tr> 
      <td height="26">28.</td>
      <td valign="middle">in Abh&auml;ngigkeit von Leistung</td>
      <td valign="middle"><input type="text" id="myField3" name="myField3" onkeyup="CalcTotal(this.form, 'myTotalField1', 'myField3,myField4,myField5,myField6');" size="6" /></td>
      <td valign="middle">Euro</td>
      <td valign="middle">Abtlg Erl&ouml;se A63</td>
    </tr>
    <tr> 
      <td height="25">29.</td>
      <td valign="middle">in Abh&auml;ngigkeit von VS-Schichtung</td>
      <td valign="middle"><input name="myField4" type="text" id="myField4" onkeyup="CalcTotal(this.form, 'myTotalField1', 'myField3,myField4,myField5,myField6');" size="6" /></td>
      <td valign="middle">Euro</td>
      <td valign="middle">Abtlg Erl&ouml;se A64</td>
    </tr>
    <tr bgcolor="#999999"> 
      <? $summe = F28+F29; ?>
      <td height="21">30.</td>
      <td valign="middle"><strong>Teilsumme</strong></td>
      <td valign="middle">&nbsp;</td>
      <td valign="middle"><strong> 
        <input type="text" name="myTotalField1" id="myTotalField1" readonly size="6" />
        </strong></td>

Bei den Javascript rechnungen muss ich jeweils ein Komma durch Punkt ersetzen, falls vorhanden.

?!

Gruß danke
Wolle ;-)
 
Zuletzt bearbeitet:
Hi,

bedeutet das

HTML:
<input name="myField4" type="text" id="myField4" onkeyup="CalcTotal(this.form, 'myTotalField1', 'myField3,myField4,myField5,myField6'); 
str=str.replace(',','.');" size="6" /></td>


Das würde funktionieren?
 
HTML:
<input name="myField4" type="text" id="myField4" value="<?=$daten[F28]?>" onkeyup="CalcTotal(this.form, 'myTotalField1', 'myField3,myField4,myField5,myField6'); str=str.replace(',','.');" size="6" />

Ne das funktioniert auch nicht, wo ist denn da mein Denkfehler?

:confused: :confused:
 
Baue das in die Funktion mit ein....es reicht ja, wenn dort umgewandelt wird(bevor du damit rechnest).
Code:
function CalcTotal(pForm, pTotalField, pFieldsToAdd){
    var fldArr = pFieldsToAdd.split(",");
    var total = 0;
    for(var i = 0; i < fldArr.length; i++){
        var fld = Number(String(pForm[fldArr[i]].value).replace(',','.'));
        if(!isNaN(fld) && fld != ""){
            total += parseFloat(fld);
        }
    }
    pForm[pTotalField].value = total;
}
 

Neue Beiträge

Zurück