1

私の必要性は、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」を選択すると、最初と2番目のチェックボックスだけをチェックする必要があります...どうすればphp、mysqlでそれを行うことができますか??? 助けてください.....

4

4 に答える 4

1

最初にデータベース レコードを分割して配列エントリを分離します

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

次に、配列に値が含まれているかどうかを各値で確認し、チェックボックスをオンに設定します

<input type="checkbox" name="hobbies[]" value="reading" <?php if(in_array("reading", $hobbies)) echo "checked=\"checked\""; ?>>Reading
于 2013-03-06T19:27:10.690 に答える
0

以下のように HTML タグを使用する必要があります。

<input type="checkbox" name="hobbies[]" value="reading" checked="checked" />
于 2013-03-06T19:23:18.283 に答える
0
<input type="checkbox" name="hobbies[]" value="reading" <?php echo status;?>>Reading

次に、PHP で SQL クエリに基づいてチェック ボックスのステータスを判断し、それを変数に格納します。

status
于 2013-03-06T19:24:42.700 に答える
0

スキーマの変更を検討してください。各フィールドはアトミックであると想定されています - 1 つの値を持ちます。

趣味テーブルを作成し、ユーザー テーブルを変更し、テーブルを追加して、ユーザーと趣味の間の多対多の関係を有効にします。ユーザーの趣味を示すビューを作成します。

これは、次のようなクエリを実行できることを意味します。

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.

データ正規化の詳細 => https://www.google.com.au/search?q=atomic+data+normalization

sqlfiddle の例http://sqlfiddle.com/#!2/5cdef/1/0

以下の推奨スキーマ。

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`)));
于 2013-03-06T19:48:01.600 に答える