Отправка ответов на викторину с помощью формы php - PullRequest
0 голосов
/ 28 марта 2012

У меня есть формы, которые работают нормально.У меня есть тест, который работает отлично.

Когда я включаю два, они не работают нормально: (

Тест работает как тест, но он не будет отправлять его с помощью php на мою электронную почтуaddress.

Вот немного моего кода:

    <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>

Когда нажата submit, конец моего имени файла в адресной строке изменится с quiz.php на quiz.php? ScoreBox = 75% 25. Итак, нужны мои правильные и неправильные ответы.

Мне нужно, чтобы тест показывал правильные и неправильные ответы при нажатии на контрольные оценки, но мне также нужно отправлять результаты, используя PHP.

Если я пойду совсем не так, возможно, кто-то может указать мне правильное направление, чтобы начать все сначала.

С уважением.

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Несколько вещей, которые я здесь замечаю:

  • QuizForm не имеет кнопки отправки и не представляется для динамической отправки (может просто не отображаться). Возможно, эту форму и CheckForm можно объединить.
  • CheckForm не имеет определенного method, поэтому отправляющий помещает в него строку запроса
  • Оценка представляется вместо необработанных ответов. Возможно, это желаемое поведение, но оно оставляет возможность кому-то просто заявить, что он получил отличный результат.

Ответ может быть таким же простым, как перемещение кнопки отправки с CheckForm на QuizForm.

1 голос
/ 28 марта 2012

Попробуйте добавить закрывающий тег <form> для 'QuizForm', прежде чем открывать 'CheckForm'.

[править] На самом деле, похоже, что QuizForm не имеет метода отправки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...