2015-04-17 77 views
2

在這裏完成n00b所以請原諒。我繼承了一個網站,它有代碼將一年會員價格降低10美元。我需要再添加一個折扣,「LEO」可以將價格降低15美元。我以爲我可以模仿原始代碼,一切都會好的,但是當我嘗試它時,它不能正常工作。我希望這只是一個語法的東西?多個促銷代碼

這裏是原代碼:

<tr> 
    <td class='bottomborder'><div align='center'> 
    <span id='bobcontent1-title'><input type='radio' name='MembershipTerm' class='join_form_bullet' value='"; 
     if($promocode == 'CIG9237'){echo("CigarFest Individual 1 Year");} 
     else {echo("Individual 1 Year");} 
     print"' checked='checked'></span> 
    </div></td> 
    <td class='bottomborder'>&nbsp;1 Year</td> 
    <td class='bottomborder'>"; 
     if($promocode == 'CIG9237'){echo("$25");} 
     else {echo("$35");}          
    print"</td> 
    <td class='bottomborder'><span class='text_red'>"; 
    if($promocode == 'CIG9237'){echo("$10.00!");} 
     else {echo(" ");} 
    print"</span></td> 
    <td class='bottomborder'>One Time Charge</td> 
    </tr> 

這裏是我的嘗試沒有運氣

<tr> 
    <td class='bottomborder'><div align='center'> 
    <span id='bobcontent1-title'><input type='radio' name='MembershipTerm' class='join_form_bullet' value='"; 
     if($promocode == 'CIG9237'){echo("CigarFest Individual 1 Year");} 
     if($promocode == 'LEO'){echo("Law Enforcement 1 Year");} 
     else {echo("Individual 1 Year");} 
     print"' checked='checked'></span> 
    </div></td> 
    <td class='bottomborder'>&nbsp;1 Year</td> 
    <td class='bottomborder'>"; 
     if($promocode == 'CIG9237'){echo("$25");} 
     if($promocode == 'LEO'){echo("$20");} 
     else {echo("$35");}          
    print"</td> 
    <td class='bottomborder'><span class='text_red'>"; 
    if($promocode == 'CIG9237'){echo("$10.00!");} 
    if($promocode == 'LEO'){echo("$15.00!");} 
     else {echo(" ");} 
    print"</span></td> 
    <td class='bottomborder'>One Time Charge</td> 
    </tr> 

當我加入LEO線,則定價顯示$25$35原始促銷代碼的CIG9237,但對於LEO代碼似乎看起來正確。

+2

我不認爲你可以混合和匹配的PHP代碼和HTML這樣。我甚至不確定你的代碼在語法上是否正確。當你運行它會發生什麼?你是否收到任何錯誤訊息?你的代碼是否打開了錯誤報告? – Maximus2012

+0

我認爲這是一個複製錯誤 - 第一行看起來像是echo的參數中間。 – Barmar

+0

@ Maximus2012所提供的代碼不完整 - html代碼實際上被包含在「print」字符串中,所以沒關係。 – Kvothe

回答

1

您的第一組if語句沒有像您期望的那樣執行。 else條件與第二個if語句匹配,因此如果$promocode'CIG9237',則會執行第一個if語句,並且else語句也會執行,因爲$promocode不等於'LEO'

基本上,你有這樣的:

if($promocode == 'CIG9237'){echo("$25");} 
if($promocode == 'LEO'){echo("$20");} 
else {echo("$35");} 

你應該有這樣的:

if($promocode == 'CIG9237'){echo("$25");} 
elseif($promocode == 'LEO'){echo("$20");} 
else {echo("$35");} 

要將所有語句連接在一起(現在只有語句之一將被執行)。

而且同樣適用於進一步下跌,應該是這樣的:

if($promocode == 'CIG9237'){echo("$10.00!");} 
elseif($promocode == 'LEO'){echo("$15.00!");} 
else {echo(" ");} 
+0

你們(和女孩?)是最棒的!感謝您的幫助! – Pedro

2

更改所有if($promocode == 'LEO')行,您添加到elseif($promocode == 'LEO')

發生了什麼事情是,else子句在每次促銷代碼不是LEO時都會運行,而不是兩個促銷代碼都不匹配。

1

即使第一個條件成功,第二個if語句也會被執行,在這種情況下,第二個if語句的條件回顯了else塊中的值。爲了避免這種情況,請使用elseif語句。當使用elseif時,只有在第一個if語句中的原始條件爲假時纔會對其進行評估。