【问题标题】:limit input to a certain number for a sql table将sql表的输入限制为某个数字
【发布时间】:2014-03-24 16:28:46
【问题描述】:

我有一个 SQL 数据库,其中有一系列不同的表。基本上,我正在创建一个考试日并向其中添加考试。

例子:

(可考试)考试 1

(考试)物理、生物、化学、体育

这两者是相互关联的。

目前的工作原理是,当我在考试表中创建考试时,我可以向其中添加无限量的考试,但在现实生活中这显然没有意义。

所以我想做的是在创建考试时提供某种输入,以限制可以输入的考试数量。

  • 例如,如果我创建考试 2 并将输入限制为 3,则只能向其中添加 3 个考试。

我试图在网上找到一些东西,但似乎无法找到任何地方,有人可以帮忙吗?

谢谢。

【问题讨论】:

  • 是来自 html 的输入吗?那么您只能显示有限的输入选项
  • 是的输入来自 html
  • 但我将如何阻止它进入考试表?如果我点击考试 1 并进入另一个考试,我该如何阻止它进入
  • 如果考试表中的考试可以对考试分配方式有可变限制,那么您只需在考试表中添加一个数据库字段来计算该限制是多少。

标签: php sql


【解决方案1】:

在您的表中添加另一列 mostExams

刚刚创建新考试时,

$db = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

$stmnt = $db->query("SELECT `mostExams` FROM `exams` WHERE `classId`='" . $thisClassId . "'");

while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $mostExams = $row['mostExams'] ;
}

//php to only allow $mostExams number of exams.

$stmnt = $db->query("SELECT `id` FROM `exams` WHERE `classId`='" . $thisClassId . "'");
if ($stmnt->rowCount() >= $mostExams){
    echo 'You cannot add any more exams.  Change mostExams in the SQL database to allow more.';
}else{
    //HTML form to add an exam

}

您可能需要添加一些代码来检查您是否已经有一些考试,然后从大多数考试中减去。你只需要跳出框框思考一下!

【讨论】:

  • 虽然我也想提一下,但限制考试次数似乎并不明智。也许您想稍后添加新的考试?或者,也许您想编辑考试?允许无限数量的考试但只显示活动考试似乎很聪明。您可能会考虑在您的表中添加一个 bool active 列并检查它的真假。如果课程发生变化并且您需要 6 次考试而不是 5 次考试怎么办?无需更改源代码,您只需添加一个新考试并使其处于活动状态。然后,当课程再次更改并且您只允许 4 个时,您可以停用 2 个。
  • 从我从问题中得到的可考试行实际上代表了考试的日期。因此,由于一天内的小时数有限(以及考试可能被分配完成的可变时间),因此必须有一个限制。
  • @JamesT 哦,这很有道理。但是,您仍然有很多变量可以允许无限数量的考试。如果下周你有学生怎么办?您的邻居老师中风了,您需要与他的班级一起工作一周,因为没有可用的替补。上海学院要求您将考试交给他们的学生团体。我认为没有充分的理由限制它,而我可以有理由不限制它。
【解决方案2】:

我不太明白你的问题,但这里是:

你可以在php中使用sql来统计examstable中的考试次数: '从考试稳定中选择计数(*);' 然后在 PHP 中: 'if ($no_exams > 3 ) { echo "不能添加更多考试。"} 否则将考试插入数据库。'

【讨论】:

  • 这是我正在寻找的东西,但我不会硬编码它,我想在创建它时尝试限制它。因此,如果我创建一个考试并将其限制为 5 个,我将只能添加 5 个考试
  • 这样做有什么意义?我不认为这样的事情存在。与输入和输出交互的唯一方法是为此创建的 php 页面,因此您可以创建一个简单的函数来验证它。
  • 我认为他希望限制(即您的答案中的 3)是可变的。那么可能需要将限制放入examtable的数据库中?
  • 但是我应该在哪里设置限制?如果在 Exam2 上只有 5 门考试,我如何验证只输入了 5 门而不是 10 门
  • @user3455546 您正在寻找一个复杂的解决方案。如果您使用 php 来验证行数,您可以轻松地阻止数据库中的输入。类似 if ($count>=5) echo "The Exam list is full"; else echo "";
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-21
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多