为“傻瓜编程”问题提前道歉......我徒劳地搜索了先前关于此的讨论。
所以我有一个装满摩托艇的 MySQL 表。每行都有基本的摩托艇信息(品牌/型号/等)加上一些不同特征的 1-10 分——“动力”、“舒适度”和“风格”。我想帮助用户找到满足他们个人需求的摩托艇。
默认情况下,数据按“总分”从高到低排序,如下所示:
$sql = "SELECT *,(power + comfort + style) as totalscore FROM boats ORDER BY totalscore DESC";
...我用 PHP 循环遍历结果并将它们显示为列表。
但随后我给用户一系列是/否问题来确定个人偏好,并且我希望每个答案都能改变用户会话中总分的值——从而改变列表项的顺序。
换句话说,我想$_SESSION["totalscore"]
改变每个是/否用户输入......然后用户的结果应该从高到低排序$_SESSION["totalscore"]
,而不是数据库中的原始总分。
示意图示例
- 波士顿捕鲸船 370。力量=7,舒适度=8,风格=6,总分=21
- 波士顿捕鲸船 350。力量=5,舒适度=7,风格=8,总分=20
问题1:你喜欢时尚吗?是/否
if Yes {
$_SESSION["totalscore"] = totalscore + style;
reorder list items by $_SESSION["totalscore"]; // the 350 is now #1
}
if No {
$_SESSION["totalscore"] = totalscore + (style/2);
reorder list items by $_SESSION["totalscore"]; // they're now tied for #1
}
等等。
从概念上讲,让我感到困惑的是,$_SESSION["totalscore"]
它将被存储为 cookie,而原始总分来自数据库查询。因此,一旦我从 totalscore 切换到$_SESSION["totalscore"]
,我不知道如何重新排序列表项。
有人能指出我正确的方向吗,如果只是示意性的?我想弄清楚,但我不确定此时要弄清楚什么。非常感谢。