2013-01-16 88 views
0

我創建了一個表單來從主類別中選擇類別項目。在這裏我使用複選框來選擇類別項目。在我的形式中有許多主要類別,並有其自己的子類別。示例課程及其主題。每個選中的複選框計數

有了這個表格,我需要檢查爲一個類別選擇了多少個子項目。而且我還需要查看在所有主類別中至少選擇了一個子類別,並且如果可以,最多可以限制10個子類別進行選擇。

我試過這樣的東西..但在這裏它的計數所有選定的子類別。

if (isset ($_POST['sub-category']) && is_array($_POST['sub-category'])) {  
    $totalCategory = count($_POST['sub-category']); 

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

     $_SESSION['sub-category'] = $_POST['sub-category'];     
     $url = BASE_URI . 'register.php'; // Define the URL:   
       header("Location: $url"); 
       exit(); // Quit the script.   

    } else {   
     echo 'ERROR: Please select atleast 1, not more than 10.';   
    }   
} else {     
    echo 'ERROR: Please select atleast one category.'; 
} 

UPDATE:

這是PHP我用從

echo "<input type='checkbox' value='{catId:subID}' name='subject{$lastCatId}[]' />{$lastCatName}"; 

生成它們的HTML生成這樣的事情..

<h3>Main Category 01 
    <input type='checkbox' value='3:4' name='subject3[]' />sub category 
    <input type='checkbox' value='3:6' name='subject3[]' />sub category 

<h3>Main Category 02 
    <input type='checkbox' value='4:6' name='subject4[]' />sub category 
    <input type='checkbox' value='4:2' name='subject4[]' />sub category 

<h3>Main Category 01 
    <input type='checkbox' value='5:8' name='subject5[]' />sub category 
    <input type='checkbox' value='5:4' name='subject5[]' />sub category 

問題是我怎麼弄子類別的價值分開,然後需要計數...

我希望有人幫助我... 謝謝。

回答

1

命名時複選框,請使用以下格式:

<input type="checkbox" name="subject[math][algebra]"> 
<input type="checkbox" name="subject[math][calculus]"> 
在PHP

<?php 
    $subjects = $_POST['subject']; 
    $math = $subjects['math']; 
    $algebra = $math['algebra']; 
... 

這是基本的想法。

+0

顯然,您需要確定在假設他們在那裏之前發佈了哪些值。 –

1

試試這個:

<h3>Main Category 01 
<input type='checkbox' value='sub_cat_1' name='main_cat_1_subject[]' />sub category1 
<input type='checkbox' value='sub_cat_2' name='main_cat_1_subject[]' />sub category2 
<input type='checkbox' value='sub_cat_3' name='main_cat_1_subject[]' />sub category3 
<input type='checkbox' value='sub_cat_4' name='main_cat_1_subject[]' />sub category4 

<h3>Main Category 02 
<input type='checkbox' value='sub_cat_1' name='main_cat_2_subject[]' />sub category1 
<input type='checkbox' value='sub_cat_2' name='main_cat_2_subject[]' />sub category2 
<input type='checkbox' value='sub_cat_3' name='main_cat_2_subject[]' />sub category3 
<input type='checkbox' value='sub_cat_4' name='main_cat_2_subject[]' />sub category4 

<h3>Main Category 01 
<input type='checkbox' value='sub_cat_1' name='main_cat_3_subject[]' />sub category1 
<input type='checkbox' value='sub_cat_2' name='main_cat_3_subject[]' />sub category2 
<input type='checkbox' value='sub_cat_3' name='main_cat_3_subject[]' />sub category3 
<input type='checkbox' value='sub_cat_4' name='main_cat_3_subject[]' />sub category4 

而且PHP:

if(isset($_POST['main_cat_1_subject']) && !empty($_POST['main_cat_1_subject'])){ 
    $main_cat_subjects = $_POST['main_cat_1_subject']; 
    //do the stuff. 
    foreach($main_cat_subjects as $index => $main_cat_subject){ 
     //Sub category items by index here. 
    } 
} else { 
    echo 'Please select atleast on subject for Main Category 1'; 
    //redirect or die 
} 

重複這個循環中的所有類別和$_POST陣列中更改名稱。

+0

我可以知道如何使用isset()單獨檢查選定的子類別項目。因爲我的複選框名稱的值是動態生成的。 – TNK

+0

檢查我更新的問題 – TNK

+0

您將爲每個類別獲得三個不同的數組。循環查看各個值。 –

1

更改HTML代碼

<h3>Main Category 01 
    <input type='checkbox' value='' name='sub_cat1[]' />sub category 
    <input type='checkbox' value='' name='sub_cat1[]' />sub category 
    <input type='checkbox' value='' name='sub_cat1[]' />sub category 
    <input type='checkbox' value='' name='sub_cat1[]' />sub category 

<h3>Main Category 02 
    <input type='checkbox' value='' name='sub_cat2[]' />sub category 
    <input type='checkbox' value='' name='sub_cat2[]' />sub category 
    <input type='checkbox' value='' name='sub_cat2[]' />sub category 
    <input type='checkbox' value='' name='sub_cat2[]' />sub category 

<h3>Main Category 01 
    <input type='checkbox' value='' name='sub_cat3[]' />sub category 
    <input type='checkbox' value='' name='sub_cat3[]' />sub category 
    <input type='checkbox' value='' name='sub_cat3[]' />sub category 
    <input type='checkbox' value='' name='sub_cat3[]' />sub category 

並提交表單,這會給你出把

$count_cat1 = count($_POST['sub_cat1']); 
$count_cat2 = count($_POST['sub_cat2']); 
$count_cat3 = count($_POST['sub_cat3']); 

你可以把它放在一個循環,以減少代碼的長度。

+0

我的表單是通過循環動態創建的。然後我如何在我的表單中命名複選框。 – TNK

+0

我使用category_id和sub-category_id(2:4)作爲複選框中的值.. – TNK

+0

在你的循環名稱中改變名稱=「sub_cat <?php echo $ cat_id;?> []」 –