在MySQL中存储第二个复选框的值

时间:2013-01-04 11:56:41

标签: php mysql arrays forms checkbox

我已经尝试过为此找到答案 - 我希望它很容易修复。

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

2 个答案:

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

这会将您的午餐变量存储为YesNo - 这会有效但存储布尔值1 or 0会更有效。

答案 1 :(得分: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; 

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;
}