【问题标题】:Populate multi-select with php while loop from db使用 php while 循环从 db 填充多选
【发布时间】:2016-08-03 06:16:52
【问题描述】:

以下在本地环境中工作。既然推了 生活一切,但这些似乎工作。显示完全空的选择框现在没有检查或空白标签,只是在“选择选项”下拉列表中的空白区域。 select display

<?php
  $selected = array();
  $selected = explode(",",$fill['markets']);

  $condb = mysql_query("SELECT * FROM `countries`");
  $count = mysql_num_rows($condb);
  $countries = array();
  $str;

  while ($countries = mysql_fetch_array($condb))
  {
    $str = "option{$countries['id']}";
    echo "<option value='{$str}' ";
    if(in_array($str,$selected)) {
      echo "selected>";
      echo $countries['country'];
      echo "</option>";
    } else {
      echo ">";
      echo $countries['country'];
      echo "</option>";
    }
  }      
  ?>

【问题讨论】:

  • 尝试 $countries = mysql_fetch_array($condb);或者您可以使用一段时间:while ($row = mysql_fetch_array($result)) {,
  • 这是声明的第二个变量,它包含值。 $i 按 id / 数组元素引用行。因为它是一个数组数组,在这种情况下它是“arraykey->arrayvalue”,row->column。我知道它包含这些值,因为如果我专门/单独地回显它们,它会将它们打印出来。
  • mysql_fetch_array 一次只返回 一个 行,而不是结果集的 所有 行。这就是为什么您只列出了一个国家/地区。

标签: php loops for-loop select populate


【解决方案1】:

您应该改用 while 循环。如果需要,可以在循环外声明$i,试试下面的代码:

  $condb = mysql_query("SELECT * FROM `countries`");

  $i = 0;
   while($countries = mysql_fetch_array($condb)) {
    $str = 'option' . $i;
    echo "<option value='{$str}' ";
    if(in_array($str,$selected)) {
      echo "selected>";
      echo $countries['country'];
      echo "</option>";
    } else {
      echo ">";
      echo $countries['country'];
      echo "</option>";
    }
 $i++;
  }
  ?>
</select>

注意:

mysql_* 起已弃用。所以改为使用mysqli_*PDO
Why shouldn't I use mysql_* functions in PHP?

【讨论】:

  • 如果需要,不要忘记 $i
  • 每次在循环上下文中调用 mysql_fetch_array() 时,它是否会自动下降一行?它会在数据库结束时停止返回吗?这就是为什么我选择将 num_rows() 与 for 循环一起使用。
  • @RobertWood mysql_fetch_array() 是一个仅向前的函数,所以每次运行它都会获得下一行。
  • 啊,谢谢。那么如果它返回最后一行,那么它会在之后返回 null 吗?
  • @RobertWood 是的,我想或者false。如果答案有帮助,请采纳。
猜你喜欢
  • 2011-10-08
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 1970-01-01
  • 2021-11-16
  • 2013-10-31
相关资源
最近更新 更多