我有一个WHILE循环来创建一组4个选项卡,其中包含我从数据库中获得的选项卡标题。我在DB中也有一个名为tab_id(1,2,3,4)的字段。
当我运行此代码时,tab_id为" 1"所有4行...但标签标题显示正确。我做错了什么?
<?php
while($rows = mysqli_fetch_array($result)){
if ($rows['tab_id'] = 1) { ?>
<li class="active"><a href="#tab<? echo $rows['tab_id']; ?>"
role="tab" data-toggle="tab" ><? echo $rows['tab_title']; ?></a>
</li>
<?php } else { ?>
<li><a href="#tab<? echo $rows['tab_id']; ?>" role="tab" data-
toggle="tab" ><? echo $rows['tab_title']; ?></a></li>
<?php }} ?>
答案 0 :(得分:0)
<?php
while($rows = mysqli_fetch_array($result)){
if ($rows['tab_id'] ==1) { ?>
<li class="active"><a href="#tab<? echo $rows['tab_id']; ?>"
role="tab" data-toggle="tab" ><? echo $rows['tab_title']; ?></a>
</li>
<?php } else { ?>
<li><a href="#tab<? echo $rows['tab_id']; ?>" role="tab" data-
toggle="tab" ><? echo $rows['tab_title']; ?></a></li>
答案 1 :(得分:0)
单个=
是php中的赋值运算符。所以php认为你说的是#34;将$rows['tab_id']
声明为1
,1
是否松散地评估为true
?&#34; ......答案是&#34;是&#34;,所以条件总是返回true
。 (这与上一行while
循环中出现的逻辑相同。)
要进行宽松的比较(即所需的全部内容),您只需再添加一个=
来制作==
。
进一步的建议是你的代码片段可以写得更多D.R.Y. (不要重复自己)。您只需修改class="active"
,因此无需重写整个<li>
代码。
建议代码:
while($rows = mysqli_fetch_array($result)){
<li<?php if($rows['tab_id'] == 1) echo ' class="active"'; ?>><a href="#tab<? echo $rows['tab_id']; ?>"
role="tab" data-toggle="tab" ><? echo $rows['tab_title']; ?></a>
</li>
<?php } ?>
或
while($rows = mysqli_fetch_array($result)){
echo "<li",($rows['tab_id'] == 1 ? ' class="active"' : ''),">";
echo "<a href=\"#tab{$rows['tab_id']}\" role=\"tab\" data-toggle=\"tab\" >{$rows['tab_title']}</a>";
echo "</li>";
}