郡から有名なスポーツを取得するために、このフォームを作成しました。
$sports = array (
'Australia' => array (
1 => 'Cricket',
2 => 'Foot Ball',
3 => 'Net Ball',
4 => 'Kabadi',
5 => 'Ragby',
6 => 'Basket Ball',
7 => 'Volley Ball',
),
'New Zealand' => array (
1 => 'Cricket',
2 => 'Foot Ball',
3 => 'Net Ball',
4 => 'Ragby',
5 => 'Basket Ball',
),
'England' => array (
1 => 'Cricket',
2 => 'Foot Ball',
3 => 'Net Ball',
4 => 'Ragby',
5 => 'Karom',
6 => 'Basket Ball',
7 => 'Table Tennis',
8 => 'Tennis',
),
);
echo '<br><form action="" method="post">';
foreach ( $sports AS $country => $sport ) {
echo "<h3>{$country}</h3\n";
foreach ($sport AS $k => $v) {
echo "<br /><input type='checkbox' name='country-sport[{$country}][]' value='{$k}' />{$v}\n";
}
}
echo "\n<br><input type='submit' value='go' />\n</form>";
私の問題は、これをいつ検証するかです。ここで、このフォーム検証でいくつかの条件を確認する必要があります。
- country-subject 配列が完全に空かそうでないか
- 各国が選択したかどうかについて、少なくとも 1 つまたは最大 3 つのスポーツ
これらの条件が満たされていない場合は、エラー メッセージを表示する必要があります。
私はこのようなことを試しました..このコードで、配列全体が空の場合の最初のエラーメッセージを取得できます..
更新:これはこれまでの私の検証コードです..
if ( isset($_POST['country-sport']) && is_array( $_POST['country-sport'])) {
foreach ( $_POST['country-sport'] AS $country => $sport) {
if ( count($sport) >= 1 && count($sport) <= 3) { //checking that it has 3 or more values.
//process
} else {
echo "select at leat 1 or upto 3 sports for {$country} ";
}
}
} else {
echo 'You have not selected sports for any country!';
}
UPDATE : with var_dump($_POST['country-sport']);
array(3) {
["Australia"]=>
array(3) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
}
["New Zealand"]=>
array(3) {
[0]=>
string(1) "2"
[1]=>
string(1) "3"
[2]=>
string(1) "4"
}
["England"]=>
array(3) {
[0]=>
string(1) "6"
[1]=>
string(1) "7"
[2]=>
string(1) "8"
}
}