PHP'如果'条件下的好奇HTML现象

时间:2012-03-23 06:57:57

标签: php html if-statement

我有以下HTML代码。主要目标是当php部分中的变量设置为“s2”时隐藏div我正在使用此代码:

<?php if(isset($Status) && $Status =="S0" OR $Status =="S2"):?>

    <?php if(isset($Status) && $Status=="S0"): ?>
        <div>
            <label for="x1">x1</label>  
            <select name="x1"  id="x1">
            <option value="<?php echo $x1;?>"></option>
            <option value="1">1</option>
            <option value="2">2</option>
            </select>
        </div>
    <?php endif; ?>
           some more divs
    <?php endif; ?>
关于这一点的当然是我改变的时候:

<?php if(isset($Status) && $Status=="S0"): ?>
            <div>
                <label for="x1">x1</label>  
                <select name="x1"  id="x1">
                <option value="<?php echo $x1;?>"></option>
                <option value="1">1</option>
                <option value="2">2</option>
                </select>
            </div>
        <?php endif; ?>

到:

        <div>
            <label for="x1">x1</label>  
            <select style="display:<?php echo ($Status == "S2" ? 'none' : 'inline'); ?>;" name="x1"  id="x1">
            <option value="<?php echo $x1;?>"></option>
            <option value="1">1</option>
            <option value="2">2</option>
            </select>
        </div>
一切正常。这种现象是,当我提交表单时,我得到一个错误消息,即使在使用第一个代码时,db也填充了来自db的php echo。使用最后一个代码意味着,一切正常,并且将显示错误消息。所以这对我来说有点奇怪。 db中将设置不同类型的状态,这不是问题所在。我测试的查询也。我也尝试过只显示我喜欢的div:

<?php if(isset($Status) && $Status =="S0"):?>

以及在给出s2时应该可见的div:

<?php if(isset($Status) && $Status =="S2"):?>

是谁在那里,谁能告诉我我做错了什么?非常感谢。

更新

好的,首先要感谢您回答我的问题。

我添加了括号并更改了&amp;&amp; “和”。

问题似乎是该行的价值:

<option value="<?php echo $x1;?>"></option>

在我看来,即使用户由于以下原因无法看到第一项:

...?>">NOTHING IN HERE</option>

“NOTHING IN HERE”的值应该是db的回声。那么应该提交回音值还是错了?

发生的错误消息以及为什么没有提交任何内容表示该字段为空。但从我的观点来看,它不是?!

只是为了指出为什么我不想显示第一个条目:

当用户看到下拉列表时,我不喜欢它,并且会有一个双重帖子,如:

点击下拉列表:

1 ->because this echoes the entry of the db.
1 ->first option
2 ->second option

2 个答案:

答案 0 :(得分:1)

你应该这样纠正第一行:

<?php if(isset($Status) && ($Status =="S0" OR $Status =="S2")):?>

答案 1 :(得分:0)

我可以看到您的代码有些问题,但我认为没有任何内容会导致您所描述的内容,但我不清楚您的哪些示例会导致无条目错误消息。

首先,您将&&OR混合,导致表达式的评估与您的预期不同。除了优先级之外,文本逻辑运算符(andor)与符号(&&||)相同。文本运算符在之后分组符号,因此你有

if((isset($Status) && $Status =="S0") OR $Status =="S2")

你应该重写为

if(isset($Status) and $Status =="S0" || $Status =="S2")

或使用括号强制优先级

if(isset($Status) and ($Status =="S0" or $Status =="S2"))

其次你错过了x1选项中的文本,所以不是

<option value="<?php echo $x1;?>"></option>
你应该

<option value="<?php echo $x1;?>"><?php echo $x1;?></option>

否则下拉列表中不会显示任何内容。

否则我什么也看不到会导致你描述的东西。请说明哪些代码会给您错误。