2012-12-09 23 views
1

我正在開展一個個人項目,這個想法的一部分涉及用戶回答五個問題,根據回答,它將導航到三個不同的故事中的一個。我目前使用CSS-Tricks的一個簡單測驗作爲模板,我修改它以通過使用elseif語句接受所有正確答案。我現在的問題是,我不完全確定如何根據響應指向不同文件之一。使用PHP和HTML的「測驗」

該腳本通過詢問問題(如您可以在網站上看到的,如果您願意的話),在此輸出,收集並顯示。

所有「A」答案都指向一個故事,所有「B」答案都指向另一個故事,而「C」指向相同。顯然,由於我試圖編輯的測驗的性質,它想要對它們進行「評級」而不是收集結果並根據這些結果做出決定。

<?php 

    $answer1 = $_POST['question-1-answers']; 
    $answer2 = $_POST['question-2-answers']; 
    $answer3 = $_POST['question-3-answers']; 
    $answer4 = $_POST['question-4-answers']; 
    $answer5 = $_POST['question-5-answers']; 

    $responseA = 0; 
    $responseB = 0; 
    $responseC = 0; 

    if ($answer1 == "A") { $responseA++; } 
    elseif ($answer1 == "B") {$responseB++; } 
    elseif ($answer1 == "C") {$responseC++; } 

    if ($answer2 == "A") { $responseA++; } 
    elseif ($answer2 == "B") {$responseB++; } 
    elseif ($answer2 == "C") {$responseC++; }    

    if ($answer3 == "A") { $responseA++; } 
    elseif ($answer3 == "B") {$responseB++; } 
    elseif ($answer3 == "C") {$responseC++; }    

    if ($answer4 == "A") { $responseA++; } 
    elseif ($answer4 == "B") {$responseB++; } 
    elseif ($answer4 == "C") {$responseC++; }    

    if ($answer5 == "A") { $responseA++; } 
    elseif ($answer5 == "B") {$responseB++; } 
    elseif ($answer5 == "C") {$responseC++; }    

    if ($responseA) { echo '<a href="sin.php">Next Page</a>'; } 
    elseif ($responseB) { echo '<a href="mys.php">Next Page</a>'; } 
    elseif ($responseC) { echo '<a href="ils.php">Next Page</a>'; } 

?> 

所以,如果有人能指出我在正確的方向,我會很感激。聽起來很簡單,但它比我爲學習項目計劃的要複雜得多!

編輯

我已經更新了代碼,以反映cbronson的建議,它肯定工作比以前好了很多!我現在面臨的問題是,似乎responseC沒有被計算在內。前兩個變量工作正常,任何組合都會導致A或B,但是當我選擇甚至全部C時,它會將鏈接指向「mys.php」,而不是「ils.php」。

EDIT 2

得到它再次合作。傻,傻,傻。感謝你的幫助!

+0

當你有幾個名爲「answer1」,「answer2」等的變量時,你應該改用一個數組。 –

+0

爲什麼要使用'$ response ++'而不是'$ responseA ++'或'$ responseB ++'或'$ responseC++'? –

+0

啊,這實際上是從代碼的早期版本(cbronson的回覆之前),我只是忘了更新它。我道歉,我現在編輯。 – Craig

回答

0

代替單個響應變量,爲每個答案(A,B,& C)創建三個單獨的變量,併爲每個變量添加一個相應的測試結果。然後,無論哪個響應變量具有更多結果(最常選擇),都將是您的總體答案。打破關係將取決於你。例如,如果我用以下答案回答測驗:1)A 2)B 3)C 4)A 5)A; 1)A)B)A 3)A 4)A 5)A;變量應該是:responseA = 3,responseB = 1,responseC = 1。變量響應A大於B和C,因此將我指向響應A的故事。

+0

謝謝!終於工作:) – Craig

-3

我認爲php不是正確的方式與這一個去。我使用JavaScript來製作這樣的simaler代碼。如果有幫助,我可以給你。只是評論回來!謝謝!

+0

一旦我完成了這個,我很想看看你的腳本!我打算在接下來的時間裏接觸js(我和我從來沒有完全相處過,恐怕),所以很高興看到兩種語言之間的差異。 – Craig

+0

歡迎您的光臨! –

+0

嘿,工作!如果優惠仍然開放,我很想看看你的腳本:) – Craig