我已经尝试过为此找到答案 - 我希望它很容易修复。
我有一个带有事件列表的HTML表单,每个事件都有一个复选框(name="registrations[]"
和从数据库中提取的ID作为值)。客户可以勾选任意数量的方框,以表明他们是否想参加。
每个事件旁边都是第二个复选框(name="lunch[]"
),客户可以用它来表明他们是否需要在该活动中吃午餐。
现在,我可以使用以下方法将多个事件插入数据库:
foreach ($_POST['registrations'] as $registration) {
/// do database work
}
($registration
用于存储每次预订的事件ID。
我的问题是:如何在数据库中存储第二个复选框的值?一如既往地感谢您的帮助。
编辑 - 数据库架构,按要求:
CREATE TABLE IF NOT EXISTS `bookings2` (
`booking_id` int(5) unsigned zerofill NOT NULL AUTO_INCREMENT,
`contact` varchar(150) NOT NULL DEFAULT '',
`company` varchar(150) NOT NULL DEFAULT '',
`service` varchar(50) NOT NULL DEFAULT '',
`telephone` varchar(50) NOT NULL DEFAULT '',
`email` varchar(150) NOT NULL DEFAULT '',
`website` varchar(250) NOT NULL DEFAULT '',
`address` text NOT NULL,
`cars` char(2) DEFAULT NULL,
`size` varchar(10) DEFAULT NULL,
`advertising` varchar(15) NOT NULL DEFAULT '',
`display` char(3) DEFAULT NULL,
`bag` char(3) DEFAULT NULL,
`lunch` char(3) DEFAULT NULL,
`masterclass` char(3) DEFAULT NULL,
`other_info` text,
`promo_code` varchar(50) NOT NULL,
`electric` char(3) DEFAULT NULL,
`event_id` varchar(100) NOT NULL DEFAULT '',
`booking_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`booking_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=104 ;
答案 0 :(得分:1)
将午餐复选框的值设置为事件ID - 就像使用注册复选框一样。
foreach ($_POST['registrations'] as $registration) {
$lunch = in_array($registration, $_POST['lunch']) ? 'Yes' : 'No';
// do the insert with $lunch variable which is now Yes or No
// INSERT INTO bookings2 (...) VALUES (..., '$lunch', ...)
}
这会将您的午餐变量存储为Yes
或No
- 这会有效但存储布尔值1 or 0
会更有效。
答案 1 :(得分:0)
你可以像下面那样建立你的形式:
<form name="abc" method="post">
<input type="checkbox" name="registrations[1]" value="1"> aa
<input type="checkbox" name="lunch[1]" value="1"> aa <br>
<input type="checkbox" name="registrations[2]" value="2"> BB
<input type="checkbox" name="lunch[2]" value="2"> aa <br>
<input type="checkbox" name="registrations[3]" value="3"> CC
aa
在提交时,您将获得如下值:
Array
(
[lunch] => Array
(
[1] => 1
[2] => 2
[3] => 3
)
[registrations] => Array
(
[2] => 2
[3] => 3
)
[submit] => submit
)
比你可以循环你的php foreach像 -
foreach ($_POST['registrations'] as $key=>$registration) {
//you can access lunch value as
$lunch = isset($_POST['lunch'][$key]) ? $_POST['lunch'][$key] : 0;
}