【问题标题】:How do I save a select option list from foreach loop如何从 foreach 循环中保存选择选项列表
【发布时间】:2016-04-11 07:38:45
【问题描述】:

我有一个 foreach 循环,其中显示了一个选项列表,其中包含所有国家/地区

foreach($countries as $cc => $name) {

echo '<option value="' . $name . '">' . $name . '</option>';
}

选定的选项被保存在数据库中。我想要做的是,如果我回到这个页面,它会显示数据库中已经选择的选项。我该怎么做?

谢谢。

【问题讨论】:

    标签: php mysql sql wordpress


    【解决方案1】:

    只需将选定的属性放在您要选择的属性上

    foreach ($countries as $name) {
       if ($yourselectedValue == $name) {
           $selected = 'selected';
       } else {
           $selected = '';
       }
       echo '<option value="' . $name . '" '.$selected.'>' . $name . '</option>';
    }
    

    【讨论】:

    • 这不起作用,因为 $name 始终是选项列表中的姓氏,而不是选定的姓氏。
    • @kerv $name 在循环运行时更改值,因此它最终将成为选定的值并设置selected
    【解决方案2】:

    试试这个:

    //$saved_option = get saved option or selected option
    
    foreach($countries as $cc => $name) {
        if ($saved_option == $name) {
            echo '<option value="' . $name . '" selected="selected">' . $name . '</option>';
        } else {
            echo '<option value="' . $name . '">' . $name . '</option>';
        }
    }
    

    【讨论】:

    • $name 始终是选择列表的最后一个选项,因此我无法比较保存的选项和 $name。
    • @kerv 是什么让您相信$name 始终是选择列表的最后一个选项?
    • $name 不是最后的选择。要检查它,将$name 的值打印到循环中。将打印$countries 数组的每个值。只需在循环中输入echo $name; 看看会发生什么。
    【解决方案3】:

    检索国家 ID 并将其存储在变量中

    $query  = "SELECT country_id FROM Tablename WHERE YOUR_CONDITION";
    $result = mysqli_query($connection, $query);
    if (mysqli_num_rows($result) > 0)
    {
    $row    = mysqli_fetch_assoc($result);
    $selectedOption = $row['country_id'];
    }
    else
    {
    $selectedOption = ''; // Your default selection of $cc
    }
    

    选择框

    下面的代码显示了国家数组的所有选项。 $cc 将检查数据库值 ($selectedOption),默认情况下会选择该国家/地区。

    $Option = '';
    foreach ($countries as $cc => $name)
    {
        if ($cc == $selectedOption)
        {
            $Option .= '<option value="'.$cc.'" selected="selected">'.trim($name).'</option>';
        }
        else
        {
            $Option .= '<option value="'.$cc.'">'.trim($name).'</option>';
        }
    }
    
    
    <select name="country_id" id="country_id">
    <?php echo $Option;?>
    </select
    

    【讨论】:

      【解决方案4】:
      $previousselect = database query;
      
      foreach($countries as $cc => $name) {
      
      echo '<option value="' . $name .'" '. ($previousselected == $name) ? 'selected' .'>' . $name . '</option>';
      }
      

      或者当你创建你的选择对象时

      <select name="arbitraryname" value="' . echo($previousselect); . '">
      

      抱歉,只是快速输入了它,而不是语法,只是方法

      $previousselect = database query;
      
      foreach($countries as $cc => $name) {
      
      echo '<option value="' . $name .'" '. ($previousselect == $name ? 'selected' : '') .'>' . $name . '</option>';
      }
      

      应该是正确的语法

      【讨论】:

      • 嗯,代码不起作用,给 select 一个值也不会使它起作用。
      猜你喜欢
      • 2017-10-17
      • 2023-03-08
      • 1970-01-01
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多