2011-05-17 89 views
2

這可能很簡單,但我是PHP新手,並不是我的專長,所以請耐心等待!我卡住了!PHP'if'語句中的兩個條件

我有一個表單設置爲是或否的答案作爲單選按鈕。如果用戶點擊yes,則會顯示另外兩個單選按鈕:ab。如果他們點擊了no,他們將會看到單選按鈕cd

順便說一句,我有一些JavaScript隱藏ab DIV和cd DIV直到yesno被點擊時,只是爲了保持整潔。包含cdno DIV消失,並且在no之後點擊yes時被替換爲yes DIV,反之亦然。這一切工作正常。

我的問題是與PHP。這是不可能的,但如果用戶點擊no,做出選擇,例如d,然後決定將其答案更改爲yes,然後選擇a,該腳本仍會返回d。我想這是因爲d仍然被選中,並且最後出現在HTML流中。

我想我的腳本要做的是忽略cd,即使他們已被選中,如果選擇了yes。同樣,如果選擇no,我想要忽略ab

一個HTML看起來像這樣:

<label for="yes_or_no">Yes or No?</label> 
    <input type="radio" name="yes_or_no" id="yes" value="yes" /> 
    <label for="yes">Yes</label> 
    <input type="radio" name="yes_or_no" id="no" value="no" /> 
    <label for="no">No</label> 

<div id="yes"> 
    <label for="a_or_b" id="a_or_b">A or B?</label> 
    <input type="radio" name="a_or_b" id="a" value="a" /> 
    <label for="a">A</label> 
    <input type="radio" name="a_or_b" id="b" value="b" /> 
    <label for="b">B</label> 
</div> 

<div id="no"> 
    <label for="c_or_d" id="c_or_d">C or D?</label> 
    <input type="radio" name="c_or_d" id="c" value="c" /> 
    <label for="c">C</label> 
    <input type="radio" name="c_or_d" id="d" value="d" /> 
    <label for="d">D</label> 
</div> 

我的PHP看起來是這樣,但它不能正常工作:然後

$yes_or_no = $_REQUEST["yes_or_no"] ; 
$a_or_b = $_REQUEST["a_or_b"] ; 
$c_or_d = $_REQUEST["c_or_d"] ; 

if ($yes_or_no="yes" && $a_or_b!="") $result="$a_or_b"; 
if ($yes_or_no="no" && $c_or_d!="") $result="$c_or_d"; 
$feedback = "$result"; 

變量$feedback通過電子郵件發送給我。

我希望有道理!謝謝你的幫助!

Martin。

回答

5

使用==測試平等:

if ($yes_or_no == "yes" && $a_or_b != "") $result="$a_or_b"; 
if ($yes_or_no == "no" && $c_or_d != "") $result="$c_or_d"; 

我不知道這將徹底解決你的問題,但也許這將讓你開始。

哦,你可以做$result = $a_or_b而不是$result="$a_or_b",但這不會影響任何東西。

+1

這看起來正是他的問題。在這種情況下,當您在IF語句中使用單個=時,您將設置該變量的值,並且正在測試該變量是否爲假,因此在這種情況下,IF語句總是會成功。使用==肯定會修復它。此外,您不需要將$結果放在雙引號中。 $ feedback = $ result會工作得很好。 – WhiskeyTangoFoxtrot 2011-05-17 18:14:50

+1

@Foxtrot,是的。這絕對是一個問題。我的意思是我沒有通過並分析邏輯,以確定即使錯誤得到解決,它是否真的是正確的。另外,'if'返回'true'並且'$ result'從不設置是可能的。他正在處理這個案子嗎?我不知道。 – Matthew 2011-05-17 18:18:55

+1

只是對等號運算符進行了調整,它的功能就像一個魅力!如果它殺死我(這很有可能!),我會得到這個PHP百靈的竅門。同時,感謝所有幫助我的人(@ konforce,@Foxtrot,@joey,@lonesomeday和其他人)!馬丁。 – Martin 2011-05-17 18:58:08

0

您當前的設置爲變量$yes_or_noif中的值。使用==而不是=。一個是任務,另一個是比較。

0
if ($yes_or_no="yes" && $a_or_b!="") $result="$a_or_b"; 

問題出在$yes_or_no = "yes"。那是assignment operator,而不是comparison operator。它說「設置$yes_or_noyes,然後返回true」(這不完全是,但它接近)。您希望有一位操作員說:「如果$yes_or_no等於yes,則返回true」。

=替換爲==並且您的代碼應該可以工作。

(還有另外一個原因,你的代碼是這裏被打破 - =&&precedence,而==具有更高的優先級,但是這不是最大的問題)

0

您可以用JS清除任何選擇a和b是否被選擇,並且當用戶選擇是時是相同的。

另外你有一些錯誤在你的PHP,其他人已經提到。