問題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&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()
。如果他們不匹配,表單將不會處理。但是,我相信有一個更簡單的方法來實現這一點,並會感激任何意見!
只是使用SQL數據庫大聲笑,1爲勾號0爲未勾號,並添加信息 – Johny 2013-03-11 14:08:36
**問題2 **是一個完全不同的,幾乎沒有相關的問題。我會建議爲問題1獲得答案,然後(一旦你可以正確描述你的表格)發佈問題2的另一個問題。 – 2013-03-11 14:16:58
會這樣做,謝謝艾曼。我認爲這可能是可以在(大致)同一時間修復的,但我會一次發佈一個。 – Martin 2013-03-11 14:27:06