【问题标题】:Using PHP, Retrieve Array from MySQL Field and Use It to Fill Checkbox Group使用 PHP,从 MySQL 字段中检索数组并使用它来填充复选框组
【发布时间】:2013-10-22 19:47:00
【问题描述】:

上下文

我正在开发一个带有复选框组的配置文件创建表单,该复选框组内爆并将逗号分隔的数组插入 MySQL 表 ($profile_table)。

<input type="checkbox" name="check_group[]" value="Foo" /> Foo<br />
<input type="checkbox" name="check_group[]" value="Bar" /> Bar<br /> 
<input type="checkbox" name="check_group[]" value="Baz" /> Baz<br />

$insert_array = implode(", ", $_POST['check_group']);

如果所有复选框都被选中,则数组看起来像:“Foo, Bar, Baz”

$insert_profile_query = "INSERT INTO profile_table
(check_group_field)VALUES ('".$insert_array."')";   
$profile_query_qs = db_query($insert_profile_query);

上面的代码有效。

我需要一个编辑配置文件页面,其中复选框组使用上面创建并插入 MySQL $profile_table 的数组进行预填充。

以“Foo”复选框为例,我相信答案使用了 in_array 条件并且接近于:

<input type="checkbox" name="check_group[]" value="Foo"
<? $my_array = array(explode(", ", $profile_table['check_group_field'])); 
if (in_array("Foo", $my_array)) {echo 'checked="checked"';}?> /> Foo<br />

问题

具体来说,从 MySQL $profile_table.check_group_field 中取出数组的最佳功能是什么,以便我可以在 in_array 条件中使用它作为 $my_array 来预填充复选框组中的复选框?我需要先炸掉数组吗?

示例资源

这是我引用的许多资源的一个示例;但是,我没有找到我需要解决的具体问题:

http://us1.php.net/in_array http://www.sitepoint.com/forums/showthread.php?577188-Retrieving-A-Checkbox-Array-from-MySql Populate checkbox from array

提前致谢!

【问题讨论】:

    标签: php mysql arrays checkbox explode


    【解决方案1】:
    $x=mysql_query("SELECT * FROM DB");
    while($y=mysql_fetch_array){ 
    echo "<input type='checkbox' name=".$y." value='Foo' >";
    }
    

    【讨论】:

      【解决方案2】:

      我会将复选框的值存储在一个数组中,并遍历 foreach 中的所有选项,并以与您使用的类似的方式检查该值是否在数组中。

      $options=array('Foo', 'Bar', 'Baz');
      $my_array = array(explode(", ", $profile_table['check_group_field']));
      foreach($options as $option){
          echo '<input type="checkbox" name="check_group[]" value="'.$option.'" ';
          if(in_array($option, $my_array)){
              echo 'checked="checked"';
          }
          echo '/>';
      }
      

      【讨论】:

        【解决方案3】:

        感谢您确认我在球场上!我更多地使用该功能,并通过推断发现了我的错误。

        $my_array = array(explode(", ", $profile_table['check_group_field']));是错的。

        Explode 创建一个数组,所以 array(explode... 是多余的。

        我认为声明应该是:

        $my_array = (explode(", ", $profile_table['check_group_field']));

        【讨论】:

          猜你喜欢
          • 2015-11-20
          • 2012-11-27
          • 1970-01-01
          • 2014-03-10
          • 1970-01-01
          • 1970-01-01
          • 2012-01-01
          • 1970-01-01
          • 2011-07-12
          相关资源
          最近更新 更多