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

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

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

于 2012-11-09T20:04:08.240 回答
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 中执行它很适合显示,但不太可靠(即使很少,也可以禁用)。

Here为您在使用过时的数据库接口时应该使用intval()的替代品提供了一个可接受的替代品,而不是使用准备好的声明的更简单的替代品。mysql_real_escape_string()PDO

于 2012-11-09T20:07:43.923 回答