0

私のMySQLデータベースには、次のようなテーブルがあります。

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

このデータが更新されているとき、Choicesのメンバーを表す各チェックボックスとともに多くのチェックボックスが表示されるようにしたいと思っています。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'/>";
}

Saludos;)

于 2013-02-22T20:30:43.557 に答える