我有以下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
答案 0 :(得分:1)
你应该这样纠正第一行:
<?php if(isset($Status) && ($Status =="S0" OR $Status =="S2")):?>
答案 1 :(得分:0)
我可以看到您的代码有些问题,但我认为没有任何内容会导致您所描述的内容,但我不清楚您的哪些示例会导致无条目错误消息。
首先,您将&&
与OR
混合,导致表达式的评估与您的预期不同。除了优先级之外,文本逻辑运算符(and
和or
)与符号(&&
和||
)相同。文本运算符在之后分组符号,因此你有
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>
否则下拉列表中不会显示任何内容。
否则我什么也看不到会导致你描述的东西。请说明哪些代码会给您错误。