2015-04-17 192 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语句中的原始条件为假时才会对其进行评估。