0

簡単な質問です。

ペアになっている動的チェックボックスとテキストボックスの両方を含むフォームがあります。フォームを送信して $_POST 情報を print_r すると、次のようになります。

    Array
(
    [chkname_156] => chkname_156
    [txtID_156] => 
    [chkname_157] => chkname_157
    [txtID_157] => 
    [doChooseAppSvc] => doChooseAppSvc
)

上記のように、チェックボックスはオンになっていますが、txtID は空です。私が達成しようとしているのはこれです。チェックボックスが存在する場合、つまりチェックされていることを意味しますが、テキストボックスが空である場合は、ユーザーに警告する必要があります。それぞれが動的であるため、アンダースコアの後の数字は変わりますが、名前の先頭は同じままです。

次のことを行うことで、解決策の半分が得られたと思います。チェック済みのチェックボックスの配列を作成するために preg_grep を使用しています。これがそのコードです。

$pm = preg_grep("/^chkname.*/", $p);

今、私は立ち往生しています。どんな助けでも大歓迎です。

4

1 に答える 1

0

フォームで配列を使用することをお勧めします。
値を比較しやすくなる場合があります。

例えば:

<input type="checkbox" name="chkname[<?=$id?>]" value="" />
<input type="text" name="txtID[<?=$id?>]" value="" />

次に、反復ごとに、次を確認できます。

if (isset($posted['chkname'][$id]) && $posted['txtID'][$id]=='') {
   // alert the user
}

編集:

入力をチェックするループの例を次に示します。

// loop through all text inputs
foreach ($posted['txtID'] as $id => $txtID_value) {

  // for each text input, validate against checkbox with the same $id
  if (isset($posted['chkname'][$id]) && $txtID_value!='') {

    // output an error message
    echo "<p>You checked box #$id but didn't fill in text input #$id.</p>";

  }

}
于 2013-10-17T00:01:26.617 に答える