0

'name =category[]'という同じ名前の一連のチェックボックスを含むフォームがあります。次に、ユーザーが選択したチェックボックスの数を数える必要があります。さらに、少なくとも1つのチェックボックスが選択されているか、最大10のチェックボックスが選択されているかを確認する必要があります。

これは私がこれまでに試みている方法です...

if ( isset ( $_POST['category']) {

  if (( sizeof( $_POST['category']) == 10 || sizeof( $_POST['category']) <= 10 )) {

     // form processing....

  } else {

      echo 'Atleast 1, not more than 10 categories.';
  }

} else {

  echo 'Please select atleast one category.';

}

このタスクを実行する別の方法があると誰かに教えてもらえますか?つまり、この2つのエラーを取得するには...

4

2 に答える 2

1

入力配列を処理するときは、それが配列であると同時にissetであることを確認することをお勧めします。

if (isset($_POST['category']) && is_array($_POST['category'])) {

  $totalChecked = count($_POST['category']);

  if ($totalChecked >= 1 && $totalChecked <= 10) {

     // form processing....

  } else {
      echo 'Atleast 1, not more than 10 categories.';
  }

} else {
  echo 'Please select atleast one category.';
}
于 2013-01-11T11:17:44.907 に答える
1

あなたの質問に従って、あなたは選択されたチェックボックスの数だけをチェックしたいです。

私の知る限り、チェックボックスの値は「オン」または「オフ」のいずれかです。「category」という名前をカウントすると、クリックされたかどうかに関係なく、ページに表示されるすべてのチェックボックスカウントが表示されます。

だからそれを除外して数える

if条件が開始する前にこの関数を置きます。フォーマットされたコード...


    function nonzero($var) {
        return $var !="off" ? "on" :'';
    }
    if ( isset ( $_POST['category']) { 
        $_POST['category'] = array_filter($_POST['category'], 'nonzero');
        if ( sizeof( $_POST['category'] ) >= 1 //check of at-least one is checked
             && sizeof( $_POST['category'] ) <= 10 ) { //check for at-most 10 is checked
            form processing();
        } else { 
            echo 'At-least 1, not more than 10 categories.'; 
        } 
    } else { 
        echo 'Please select at-least one category.'; 
    } 
于 2013-01-11T11:40:34.360 に答える