0

クライアントデータを取得してチェックボックスグループを作成する次のクエリがあります。選択したチェックボックスを個別の行としてデータベースに追加する必要がありますが、これまでに行ったことがないため、これを記述する方法がわかりません。チェックボックスの数が異なるため、混乱しています。

res=mysql_query('SELECT id,name FROM tbl_client WHERE active="1" ORDER BY name DESC',$dbh) or die(mysql_error());
num=mysql_num_rows($res);
for($run=0; $run<$num; $run++)
{
val=mysql_fetch_row($res);
echo '<label><input type="checkbox" name="CheckboxGroup1" value="'.$val[0].'" id="CheckboxGroup1_0" />'.$val[1].'</label><br />';
}

チェックボックスを送信するときに、データベースの個々の行にチェックボックスを追加するにはどうすればよいですか? ある種のForeachステートメントを使用できると思いますが、その方法がわかりません。

4

2 に答える 2

1

必要なのは、配列を使用することです。つまり、入力フィールドの名前の末尾に左角[括弧と右角括弧を付けることを意味します]...

<label><input type="checkbox" name="CheckboxGroup[]" /></label><br />

これが行うことは、フォームが PHP スクリプトに送信されるときに、(フォームが使用するメソッドに応じて)またはスーパー グローバルCheckboxGroupで名前が付けられた配列を作成することです。したがって、HTML にこれらの入力要素が 1 つまたは 1000 ある場合、それらはすべてPHP で -- または $_GET -- の下に入力され、次のように反復処理できます...$_POST$_GET $_POST['CheckboxGroup']

foreach ($_POST['CheckboxGroup'] as $checkbox) {
    /* do whatever you want with $checkbox here */
}

チェックボックスの値は、チェックされている場合にのみ UA によってリクエストで送信されることに注意してください。また、mysql_* 関数を使用して PHP の mysql データベースとやり取りしないでください。これは非推奨であり、PHP の将来のバージョンから削除される予定です。新しいアプリケーションの場合は、MySQLiまたはPDOを使用して、PHP で mysql データベースとやり取りすることを検討してください。

于 2012-12-16T15:27:29.727 に答える
0

HTML フォームでは、チェックボックスとラジオ コントロールは、クライアントによって起動されない場合、リクエストに含まれないという点で独特です。そのため、スクリプトは事前にどのチェックボックスが期待されるかを知っている必要があります。type=text、submit などの入力では、データ文字列が空であっても、リクエストには名前付きコントロールが含まれます。

この種のことを達成するには、いくつかの方法があります。次のように、名前付き要素の有無にかかわらず、チェックボックスの配列を作成できます。

<input type="checkbox" name="color[orange]" />Orange
<input type="checkbox" name="color[green]"  />Green

チェックボックス要素と同じ名前の type=hidden フォーム要素を提供することもできます。同じ名前の最後のフォーム要素が、リクエストで提示されるものです。これを行うことで、常に予測可能な数の要素を持つことができます。チェックボックスが起動されていない場合、非表示の値がリクエストに含まれます。クライアントがチェックボックスを選択した場合、チェックボックスの値が表示されます。

チェックボックスのテストを、これを示す PHP スクリプトに送信するフォームを設定してみてください (ここに全体を示します)。

<?php var_dump($_POST);
于 2012-12-16T15:40:08.727 に答える