0

このコードを使用して、無線入力タイプである v1、v2、v3 の合計 (合計) を計算しました。データベースに保存されたすべてのデータは、TOTAL を期待して、144 または 444 のように保存されます。3つの入力すべての合計ではありません.3つの入力の合計として保存したいのですが、助けてください

...
<tr>
<th> Your attendance<font size="4" > </font></th>
<td>  <input type="radio" name ="v1" value = "4"    checked = "checked" onclick="updateTotal();"/></td>
<td>  <input type="radio" name ="v1" value = "3"  onclick="updateTotal();"   /></td>
<td>  <input type="radio" name ="v1" value = "2"  onclick="updateTotal();"   /></td>
<td>  <input type="radio" name ="v1" value = "1"  onclick="updateTotal();"   /></td>    
</tr>

<tr>
<th > Your grades  <font size="4" > </font></th>
<td>  <input type="radio" name ="v2" value = "4"  onclick="updateTotal();"  checked = "checked" /></td>
<td>  <input type="radio" name ="v2" value = "3"  onclick="updateTotal();"   /></td>
<td>  <input type="radio" name ="v2" value = "2"  onclick="updateTotal();"   /></td>
<td>  <input type="radio" name ="v2" value = "1"  onclick="updateTotal();"   /></td>    
</tr>

<tr>
<th >Your self-control <font size="4" > </font></th>
<td>  <input type="radio" name ="v3" value = "4"  onclick="updateTotal();"  checked = "checked" /></td>
<td>  <input type="radio" name ="v3" value = "3"  onclick="updateTotal();"   /></td>
<td>  <input type="radio" name ="v3" value = "2"  onclick="updateTotal();"   /></td>
<td>  <input type="radio" name ="v3" value = "1"  onclick="updateTotal();"   /></td>    
</tr>       


        </tr>
    </table>


    <br>
    <a href="evaE.php">  <td><input type="submit" name="submit" value="Submit">

    <input type="reset" name="clear" value="clear" style="width: 70px"></td>

    <input type="hidden" id="total" name="total" />


<script>
  function updateTotal(){

    var sumRad = 0;

    var arrV1 = document.getElementsByName("v1");
    var arrV2 = document.getElementsByName("v2");
    var arrV3 = document.getElementsByName("v3");

    for(var i=0; i<arrV1.length ; i++){
      if(arrV1[i].checked == true){
        sumRad += arrV1[i].value;
      }
    }

    for(var i=0; i<arrV2.length ; i++){
      if(arrV2[i].checked == true){
        sumRad += arrV2[i].value;
      }
    }

    for(var i=0; i<arrV3.length ; i++){
      if(arrV3[i].checked == true){
        sumRad += arrV3[i].value;
      }
    }

    document.getElementById('total').value = sumRad ;
  }
</script>


 </form> 
</center>
</div>


</body>
</html>

コードの残りの部分は

       <?php

   session_start();
   $Load=$_SESSION['login_user'];
   include('../connect.php');
   $sql= "Select name from student where ID='$Load'";
   $username = mysql_query($sql);
    $id=$_SESSION['login_user'];

                if (isset($_POST['submit']))

{  

   $v1 = $_POST['v1'];
   $v2 = $_POST['v2'];
   $v3 = $_POST['v3'];
   $total = $_POST['total'];

 mysql_query("INSERT into Form1 (P1,P2,P3,TOTAL)
 values('$v1','$v2','$v3','$total')") or die(mysql_error());
 header("Location: mark.php");
 }


?>
4

3 に答える 3

0

JavaScript では、これらの各フィールドの値は整数表現ではなく文字列表現であるため、実際には文字列連結を行っています。合計を取得するには、次のようにする必要があります。

sumRad += parseInt(arrV1[i].value);

また、JavaScriptで合計を行っている理由を質問するコメントにも同意します。非表示フィールドを更新しているだけなので、非表示フィールドと関連するすべての JavaScript を簡単に削除し、PHP で合計を実行するだけです。

于 2012-11-09T20:06:05.040 に答える
0

それはあなたが合計を作る方法です:

$v1 = intval($_POST['v1']);
$v2 = intval($_POST['v2']);
$v3 = intval($_POST['v3']);
$total = $v1 + $v2 + $v3;

Javascript で実行すると表示には適していますが、信頼性は高くありません (めったに無効にできません)。

ここでは、準備済みステートメンを使用した単純なものの代わりに、時代遅れのデータベース インターフェイスを使用する場合に使用する必要があるもののintval()、許容可能な代替物を作成します。mysql_real_escape_string()PDO

于 2012-11-09T20:07:43.923 に答える
0

あなたはparseInt()上でする必要がありますsumRad += arrV1[i].value;

例えばsumRad += parseInt(arrv1[i].value,10)

于 2012-11-09T20:04:08.240 に答える