【问题标题】:Recording user preferences and writing them to a database记录用户偏好并将其写入数据库
【发布时间】:2016-03-15 06:15:30
【问题描述】:

我需要记录用户对五个项目的偏好,方法是让他们从五个单选按钮(每个项目 5 个)中选择一个,这些单选按钮将被标记为“第一选择”、“第二选择”等...但我不知道如何在服务器上记录这个(node.js express)。

如果我没有把自己说清楚,在一个理想的世界里,我会有类似......

//Student Project Preferences
app.get('/api/studentPrefs', function (req, res) {
    console.log("Route API/studentPrefs");
    console.log(req.query.name);
    var project_1 = req.query.project_1,
        project_2 = req.query.project_2,
        project_3 = req.query.project_3,
        project_4 = req.query.project_4,
        project_5 = req.query.project_5;
    
SUPER-pseudo-code...
----------
if(project_1 || project_2 || project_3 || project_4 || project_5 == 'choice_1') {
      INSERT INTO db (choice_1) VALUES (relevant topic)
    }
    else if(project_1 || project_2 || project_3 || project_4 || project_5 == 'choice_2') {
    ....etc
    }
});
<fieldset>
<legend>&nbsp;Please choose your prefered project&nbsp;</legend>
<form id="studentPrefsForm" action="api/studentPrefs" method="get">
    <label for="projectChoice_1">Project Choice 1</label>
    <input type="radio" name="project_1" value="choice_1" />
    <input type="radio" name="project_1" value="choice_2" />
    <input type="radio" name="project_1" value="choice_3" />
    <input type="radio" name="project_1" value="choice_4" />
    <input type="radio" name="project_1" value="choice_5" />
    <br />
    <label for="projectChoice_2">Project Choice 2</label>
    <input type="radio" name="project_2" value="choice_1" />
    <input type="radio" name="project_2" value="choice_2" />
    <input type="radio" name="project_2" value="choice_3" />
    <input type="radio" name="project_2" value="choice_4" />
    <input type="radio" name="project_2" value="choice_5" />
    <br />
    <label for="projectChoice_3">Project Choice 3</label>
    <input type="radio" name="project_3" value="choice_1" />
    <input type="radio" name="project_3" value="choice_2" />
    <input type="radio" name="project_3" value="choice_3" />
    <input type="radio" name="project_3" value="choice_4" />
    <input type="radio" name="project_3" value="choice_5" />
    <br />
    <label for="projectChoice_4">Project Choice 4</label>
    <input type="radio" name="project_4" value="choice_1" />
    <input type="radio" name="project_4" value="choice_2" />
    <input type="radio" name="project_4" value="choice_3" />
    <input type="radio" name="project_4" value="choice_4" />
    <input type="radio" name="project_4" value="choice_5" />
    <br />
    <label for="projectChoice_5">Project Choice 5</label>
    <input type="radio" name="project_5" value="choice_1" />
    <input type="radio" name="project_5" value="choice_2" />
    <input type="radio" name="project_5" value="choice_3" />
    <input type="radio" name="project_5" value="choice_4" />
    <input type="radio" name="project_5" value="choice_5" />
    <br />
    <br />
    <input type="submit" value="Send my Choices">
</form>
</fieldset>

(对不起,上面的JS解释有点太伪了,希望可以理解)

我知道我的“理想”解决方案存在一些问题,例如 IF 语句未返回哪个项目值为“choice_1/2/3/4/5”,以便我可以将项目名称写入相关的choice_x数据库中的列,但此时我会采取任何措施。

如前所述,我是一年级学生,所以如果您能找到更好的方法,我非常愿意接受建议或批评,再次感谢。

【问题讨论】:

  • 我不清楚排序与此有什么关系。
  • 啊,好点子。我最初认为,如果我可以按选择的顺序获取它们,我可以按顺序将它们写入数据库,但我不知道返回值将如何工作。我会修改问题,谢谢。
  • 数据库中选择列不同的原因是什么?它们似乎是互斥的,因此您可以将一个整数存储在单个列中,如果您有更多选择(6、7、8...),则更具可扩展性
  • @EricPhillips 用户将为每个项目选择 1-5(最好到最差),然后将其写入数据库中的choice_1、choice_2 等字段,以便管理员决定分配哪些项目给哪些学生。
  • 明白了。需要注意的一件事是你的条件不起作用(我知道你说它是伪代码,但我仍然认为你在做假设。1你不能像那样链接条件。你的|| operator 之间的每一块都被视为这是自己的条件,它们并不都与最右边的=='choice_1 进行比较。您的代码将始终返回true,最左边的检查是否只是询问if project_1,哪个javascript 解释为project_1 存在吗?是的,所以总是正确的。

标签: javascript html node.js express sqlite


【解决方案1】:

即使您的 JS 代码可以优化,它也可以。 你写的是页面的客户端。根据您使用的平台/语言,您需要将这些值传递到将进行保存的服务器端。 让我们知道您在服务器端使用的语言 - php、.NET 等。

【讨论】:

  • 是的,JS 的本意是一个非常伪的伪代码,以便更好地解释,但我已经使用 node.js (express) 添加了到目前为止的内容。
猜你喜欢
  • 1970-01-01
  • 2018-09-27
  • 2014-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多