John Vasiliou
John Vasiliou

Reputation: 997

Sending quiz answers using a php form

I have forms which work fine. I have a quiz which works fine.

When I incorporate the two they don't work fine :(

The quiz works as a quiz but it wont send it out using php to my email address.

Here is a bit of my code:

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

When submit is pressed it will change the end of my file name in the address bar from quiz.php to quiz.php?ScoreBox=75%25. So it takes my correct answers and wrong answers.

I need the quiz to show a live right and wrong answers when check scores is clicked but I also need to send the results using PHP.

If I'm going at it completely wrong perhaps someone can point me in the right direction to start fresh.

Regards.

Upvotes: 0

Views: 1428

Answers (2)

H Hatfield
H Hatfield

Reputation: 856

Few things I notice here:

  • QuizForm doesn't have a submit button and does not appear to be submitted dynamically (may just not be shown). Perhaps this form and CheckForm can be combined.
  • CheckForm doesn't have a method defined, which is why the submit puts a query string on it
  • The score is being submitted instead of the raw answers. Perhaps this is desired behavior, but it leaves the ability for someone to just submit they got a great score.

The answer could be as simple as moving the submit button from CheckForm to QuizForm.

Upvotes: 1

Grim...
Grim...

Reputation: 16953

Try adding a closing <form> tag for 'QuizForm' before you open 'CheckForm'.

[edit]Actually, QuizForm doesn't seem to have a submission method.

Upvotes: 1

Related Questions