从MySQL表中获取PHP测试结果
我在PHP中创建了一个多答案测验,将答案发布到MySQL中的一个表中。没有正确的答案。有9个问题。问题是单选按钮,名称从a到i,多个答案的值为1到4。表格如下: 避免在公共交通工具上付费。从MySQL表中获取PHP测试结果,php,mysql,fetch,Php,Mysql,Fetch,我在PHP中创建了一个多答案测验,将答案发布到MySQL中的一个表中。没有正确的答案。有9个问题。问题是单选按钮,名称从a到i,多个答案的值为1到4。表格如下: 避免在公共交通工具上付费。 1.从来没有理由。 2.很少有正当理由。 3.有时是合理的。 4.始终对正。 如何获取这两种形式的结果: 在所有9个问题中选择了1或2或3或4个值 所有选定值的总和 这是表格: CREATE TABLE `tests`.`integrity` ( `id` INT(11) NOT NULL AUTO_IN
1.从来没有理由。
2.很少有正当理由。
3.有时是合理的。
4.始终对正。
如何获取这两种形式的结果:
CREATE TABLE `tests`.`integrity`
( `id` INT(11) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR(255) NOT NULL ,
`q1` VARCHAR(255) NOT NULL ,
`q2` VARCHAR(255) NOT NULL ,
`q3` VARCHAR(255) NOT NULL ,
`q4` VARCHAR(255) NOT NULL ,
`q5` VARCHAR(255) NOT NULL ,
`q6` VARCHAR(255) NOT NULL ,
`q7` VARCHAR(255) NOT NULL ,
`q8` VARCHAR(255) NOT NULL ,
`q9` VARCHAR(255) NOT NULL ,
PRIMARY KEY (`id`)) ENGINE = MyISAM;
$sql = "INSERT INTO integrity (name, q1, q2, q3, q4, q5, q6, q7, q8, q9)
VALUES ('$value1', '$value2', '$value3', '$value4', '$value5',
'$value6', '$value7', '$value8', '$value9', '$value10')";
结果的例子可能是:你得了9分
(如果为所有问题选择的值为1,则永远不会对其进行调整)
最多15个:
你是一个非常诚实的人,真的想做正确的事情。
15至20
你的正直程度高于平均水平,但你不介意偶尔违反规则。
20至25
当规则适合你的时候,你会放松下来,但从根本上说,你并不是不诚实的。
再加上你不相信按规则生活,当它适合你时,你会发现很容易打破规则。Yepes。这里有各种各样的数据完整性问题。在
varchar(255)
列中有数值。你已经排除了有十个或更多问题的测验。您使用的是MyISAM,它不提供事务完整性。你最好希望你的一个用户没有名字“johnny droptables”(查一查)
但别在意这些。我们开发人员抱怨是因为我们的诚信。我们中的大多数人都应对过太多被黑客入侵的网站,以至于无法让它通过。让我们回答你的问题
您可以通过这种方式检索每个人的总分。这将按升序显示它们
SELECT name, q1+q2+q3+q4+q5+q6+q7+q8+q9 score
FROM integrity
ORDER BY q1+q2+q3+q4+q5+q6+q7+q8+q9 ASC, name
您可以像这样创建一个直方图表格。这表明有多少人收到了每个不同的分数
SELECT COUNT(*) number_of_people, scores.score
FROM (
SELECT name, q1+q2+q3+q4+q5+q6+q7+q8+q9 score
FROM integrity
ORDER BY q1+q2+q3+q4+q5+q6+q7+q8+q9
) scores
GROUP BY scores.score
ORDER BY COUNT(*) ASC, scores.score
注意。这将自动忽略以字母开头的值
我建议你开始工作,然后再次询问对每个分数进行分类的问题。…你有(具体)问题吗?如何以两种形式获取结果:1。在所有9个问题中选择了1或2或3或4个值。2.所选所有值的总和。请提供表格定义(最好是有效的
CREATE table…
语句)、一些示例数据(最好是有效的INSERT-in…
语句)和示例结果(基于示例数据)。我认为答案正确。没有正确答案。