【问题标题】:PHP drop down issuePHP下拉问题
【发布时间】:2016-07-26 16:09:39
【问题描述】:

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

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

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

从下拉列表中选择值后,按下其他按钮以调用 mysql 过程。调用完成后,页面会刷新。

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

但是,在第一页刷新后,如果我尝试从下拉列表中选择不同的值,我在那里看到的只是之前选择的值 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>

【问题讨论】:

  • 那是因为您已经设置了$_SESSION['angle1'],导致isset($_SESSION['angle1']) 为真,并且从未进入else 条件。
  • 一个快速而肮脏的解决方法是将您的 if 语句更改为 if(isset($_SESSION['angle1']) &amp;&amp; $i == $_SESSION['angle1'])
  • @HardysonArthy:我能够根据您的输入修复它并且它有效。非常感谢。
  • @Drakes:巧合的是,我也做了同样的修复。为什么说它很脏,考虑到现有代码,我认为它很整洁。有没有更好的办法?我不懂php。
  • @kpv 介意标记我的答案吗? :D

标签: php dropdown


【解决方案1】:

这是因为您正在使用 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>';       
    }
?>

【讨论】:

    【解决方案2】:

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

    <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>
    

    【讨论】:

      猜你喜欢
      • 2013-09-23
      • 1970-01-01
      • 2014-05-28
      • 2017-04-12
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多