Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要通过mysql结果检查html复选框_Php_Javascript_Html_Mysql - Fatal编程技术网

Php 需要通过mysql结果检查html复选框

Php 需要通过mysql结果检查html复选框,php,javascript,html,mysql,Php,Javascript,Html,Mysql,我的需要是通过mysql选择结果选中一个复选框 这是我的mysql表 username | hobbies ---------------------------- abc | reading painting 当我选择用户名“abc”并提交时,它会进入编辑页面 在那个页面中,我需要编辑爱好 <html> <body> <input type="checkbox" name="hobbies[]" value="re

我的需要是通过mysql选择结果选中一个复选框

这是我的mysql表

username | hobbies              
----------------------------
abc      | reading painting     
当我选择用户名“abc”并提交时,它会进入编辑页面

在那个页面中,我需要编辑爱好

<html>
<body>
<input type="checkbox" name="hobbies[]" value="reading">Reading
<input type="checkbox" name="hobbies[]" value="painting">painting
<input type="checkbox" name="hobbies[]" value="gaming">gaming
</body>
<html>

阅读
绘画
游戏

当我在阅读和绘画中选择“abc”时,只需选中第一个和第二个复选框……我如何使用php、mysql做到这一点???请帮助……

您必须使用以下HTML标记:

<input type="checkbox" name="hobbies[]" value="reading" checked="checked" />

您必须使用如下HTML标记:

<input type="checkbox" name="hobbies[]" value="reading" checked="checked" />

首先拆分数据库记录以分离数组项

<?php
    $hobbies = explode(" ", $mysql_result['hobbies']);
?>

然后检查数组中是否包含每个值,并将复选框设置为选中

<input type="checkbox" name="hobbies[]" value="reading" <?php if(in_array("reading", $hobbies)) echo "checked=\"checked\""; ?>>Reading

首先拆分数据库记录以分离数组项

<?php
    $hobbies = explode(" ", $mysql_result['hobbies']);
?>

然后检查数组中是否包含每个值,并将复选框设置为选中

<input type="checkbox" name="hobbies[]" value="reading" <?php if(in_array("reading", $hobbies)) echo "checked=\"checked\""; ?>>Reading

考虑更改您的模式。每个字段都应该是原子的,只有一个值

创建爱好表、更改用户表、添加表以启用用户和爱好之间的多对多关系。创建一个视图,显示用户的爱好

这意味着您将能够执行如下查询

select * from `hobby` ; -- means your hobby check box can now be created dynamically
select * from `username_hobby` where username_id = 1 ; -- means you already have the username hobbies as separate elements.
有关数据标准化的更多详细信息=>

sqlfiddle示例

下面是建议的模式

DROP TABLE IF EXISTS `hobby`;

CREATE TABLE `hobby` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `hobby` varchar(31) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `hobby` (`id`, `hobby`)
VALUES
    (1,'reading'),
    (2,'painting'),
    (3,'gaming');

DROP TABLE IF EXISTS `username`;

CREATE TABLE `username` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(31) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `username` (`id`, `username`)
VALUES
    (1,'abc');


DROP VIEW IF EXISTS `username_hobbies_view`;

CREATE TABLE `username_hobbies_view` (
   `username` VARCHAR(31) DEFAULT '',
   `hobby` VARCHAR(31) DEFAULT NULL,
   `username_id` INT(11) UNSIGNED NOT NULL,
   `hobby_id` INT(11) UNSIGNED NOT NULL
) ENGINE=MyISAM;

DROP TABLE IF EXISTS `username_hobby`;

CREATE TABLE `username_hobby` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username_id` int(11) unsigned NOT NULL,
  `hobby_id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `username_relationship` (`username_id`),
  KEY `hobby_relationship` (`hobby_id`),
  CONSTRAINT `hobby_relationship` FOREIGN KEY (`hobby_id`) REFERENCES `hobby` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `username_relationship` FOREIGN KEY (`username_id`) REFERENCES `username` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `username_hobby` (`id`, `username_id`, `hobby_id`)
VALUES
    (1,1,1),
    (2,1,2);

DROP TABLE `username_hobbies_view`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `username_hobbies_view`
AS SELECT
   `username`.`username` AS `username`,
   `hobby`.`hobby` AS `hobby`,
   `username_hobby`.`username_id` AS `username_id`,
   `username_hobby`.`hobby_id` AS `hobby_id`
FROM ((`username` join `username_hobby` on((`username`.`id` = `username_hobby`.`username_id`))) join `hobby` on((`hobby`.`id` = `username_hobby`.`hobby_id`)));

考虑更改您的模式。每个字段都应该是原子的,只有一个值

创建爱好表、更改用户表、添加表以启用用户和爱好之间的多对多关系。创建一个视图,显示用户的爱好

这意味着您将能够执行如下查询

select * from `hobby` ; -- means your hobby check box can now be created dynamically
select * from `username_hobby` where username_id = 1 ; -- means you already have the username hobbies as separate elements.
有关数据标准化的更多详细信息=>

sqlfiddle示例

下面是建议的模式

DROP TABLE IF EXISTS `hobby`;

CREATE TABLE `hobby` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `hobby` varchar(31) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `hobby` (`id`, `hobby`)
VALUES
    (1,'reading'),
    (2,'painting'),
    (3,'gaming');

DROP TABLE IF EXISTS `username`;

CREATE TABLE `username` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(31) DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `username` (`id`, `username`)
VALUES
    (1,'abc');


DROP VIEW IF EXISTS `username_hobbies_view`;

CREATE TABLE `username_hobbies_view` (
   `username` VARCHAR(31) DEFAULT '',
   `hobby` VARCHAR(31) DEFAULT NULL,
   `username_id` INT(11) UNSIGNED NOT NULL,
   `hobby_id` INT(11) UNSIGNED NOT NULL
) ENGINE=MyISAM;

DROP TABLE IF EXISTS `username_hobby`;

CREATE TABLE `username_hobby` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username_id` int(11) unsigned NOT NULL,
  `hobby_id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `username_relationship` (`username_id`),
  KEY `hobby_relationship` (`hobby_id`),
  CONSTRAINT `hobby_relationship` FOREIGN KEY (`hobby_id`) REFERENCES `hobby` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `username_relationship` FOREIGN KEY (`username_id`) REFERENCES `username` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `username_hobby` (`id`, `username_id`, `hobby_id`)
VALUES
    (1,1,1),
    (2,1,2);

DROP TABLE `username_hobbies_view`;

CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `username_hobbies_view`
AS SELECT
   `username`.`username` AS `username`,
   `hobby`.`hobby` AS `hobby`,
   `username_hobby`.`username_id` AS `username_id`,
   `username_hobby`.`hobby_id` AS `hobby_id`
FROM ((`username` join `username_hobby` on((`username`.`id` = `username_hobby`.`username_id`))) join `hobby` on((`hobby`.`id` = `username_hobby`.`hobby_id`)));


当我应用你的代码时,我得到一个警告…警告:in_array()期望参数2是数组,字符串在C:\wamp\www\first我编码$paym=explode(“,$hby”);变量$hby是mysql result…在此之后,我使用了foreach($paym as$k){echo$k;},$k存储字段中的所有元素,即读取和绘制…我使用了if(在数组中(“读取”,“k”)echo“checked=\”checked\”;?>在复选框中…但是得到警告…请帮助…你也做了第一步吗?它通过使用空格字符将包含爱好字段的mysql结果拆分为一个数组。您需要检查该值是否在数组中,因此在您的情况下:
if(在数组中(“reading”,$paym))
确保您可以在javascript中执行此操作。将结果解析为json,使用jquery循环json结果,并根据值选择相应的复选框。当我应用ur代码时,我得到一个警告…警告:in_array()期望参数2是数组,字符串在C:\wamp\www\first i coded$paym=explode(“,$hby)”中给出;变量$hby是mysql result…在此之后,我使用了foreach($paym as$k){echo$k;},$k存储字段中的所有元素,即读取和绘制…我使用了if(在数组中(“读取”,“k”)echo“checked=\”checked\”;?>在复选框中…但是得到警告…请帮助…你也做了第一步吗?它通过使用空格字符将包含爱好字段的mysql结果拆分为一个数组。您需要检查该值是否在数组中,因此在您的情况下:
if(在数组中(“reading”,$paym))
确保您可以在javascript中执行此操作。将结果解析为json,使用jquery循环json结果,并根据值选择相应的复选框。确实要这样保存这些结果吗?如果一个爱好被引入一个空间,比如“骑自行车”或者类似的东西呢。我会选择一种关系方法,将它们保存在一个单独的表中,或者至少用
分隔这些值字符首先将数据正常化。是否确实要这样保存爱好?如果一个爱好被引入一个空间,比如“骑自行车”或者类似的东西呢。我会选择一种关系方法,将它们保存在一个单独的表中,或者至少用
分隔这些值字符首先规范化数据。thanx 4 ur reply bro…这里我的复选框不是动态创建的…复选框已经用html创建,我需要用mysql结果选中这些复选框。@vyshakh硬编码导致难以维护。当增加另一个爱好时会发生什么?如果有人要法文版怎么办?如果您有一个web浏览器以外的其他应用程序来处理数据,会发生什么情况?完全正确…如果在字段中添加了另一个爱好,编辑html代码将非常困难…但我认为在这种情况下不再需要添加其他爱好…您不妨现在@vyshakh学习数据规范化。您当前的方法将在将来给您带来问题。thanx 4 ur reply bro…这里我的复选框不是动态创建的…已经用html创建了复选框,我需要用mysql结果选中这些复选框。@vyshakh硬编码导致难以维护。当增加另一个爱好时会发生什么?如果有人要法文版怎么办?如果您有一个web浏览器以外的其他应用程序来处理数据,会发生什么情况?完全正确…如果在字段中添加了另一个爱好,编辑html代码将非常困难…但我认为在这种情况下不再需要添加其他爱好…您不妨现在@vyshakh学习数据规范化。您当前的方法将在将来给您带来问题。