簡體   English   中英

復選框,檢查數據庫數據

[英]checkbox check with database data

我有兩個mysql表,如下所示。 我使用PHP和MySQL

CREATE TABLE IF NOT EXISTS `subject_category` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`sid` int(5) DEFAULT NULL,
`category` varchar(50) DEFAULT NULL,
`subject` varchar(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=191 ;

INSERT INTO `subject_category` (`id`, `sid`, `category`, `subject`) VALUES
(1, 1, 'GCE O/L', 'Sinhala'),
(2, 2, 'GCE O/L', 'Development Studies'),
(3, 3, 'GCE O/L', 'History'),
(4, 4, 'GCE O/L', 'Mathematics'),
(5, 5, 'GCE O/L', 'Citizan Education'),

CREATE TABLE IF NOT EXISTS `user_subjects` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`uid` bigint(20) NOT NULL,
`usid` int(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=43 ;

INSERT INTO `user_subjects` (`id`, `uid`, `usid`) VALUES
(11, 142247454430186, 1),
(12, 142247454430186, 3),
(13, 142247454430186, 5)

實際上我需要的是,需要使用第一個表數據創建復選框數組。 這部分已經完成了。 然后我需要檢查特定user_subject.uid與第二個表(subject_category.id = user_subjects.usid)的復選框匹配

最后,我需要5個復選框來存儲第一張表中的數據,並且其中3個已選擇到第二張表中的值

請幫我解決這個問題

我認為你從錯誤的方式開始,你應該分1步,而不是分兩步。

你需要的mysql查詢是:

$query = 'SELECT sc.subject, CASE WHEN us.id IS NULL THEN "" ELSE "checked" AS checked
 FROM subject_category sc
  LEFT JOIN user_subjects us ON (us.usid = sc.id)';

使用此查詢的結果,您應該能夠立即生成已選中和未選中的復選框。

注意:我不知道您需要哪些列,如果在連接中需要sc.id或sc.sid,但我認為您可以使用此示例創建正確的查詢。

下一步PHP(使用mysql_ *函數作為TS請求注釋,我知道你應該使用PDO或mysqli):

$result = mysql_query($query);
while ($line = mysql_fetch_assoc($result)){
  echo '<input type="checkbox" checked="'.$line['checked'].'" name="subject" value="'. $line['subject'] .'" /> '.$line['subject'];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM