2016-08-03 24 views
0

Ich habe eine dynamische Tabelle aus der Datenbank gefüllt. Mein Code ist wie folgt:Wie summiere Werte aus der Datenbank

<table class="table table-bordered" id="tb"> 
    <thead> 
    <tr style="BACKGROUND-COLOR: DarkGrey "> 
     <th colspan="5" style="text-align:Center;">Objectives</th> 
    </tr> 
    <tr class="tr-header"> 
     <th style="text-align:Center;width:10%;">ID</th> 
     <th colspan="2">Targets</th> 
     <th style="text-align:Center;width:1%;" rowspan="2">Weightage %</th> 
    </tr> 
    <tr> 
     <th> </th> 
     <th> </th> 
     <th style="width:10%;"> Date </th> 
    </tr> 
    </thead> 
    <tbody 
    <?PHP 
    $myquery = "select subtotals,Serial_Number,Targets,Weightage, row_number,edit_details 
       from Table1 WHERE Serial_Number='$Serial_Number' ORDER BY Row_Number asc"; 
    $fetched = sqlsrv_query($conn, $myquery); 
    if ($fetched === false) { 
    die(print_r(sqlsrv_errors(), true)); 
    } 
    while ($res = sqlsrv_fetch_array($fetched, SQLSRV_FETCH_ASSOC)) { 
    $Weightage = $res['Weightage']; 
    $Targets = $res['Targets']; 
    $Row_Number = $res['row_number']; 
    $subtotals = $res['subtotals']; 
    ?> 
    <tr id="<?php //echo $id ?>" class="tredit"> 
     <td class="edittbl"> 
     <b><input type="text" name="ID[]" class="ASDF form-control" id="Row<?php echo $Row_Number ?>" value="<?php echo $Row_Number; ?>" readonly></input></b> 
     </td>            
     <?PHP 
     if ($Objectives == "SubTotal") { 
     ?> 
     <td class="edittbl" colspan="3"> 
      <b><input type="text" name="Subtotal[]" class=" ASDF form-control" value="<?php echo $Objectives; ?>" style="text-align:center;" readonly ></input></b> 
     </td> 
     <td class="edittbl"> 
      <b><input type="text" name="SubTotal_Weightage[]" class="ASDF form-control" value="<?php echo $Weightage; ?>" readonly></input></b> 
     </td>            
     <?PHP 
     } else { 
     ?> 
     <td class="edittbl"> 
      <input type="text" name="Targets[]" class="ASDF form-control" value="<?php echo $Targets; ?>" ></input> 
     </td> 
     <td class="edittbl"> 
      <input type="text" name="Weightage[]" class="ASDF form-control" value="<?php echo $Weightage; ?>"></input> 
     </td> 
     <?PHP } ?> 
     </tr>     
    <?PHP } ?> 
    </tbody> 
</table> 

Ich versuche, ein Auto zu tun, auf Teilsumme berechnen, wenn die Werte zu ändern, so dass, wenn die weightage Änderungen, die Teilsumme automatisch berechnet, und den neuen Wert geben.

Calculation Image

Diese Gewichtungen sind dynamisch, und die donot der Wert Ihrer haben eine feste Position. Wie kann ich sicherstellen, dass bei einer Änderung der ersten vier die erste Teilsumme geändert wird und bei einer Änderung der zweiten und dritten die zweite Teilsumme geändert wird?

Würde mich über jeden Vorschlag freuen.

+1

Allererster Punkt. Keine zwei Eingaben können dieselbe ID auf derselben Seite * haben. Prüfen Sie. 'id =" Zeile "' jede Eingabe hat dieselbe ID. –

Antwort

0

onChange Attribut auf Input-Tag und Call js Funktion hinzufügen und dort Ihre Berechnung tun: http://www.w3schools.com/jsref/event_onchange.asp

Eine andere Möglichkeit, das heißt js Änderungsfunktion zu tun. Binden Sie es mit Ihrer Eingabe https://api.jquery.com/change/

+0

Bindung mit dem Eingang ist in Ordnung und kann getan werden, aber woher weiß ich, dass die ersten paar sollten sich auf die Untersumme und die nächsten auf die zweite Untersumme? – SR1092

0

Erstens, warum nicht trennen die Controller-Logik und Modell aus der Sicht? Es macht deinen Code sauberer. Ich nehme an, die Gewichtung wird basierend auf Benutzereingaben über ein Formularfeld entsprechend dem eingefügten Code-Snippet geändert. Ich verstehe ehrlich nicht, wie Sie Zwischensummen berechnen, aber ich denke, Sie sollten eine AJAX-Stil-Lösung für diese implementieren, so dass, wenn sich die Gewichtung ändert, eine Anfrage an das Modell gesendet wird, um die Zwischensumme entweder durch Abrufen aus der Datenbank neu zu berechnen oder von irgendeiner Form der Logik.

Verwandte Themen