使用php表单发送测验答案

时间:2012-03-28 11:41:56

标签: php html arrays forms

我的表格很好。我有一个测验工作正常。

当我把两者合并时,他们不能正常工作:(

测验可以作为测验,但它不会使用php将其发送到我的电子邮件地址。

以下是我的一些代码:

    <head>
      <script>
        CorrectAnswers = new Array();
        CorrectAnswers[0]=1;
        CorrectAnswers[1]=1;
        CorrectAnswers[2]=1;
        CorrectAnswers[3]=2;

        macrightchar='YES';
        macwrongchar='NO';
        winrightchar='YES';
        winwrongchar='NO';

        var platform = 'win'
        if (navigator.appVersion.indexOf('Mac') != -1) {platform = 'mac'}
        if (platform == 'mac') {
            rightchar = unescape(macrightchar)
            wrongchar = unescape(macwrongchar)
        }
        else {
            rightchar = unescape(winrightchar)
            wrongchar = unescape(winwrongchar)
        }

        function CheckAnswer(){
            var i = 0;
            var TotalCorrect = 0;
            var x = 0;
            var Score = 0;

            for (i=0; i<CorrectAnswers.length; i++){
                if (document.QuizForm.elements[i*2].selectedIndex == CorrectAnswers[i]){
                    document.QuizForm.elements[(i*2)+1].value = rightchar;
                    TotalCorrect++;
                }
                else{
                    document.QuizForm.elements[(i*2)+1].value = wrongchar;
                }
            }
                Score = Math.floor((TotalCorrect*100)/CorrectAnswers.length);
                document.CheckForm.ScoreBox.value = Score + '%';
        }
    </script>
    </head>
    <body>
    <form name="QuizForm" accept-charset="utf-8" method="post" action="forms/quiz/_process.php" onSubmit="return validate.check(this)">
        <table class="widthOneHundredPercent">

        <tr>
        <td class="tableCellFloat columnOne" valign="top">
        <label for="Big_Media_offers_a_great_multiplatform_tool">Big Media offers a great multiplatform tool</label>
        </td>
        <td class="tableCellFloat columnTwo" valign="top">
        <select name="0">
        <option>???</option>
        <option>True</option>
        <option>False</option>
        </select>
        <td valign=top>
        <input type="text" name="1" size=2 maxlength=2>
        </td>
        </td>
        </tr>

    <tr>
    <FORM name="CheckForm">
        <td align="center">
        <font face="Geneva,Arial"><input type="button" VALUE="Check" onClick="CheckAnswer()"> Your score is  <input type=text name="ScoreBox" size="4" maxlength="4"></font>
        <center><input type="submit" value="Submit Form" /></center>
        </form>

按下提交时,它会将地址栏中文件名的结尾从quiz.php更改为quiz.php?ScoreBox = 75%25。所以它需要我正确的答案和错误的答案。

点击检查分数时,我需要测验显示实时的正确和错误答案,但我还需要使用PHP发送结果。

如果我完全错了,也许有人可以指出我正确的方向重新开始。

问候。

2 个答案:

答案 0 :(得分:1)

在打开“CheckForm”之前,请尝试为“QuizForm”添加结束<form>标记。

[edit]实际上,QuizForm似乎没有提交方法。

答案 1 :(得分:1)

我在这里注意到的一些事情:

  • QuizForm没有提交按钮,似乎没有动态提交(可能无法显示)。也许这个表格和CheckForm可以合并。
  • CheckForm没有定义method,这就是提交在其上放置查询字符串的原因
  • 正在提交分数而不是原始答案。也许这是期望的行为,但它留给了某人提交他们得分很高的能力。

答案可能就像将提交按钮从CheckForm移动到QuizForm一样简单。