【发布时间】:2011-12-09 20:30:19
【问题描述】:
我有一些范围信息作为 min_age 和 max_age 存储在数据库中,例如:
id min_age max_age
1 10 14
2 15 16
3 17 20
我想使用 PHP(或 MySql)进行一些验证,以便在创建另一条记录之前,我们确保该范围不与现有范围重叠。因此, id=4, min_age=21, max_age=25 可以,但是 id=4, min_age=20, max_age=25 会失败。到目前为止,我的(伪)代码:
$age['min'] = $x;
$age['max'] = $y;
$current ranges = db_query('SELECT min_age, max_age FROM age_table')->fetchAll();
foreach ($age as $limit)
{
for ($i = 0; $i < count($current_ranges); $i++)
{
if ($limit >= $current_ranges[$i]->min_age && $limit <= $current_ranges[$i]->max_age) $conflict = $result[$i]->entity_id;
}
}
if ($conflict) fail();
但这过于简单化了(不是吗?),因为它只是测试最小值/最大值是否在定义的范围内。我认为这可能有效,但我使用了一些模糊的逻辑......谁能帮助我提高这一点?干杯...
【问题讨论】:
-
更适合stackoverflow。
-
能不能留个空隙? id=4 可以是 25-30 吗?
标签: mysql php validation