1

送信されたときにチェックボックスがたくさんあります(チェックされている場合)。値が配列に追加され、シリアル化されてから、データベースに1行で保存されます。

次に、適切なチェックボックスがオンになっている編集ページにチェックボックスを表示したいと思います。

現在、チェックボックスをそのまま出力しています...

HTML

6 w <input type="checkbox" name="size[]" value="6 w">
7 w <input type="checkbox" name="size[]" value="7 w">
8 w <input type="checkbox" name="size[]" value="8 w">

チェックした値をエコーアウトしようとしましたが、正しい値をチェックする方法がわかりません。これは私が出会ったサイトからの1つの提案でした...

HTML

6 w <input type="checkbox" name="size[]" value="6 w" <? echo $checked['6 w'] ?> >
7 w <input type="checkbox" name="size[]" value="7 w" <? echo $checked['7 w'] ?> >
8 w <input type="checkbox" name="size[]" value="8 w" <? echo $checked['8 w'] ?> >

PHP

$size = unserialize($row["size"]);        
$array = "";
foreach($size as $size_available)
{
  $array .= "$size_available,";
}
  $array_explode = explode(',',$array);

    //$checked = "";
    foreach ($array_explode as $v){
    $checked[$v] = "checked='CHECKED'";
}

これは、正しいチェックボックスがチェックされていることを示してほぼ機能しますが、配列に格納されていないチェックボックスは、未定義のインデックスエラーを出します。空の変数を出力しているので推測しています???

ここからどこに行くべきか、またはこれをより良い方法で行う方法についての提案はありますか?

乾杯

4

2 に答える 2

1

isset()-でアクセスする前に、インデックスが設定されていることを確認します

<? echo (isset($checked['8 w']))? $checked['8 w'] : "" ?>
于 2012-09-24T04:27:09.770 に答える
0

これを変える:

foreach($size as $size_available)

このため:

foreach($_REQUEST['size'] as $size_available)

unserializeコマンドは必要ありません。

于 2012-09-24T04:27:58.673 に答える