2013-03-11 53 views
0

問題1:我有一個表單,其中包含從數據庫中提取的事件列表,旁邊有用於註冊出席者的複選框。有一個額外的複選框表示任何特殊要求,以及一個文本字段來詳細說明('如果是,請提供更多詳細信息...')。在HTML表單中使用多維數組

我想將客戶參加的每個事件存儲在包含事件ID,'是/否'的特定要求和任何此類要求的詳細信息的多維數組中。我以爲我是在軌道上:

<form id="bookingform" method="post" action="booking-details.php"> 
    <fieldset> 
     <legend>Personal information</legend> 

     <div class="bookingitem"> 
     <label for="firstname">First name</label> <input type="text" name="firstname" id= 
     "firstname" />*<br /> 
     </div> 

     <div class="bookingitem"> 
     <label for="surname">Surname</label> <input type="text" name="surname" id= 
     "surname" />*<br /> 
     </div> 

     <div class="bookingitem"> 
     <label for="company">Company</label> <input type="text" name="company" id= 
     "company" />*<br /> 
     </div> 
    </fieldset> 

    <fieldset> 
     <legend>Which exhibition(s)?</legend> 

     <div class="bookingitem"> 
     <?php 
     $venues_query="SELECT exhibitions.exhib_id AS exhib_id, venues.venue_name AS venue, DATE_FORMAT(exhibitions.exhib_date, '%d/%m/%y') AS date FROM venues, exhibitions WHERE exhibitions.venue_id = venues.venue_id AND (exhibitions.exhib_date>=CURDATE())ORDER BY exhibitions.exhib_date"; 
     $venues_result=mysql_query($venues_query); 
     while($venues=mysql_fetch_array($venues_result, MYSQL_ASSOC)){ 
     echo '<input type="checkbox" name="registrations['.$venues['exhib_id'].'][id]" /> '.$venues['venue'].' - '.$venues['date'].'<br/>'; 
     echo '<input type="checkbox" name="registrations['.$venues['exhib_id'].'][requirements]" />Special requirements?<br/>'; 
     echo 'If yes, please give more details... <input type="text" name="registrations['.$venues['exhib_id'].'][requirements_details]" />'; 
     } 
     mysql_close(); 
     ?> 
     </div> 
    </fieldset> 

    <fieldset> 
     <legend>Terms and conditions:</legend> 

     <p>T&amp;Cs here</p> 

     <div> 
     <input type="submit" class="buttons" name="submit" value="Submit" /> 
     </div> 
    </fieldset> 
    </form> 

...但是當我做var_dump($_POST['registrations']);,我只得到:

array(4) { [0]=> string(5) "00132" [1]=> string(5) "00140" [2]=> string(5) "00135" [3]=> string(5) "00136" } 

的五位數字是事件ID,從拉數據庫(我在本例中已經註冊了四個事件),但其他信息看起來並沒有被存儲。我期望它是非常明顯的,但任何人都可以知道我要去哪裏錯了嗎?

我希望能夠遍歷通過使用下面的代碼值(as per this example here):

foreach ($_POST['registrations'] as $registration) 
    { 
     echo '$registration[id]'; 
     echo '$registration[requirements]'; 
     echo '$registration[requirements_details]'; 

     // etc 
    } 

問題2:我想確保當有特殊要求複選框被選中,細節框也填寫完畢。以前,我爲表單的每個部分都有三個單獨的數組,並且在滴答數量和完成的輸入框數量上做了count()。如果他們不匹配,表單將不會處理。但是,我相信有一個更簡單的方法來實現這一點,並會感激任何意見!

+0

只是使用SQL數據庫大聲笑,1爲勾號0爲未勾號,並添加信息 – Johny 2013-03-11 14:08:36

+0

**問題2 **是一個完全不同的,幾乎沒有相關的問題。我會建議爲問題1獲得答案,然後(一旦你可以正確描述你的表格)發佈問題2的另一個問題。 – 2013-03-11 14:16:58

+0

會這樣做,謝謝艾曼。我認爲這可能是可以在(大致)同一時間修復的,但我會一次發佈一個。 – Martin 2013-03-11 14:27:06

回答

0

當我嘗試,我相信你是什麼結果HTML,我得到了來自print_r的以下內容:

Array 
(
    [registrations] => Array 
     (
      [11111] => Array 
       (
        [id] => on 
        [requirements] => on 
        [requirements_details] => 1 
       ) 

      [22222] => Array 
       (
        [id] => on 
        [requirements] => on 
        [requirements_details] => 2 
       ) 

      [33333] => Array 
       (
        [id] => on 
        [requirements] => on 
        [requirements_details] => 3 
       ) 

      [44444] => Array 
       (
        [id] => on 
        [requirements] => on 
        [requirements_details] => 4 
       ) 

      [55555] => Array 
       (
        [id] => on 
        [requirements] => on 
        [requirements_details] => 5 
       ) 

     ) 

) 

你可以更新的完整形式產生的HTML你的問題?

+0

謝謝@CaptainPayalytic。我已經更新了原來的問題。 – Martin 2013-03-11 14:25:31

+0

不是我問你的東西沒有!我詢問了「爲完整表單生成的HTML」。您剛剛在php文件中添加了更多內容。請添加實際製作的HTML。 – 2013-03-11 14:45:02