我在这里说实话 - 我很确定我不是从最好的方法来解决这个问题 我有一个我正在开发的调查软件,它允许所有者构建不同输入类型的问题(文本、复选框、无线电......)文本非常容易,它搜索了问题表并找到了包含文本、复选框、单选...和输出的字段 ans_type
switch ($rowq['ans_type']) {
case "text":
echo '<tr bgcolor="#DDDDDD" align="left" valign="middle"><td width="30"> </td> <td width="350">'.$rowq['question'].'</td><td width="350"><input class="tb8" type="text" name="quest[]" value="'.$rowa['answer'].'" size="40"></td></tr>';
break;
如您所见 - rowq 包含我的问题信息,而 rowa 包含答案信息。
我的问题出现在复选框和收音机上,我们可能有多个选项,目前我的表格是这样设置的,最多允许 15 个复选框和收音机选项
CREATE TABLE `question` (
`sid` int(10) NOT NULL,
`qid` double(10,1) NOT NULL,
`question` varchar(500) NOT NULL,
`ans_type` varchar(100) NOT NULL,
`opt_one` varchar(200) DEFAULT NULL,
`opt_two` varchar(200) DEFAULT NULL,
`opt_three` varchar(200) DEFAULT NULL,
`opt_four` varchar(200) DEFAULT NULL,
`opt_five` varchar(200) DEFAULT NULL,
`opt_six` varchar(200) DEFAULT NULL,
`opt_seven` varchar(200) DEFAULT NULL,
`opt_eight` varchar(200) DEFAULT NULL,
`opt_nine` varchar(200) DEFAULT NULL,
`opt_ten` varchar(200) DEFAULT NULL,
`opt_eleven` varchar(200) DEFAULT NULL,
`opt_twelve` varchar(200) DEFAULT NULL,
`opt_thirteen` varchar(200) DEFAULT NULL,
`opt_fourteen` varchar(200) DEFAULT NULL,
`opt_fifteen` varchar(200) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
CREATE TABLE `answers` (
`surveyid` int(10) NOT NULL,
`question` double(10,1) NOT NULL,
`answer` varchar(50000) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
所以我需要首先确定这些类型的任何给定问题有多少可用选项 - 我想我可以让它只添加复选框如果 rowq['...'] != NULL 在每个 opt_numbers 这不能解决我的问题第二个问题 - 如果该调查已经填写并且该人正在编辑它,我需要检查他们已经选择的框(对于复选框,这可能是全部 15 它可能是 1 对于收音机自然它只会是一个)rowa ['answer'] 包含我的答案,这些答案将用“,”分隔
老实说,我不知道从哪里可以得到任何帮助 - 如果有更好的方法,包括更改我的数据库。
case "radio":
break;