PHP では、ASP のように、同じ名前の複数のチェックボックス情報を自動的に配列に変換することができないため、使用する際に若干の不便さが生じます。しかし、JavaScript を使用して前処理を行うという解決策はまだあります。同じ名前の複数のチェックボックスが JavaScript の配列形式でまだ存在するため、フォームを送信する前に、JavaScript を使用してチェックボックス内の情報を文字配列に結合し、それをフォーム内の非表示要素に割り当てることができます。 PHP を使用します。explode 関数はこの配列を解析して、チェック ボックスの情報を転送できるようにします。以下に例を示します。
次のようなフォームがあるとします。
<form name="form1" id="form1" method="post" action="myphp.php" onSubmit="return Checker()">
<input type="checkbox" name="item" value="1">1<br>
<input type="checkbox" name="item" value="2">2<br>
<input type="checkbox" name="item" value="3">3<br>
<input type="checkbox" name="item" value="4">4<br>
<input type="hidden" name="items" value="">
<input type="submit" value="submit">
</form>
このフォームには 4 つのチェック ボックスがあり、その名前はすべて項目です。ユーザーが [送信] ボタンをクリックすると、Checker 関数が呼び出され、Checker が true を返した場合、フォームは送信されます。フォームは送信されません。ここでの Checker 関数は、これから作成する前処理関数です。 HTML のヘッダー セクションに次の JavaScript を追加します:
<script language="javascript">
<!--
関数チェッカー()
{
form1.items.value = "";
if ( !form1.item.length ) // チェックボックスは 1 つだけです、form1.item.length = unknown
{
if (form1.items.checked)
form1.items.value = form1.item.value;
}
それ以外
{
for ( i = 0 ; i < form1.item.length ; i++ )
{
if (form1.item(i).checked) // チェックボックスにチェックが入っています {
form1.items.value = form1.item(i).value;
for ( j = i + 1 ; j < form1.item.length ; j++ )
{
if (form1.item(j).checked)
{
form1.items.value += " "; //区切り文字としてスペースを使用します form1.items.value += form1.item(j).value;
}
}
壊す;
}
}
}
true を返します。
}
-->
</script>
を使用します
。
$items =explode(" ", $HTTP_POST_VARS["items"]);
これらのオプションは配列に分割できます。オプションの値には区切り文字 (ここではスペース) を含めることはできないことに注意してください。