2

我已经尝试为此找到答案 - 我希望它会很容易解决。

我有一个带有事件列表的 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 ;
4

2 回答 2

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', ...)
}

这会将您的 lunch 变量存储为Yesor No- 这将起作用,但存储 boolean 会更有效1 or 0

于 2013-01-04T12:16:01.093 回答
0

您可以构建您的表格,如下所示:

<form name="abc" method="post">
<input type="checkbox" name="registrations[1]" value="1"> aa &nbsp; 
   <input type="checkbox" name="lunch[1]" value="1"> aa &nbsp; <br>
<input type="checkbox" name="registrations[2]" value="2"> BB &nbsp;
   <input type="checkbox" name="lunch[2]" value="2"> aa &nbsp;<br>
<input type="checkbox" name="registrations[3]" value="3"> CC &nbsp; 

啊  

提交时,您将获得如下值:

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;
}
于 2013-01-04T12:15:43.237 回答