在web开发中,我们经常会遇到需要在页面中展示多选一的列表的需求。如何实现这一功能呢?我们可以使用MySQL来完成。下面我们来介绍一下如何使用MySQL实现多选一列表。
--by www.qzphp.cn CREATE TABLE `list` ( `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(50) NOT NULL, `is_checked` TINYINT(1) NOT NULL DEFAULT '0' ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如上所示,我们创建了一个名为list的表,里面包含了三个字段:id、name以及is_checked。其中,id是自增主键,用于标识每一条记录;name是列表项的名称;is_checked是用来判断这一项是否被选中的标记,0表示未选中,1表示选中。
接下来,我们可以向列表中添加一些数据:
--by www.qzphp.cn INSERT INTO `list` (`name`) VALUES ('选项1'); INSERT INTO `list` (`name`) VALUES ('选项2'); INSERT INTO `list` (`name`) VALUES ('选项3'); INSERT INTO `list` (`name`) VALUES ('选项4'); INSERT INTO `list` (`name`) VALUES ('选项5');
现在,我们可以在页面中展示这个多选一的列表了。一种常见的展示方式是使用HTML的input标签,并将type属性设置为radio。此时,只能选择一个选项。代码如下:
--by www.qzphp.cn <form action="submit.php" method="post"> <?php $result = mysqli_query($link, "SELECT * FROM `list`"); while ($row = mysqli_fetch_assoc($result)) { if ($row['is_checked'] == 1) { $checked = ' checked="checked"'; } else { $checked = ''; } echo '<input type="radio" name="list" value="' . $row['id'] . '"' . $checked . '> ' . $row['name'] . '<br/>'; } ?> <input type="submit" value="提交"></form>
上述代码会从数据库中查询出所有列表项,然后依次输出到页面中。如果该项被标记为is_checked为1,则勾选该选项。当用户提交表单之后,我们可以通过POST方式获取用户选择的选项。
代码如下:
--by www.qzphp.cn if ($_SERVER['REQUEST_METHOD'] == 'POST') { $list = $_POST['list']; mysqli_query($link, "UPDATE `list` SET `is_checked` = 0"); mysqli_query($link, "UPDATE `list` SET `is_checked` = 1 WHERE `id` = " . $list); }
以上代码会将用户提交的选项作为参数,先将所有选项的is_checked标记为0,再将用户选中的选项的is_checked标记为1。这样,我们就完成了MySQL实现多选一列表的功能。