PHP 下拉问题

PHP drop down issue

我的第一个问题,如果不合适,请忽略。

我在 php 中编码了一个下拉菜单,用于 select 一个值。设置的值是 'Off', 0, 1, 2, ... 179(即总共 181 个值)。

一开始,下拉列表正确显示了所有 181 个值。

从下拉列表中 select 编辑值后,按下其他按钮以调用 mysql 过程。通话完成后,页面会刷新。

下拉菜单应该在页面刷新时保留 selected 值,它确实如此。不过,应该允许用户更改这些值。

但是,在第一个页面刷新后,如果我尝试 select 来自下拉列表的不同值,我在那里看到的只是之前 selected 值 181 次。

下面是代码,请大神帮忙修改一下。

我不是 php 程序员,只是想修复我的资源留下的一个小故障。

<select style="width: 87px; height:35px;color:#113C83;margin-bottom:0;border-right-width:0;" id="angle1">
<option value="Off">Off</option>
<?php
for($i=0;$i<=179;$i++)
{
      if(isset($_SESSION['angle1']))
      {
         ?>
         <option value="<?php echo $_SESSION['angle1']; ?>" selected><?php echo $_SESSION['angle1']; ?></option>
         <?php
      }
      else
      { ?>
     <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
     <?php 
      } 
    } ?>
</select>

这是因为您正在用 isset($_SESSION['angle1'] 测试 $_SESSION['angle1'] 的存在性,而不是它包含的值与当前循环计数器匹配 $i

这测试正确,假设 $_SESSION['angle1'] 包含先前选择的角度值。

这还通过使用三元运算符做出决定来大大简化您的代码

<select style="width: 87px; height:35px;color:#113C83;margin-bottom:0;border-right-width:0;" id="angle1">
    <option value="Off">Off</option>
<?php
    for($i=0; $i <= 179; $i++) {
        $sel = isset($_SESSION['angle1']) && $_SESSION['angle1'] == $i ? 'selected="selected" : '';

        echo '<option ' . $sel . ' value="' . $i . '">' . $i .'</option>';       
    }
?>

那是因为你没有指定正确的条件:

<select style="width: 87px; height:35px;color:#113C83;margin-bottom:0;border-right-width:0;" id="angle1">
<option value="Off">Off</option>
<?php
for($i=0;$i<=179;$i++)
{
      if(isset($_SESSION['angle1']) && ($i == $_SESSION['angle1'])) //when you refresh isset($_SESSION['angle1']) will be always true
      {
         ?>
         <option value="<?php echo $_SESSION['angle1']; ?>" selected><?php echo $_SESSION['angle1']; ?></option>
         <?php
      }
      else
      { ?>
     <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
     <?php 
      } 
    } ?>
</select>