我有这个问题,我需要我的select
的类型为类型,以排除使用哪种容差。
可以说,我在select
中有2个(或更多)选项,一个称为test1,一个称为test2,每个都有一个type_id
和一个type_name
。他们的表称为type_tb
我有2个(或更多)公差,我希望能够通过select
进行更改,它们在一个名为tol_tb
的表中。
因此,当我选择test1
时,将使用tol_tb
中tol_id
为1的行,如果我选择test2
则tol_tb
中的行使用tol_id
为2的地方
我该怎么做,以便当我select
test1时,我在tol_tb内部使用的值更改为连接到test1的值?
为了更好地解释它,您将无法看到一些代码段,但是在我这样做之前,我认为您可能需要了解当前数据库的设置方式。
ive已经说过如何使用type_tb
和type_id
来设置type_name
,
公差表tol_tb
稍大一些。看起来像这样
它有一个tol_id
,tol_p_A_maal
和一个tol_m_A_maal
。它比这更长,但是在tol_p_A_maal
和tol_m_A_maal
的所有方面都基本相同。是公差值,其中p代表加号,m代表减号,我认为当您深入研究代码时,我会更有意义。
这是我的select
<select class="form-control" name="type" id="exampleFormControlSelect4">
<?php foreach ($products->getAllType() as $type) { ?>
<option value="<?= @$type->type_id ?>" selected><?= @$type->type_name ?></option>
<?php } ?>
</select>
这是我编写度量时的输入字段
<div class="form-group col-2">
<label for="A_maal">A: Mål</label>
<?=@$error['A_maal']?>
<input type="text" name="A_maal" id="A_maal" class="form-control" value="<?= @$_POST['A_maal'] ?>">
</div>
然后我有这段代码,如果输入字段为空,则不会出现未定义的索引错误,
$A_maal = isset($_POST['A_maal']) ? $_POST['A_maal'] :$tol->tol_m_A_maal + $tol->tol_p_A_maal * 0.5;
直到这里的一切都应该正常工作。这是我无法上班的部分。
所以想法是我希望它使用选定的类型。拒绝使用哪个公差。香港专业教育学院尝试了很多事情,没有成功。这是我最近的尝试,
foreach ($products->getAllTol() as $tol) {
if ($tol->tol_m_A_maal > ($A_maal) || $tol->tol_p_A_maal < ($A_maal)){
include './includes/modal.php';
$notification->setTolaranceErrorNotification();
}
}
长话短说。我需要类型作为公差的选择器。
希望此修改可以更好地解释我的问题。
更好地说明数据库设置
我有2张桌子。
一个叫type_tb
和一个叫tol_tb
type_tb
具有以下列:type_id
,type_name
该表atm中有2行。
id:1
,name:test1
id:2
,name:test2
和tol_tb
的列为:tol_id
,tol_m_A_maal
,tol_p_A_maal
。
这里也有2行。
忽略古怪的名字,只要记住m
和p
是这里的重要组成部分即可。
m
代表减号-允许的最小数字
p
代表加号-允许的最大数字
我认为可行的方法是制作一个外键或类似的东西。但是我不知道如何在代码中连接它。 再次感谢您的帮助
答案 0 :(得分:0)
好吧,首先您需要在数据库中设置如下表:
type_tb:
type_name
tol_tb:
type_id
type_id列将包含角色链接到的类型的ID。
然后,在您发布表单的位置,您有2个值: -类型(类型ID) -A_maaal(用户填写您的输入的公差)
使用“ type”值(type_id)来获取与之关联的所有公差:
SELECT *
FROM `tol_tb`
WHERE type_id = :type_id
将:type_id
替换为从表单(所选类型)中获得的值。
此MySQL请求应采用一种新方法:例如,使用正确的获取(符合初始编码的对象)的getAllTolByTypeId($ type_id)(例如)。
并像以前一样执行测试:
foreach ($products->getAllTolByTypeId($type_id) as $tol) {
if ($tol->tol_m_A_maal > ($A_maal) || $tol->tol_p_A_maal < ($A_maal)){
include './includes/modal.php';
$notification->setTolaranceErrorNotification();
}
}
}