【问题标题】:Sending quiz answers using a php form使用 php 表单发送测验答案
【发布时间】:2012-03-28 11:41:55
【问题描述】:

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

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

测验就像测验一样工作,但它不会使用 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 发送结果。

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

问候。

【问题讨论】:

  • 你的 PHP 版本可以发送电子邮件吗?
  • 是的,这是一个付费系统,所以我不想在这里添加代码。
  • 你有一个 php 问题(发送电子邮件,不使用表单或显示结果)但我们在这里看到的只是 javascript 和 html
  • 我们将在没有看到 quiz.php 的情况下努力提供帮助 =/
  • 嗨@mishu,我没有添加php代码的原因是我付费所以我不能分享它,我认为分享它的某些sn-ps是可以的。也许我最好的选择是创建一个开发网站并将测验上传到那里,以便人们可以查看源代码并提供帮助?这样会更好吗?

标签: php html arrays forms


【解决方案1】:

我在这里注意到的几件事:

  • QuizForm 没有提交按钮,并且似乎没有动态提交(可能只是没有显示)。也许这个表格和CheckForm 可以结合起来。
  • CheckForm 没有定义 method,这就是提交在其上放置查询字符串的原因
  • 提交的是分数而不是原始答案。也许这是理想的行为,但它使某人能够提交他们获得了很高的分数。

答案可能很简单,只需将提交按钮从CheckForm 移动到QuizForm

【讨论】:

  • 好地方。这就是我一直在寻找的。确实是这样,或者非常相似。我更改了它,但它不起作用,但后来我问自己为什么我有两个表单,一个包含提交按钮,一个包含测验。我把它全部做成了一个表格,现在它可以工作了,但我发现了这一点,因为你指出了表格名称的变化。非常感谢 :) 我知道我的测验不是最好的,现在可能会改变它,但只要它有效,我可以继续让它变得更复杂。再次感谢!
【解决方案2】:

尝试在打开“CheckForm”之前为“QuizForm”添加一个结束 &lt;form&gt; 标签。

[edit]其实QuizForm好像没有提交方法。

【讨论】:

  • 嗨冷酷,是的好地方,我已经有一个,但因为我只复制了测验的一个 sn-p 而不是整个测验,所以我愚蠢地忘记添加底部位。我可以向你保证,我已经关闭了表格和表格。 :( 谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
相关资源
最近更新 更多