0

在我的 MySQL 数据库中,我有一个这样的表:

Column      Value
----------------------------------
Id          int pk autoinc
Name        varchar(50)
Choices     set('a', 'b', 'c', ...)
...         ...

更新此数据时,我希望显示许多复选框,每个复选框代表一个选项成员。每个复选框都是在 PHP 中创建的,类似于:

echo "<input type=Checkbox name=$choiceName[i] value=$choiceName[i]>"

我的问题是如何为表中的特定 ID 创建这些复选框并填充它们(通过检查与否)。

4

2 回答 2

4

我终于找到了解决方案。

为了在数据类型的列Choice中获取允许的值。set您必须执行以下操作:

  $result = mysql_query("SHOW COLUMNS FROM Table LIKE 'Choice'");
  $line = mysql_fetch_array($result);
  //Remove the unwanted characters from the Type
  $set = substr($line['Type'],5,strlen($line['Type'])-7);
  //An array containing all allowed members from the Choice set
  $choices = preg_split("/','/",$set);

  $result = mysql_query("SELECT * FROM Table WHERE Id=$someId");
  $row = mysql_fetch_row($result);
  $selected = explode(',', $row[$indexOfChoicesColumn]);
  $j=0;
  for($i=0; $i<count($days); $i++){
     if($j<count($selected) && $selected[$j] == $choices[$i]){
        echo $choices[$i]." <input type='checkbox' name='choices[]' value='". $choices[$i] ."' checked> ";
        $j++;
     }
     else echo $choices[$i]." <input type='checkbox' name='choices[]' value='". $choices[$i] ."'> ";
  }
于 2013-02-22T22:41:30.153 回答
0

例子:

//or you can obtain $choices = $row['Choices']; from  your DB, its the same 

$choices = "Example1,Example4,Example10";
$arrChoices = explode(',', $choices);

foreach ($arrChoices as $key => $value) {
echo "<input type='checkbox' name='$value' value='$value'/>";
}

萨卢多斯 ;)

于 2013-02-22T20:30:43.557 回答