0

私は、システムにアクセスできる特定のユーザーに質問するための学校評価フォームを備えた小さなWebベースのシステムを設計しました。いくつかの質問と入力はラジオタイプ(1または2または3または4)になります!コードは機能し、入力をデータベースに挿入できますが、合計マークを計算してデータベースに保存するための正しいクエリがわかりません。これは現在、以下のコードで機能しています。

    <?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");
 }


?>


<html>

<head>

<?php


if(!isset($_SESSION['login_user']))

header("Location:index.html");



?>
  <title>Q&A Form</title>

</head>

<body>


    <center><form method="post" action=""  >

    <table style="width: 20%" >
        <tr>
    <th> Criteria </th>
    <th> </th>
    </tr>
    <tr>
    <th> Excellent </th>
    <td >  4 </td>
    </tr>
    <tr>
    <th > Good <font size="3" > </font></th>
    <td>  3 <font size="4" > </font></td>
    </tr>
    <tr>
    <th > Average <font size="3" > </font></th>
    <td >  2 <font size="4" > </font></td>
    </tr>
    <tr>
    <th > Poor <font size="3" > </font></th>
    <td >  1 <font size="4" > </td>
    </tr>




<font size='4'>
    <table style="width: 70%">
        <tr>
<th > School Evaluation <font size="4" > </font></th>

<tr>
<th > Criteria <font size="4" > </font></th>
            <th> 4<font size="4" > </font></th>
            <th> 3<font size="4" > </font></th>
            <th> 2<font size="4" > </font></th>
            <th> 1<font size="4" > </font></th>

        </tr>
<tr>
<th> Your attendance<font size="4" > </font></th>
<td>  <input type="radio" name ="v1" value = "4"    checked = "checked" /></td>
<td>  <input type="radio" name ="v1" value = "3"     /></td>
<td>  <input type="radio" name ="v1" value = "2"     /></td>
<td>  <input type="radio" name ="v1" value = "1"     /></td>    
</tr>

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

<tr>
<th >Your self-control <font size="4" > </font></th>
<td>  <input type="radio" name ="v3" value = "4"    checked = "checked" /></td>
<td>  <input type="radio" name ="v3" value = "3"     /></td>
<td>  <input type="radio" name ="v3" value = "2"     /></td>
<td>  <input type="radio" name ="v3" value = "1"     /></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>
<?php
$total = $v1+ $v2 + $v3;

?>  


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


</body>
</html>

私はこのクエリを使用しましたが、うまくいきません..助けてください?

 <?php
    $total = $v1+ $v2 + $v3;

    ?>  
4

2 に答える 2

1

あなたが何を求めているのかよくわかりません。個別の値と合計の両方を保存したいが、PHP で合計を実行したくないですか?

もしそうなら、次のようなトリガーを作成できます。

DELIMITER $$
CREATE TRIGGER `sum_values` BEFORE INSERT
    ON `Form1`
    FOR EACH ROW
BEGIN
    SET NEW.TOTAL = NEW.P1 + NEW.P2 + NEW.P3;
END$$
DELIMITER ;

この方法では、次のクエリを実行するだけで済みます。

INSERT INTO 
    Form1 
        (P1,P2,P3)
    VALUES
        ('$v1','$v2','$v3')

...そして、トリガーは「合計」列に合計 P1 + P2 + P3 を入力する必要があります。

私が作成したこのトリガーは、基本的には、「誰かが何かを 'Form1' に挿入するたびに、'TOTAL' 列に P1 + P2 + P3 の合計を入力してください」と言います。

また、mysql_query を使用しないでください。mysqli または PDO_MySQL を調べてください。mysql_query は古く、廃止され、安全ではありません。

于 2012-11-09T16:43:05.450 に答える
0

PHP はサーバー側のテクノロジーです。おそらく AJAX 呼び出しなどを使用して、サーバーに送信しないとページの変更に応答できません。ただし、いくつかの onclick イベントを設定し、javascript を使用して合計をフォームの非表示要素に追加し、それを残りと一緒に送信する必要があるようです。

...
<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 += parseInt(arrV1[i].value);
      }
    }

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

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

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


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


</body>
</html>

編集:デフォルトで値を文字列として扱う JS を考慮して修正しました。

于 2012-11-09T16:46:12.367 に答える