PHP如何使用我的选择更改值?

时间:2018-11-14 11:36:24

标签: php mysql pdo

我有这个问题,我需要我的select的类型为类型,以排除使用哪种容差。

可以说,我在select中有2个(或更多)选项,一个称为test1,一个称为test2,每个都有一个type_id和一个type_name。他们的表称为type_tb

我有2个(或更多)公差,我希望能够通过select进行更改,它们在一个名为tol_tb的表中。

因此,当我选择test1时,将使用tol_tbtol_id为1的行,如果我选择test2tol_tb中的行使用tol_id为2的地方

我该怎么做,以便当我select test1时,我在tol_tb内部使用的值更改为连接到test1的值?

为了更好地解释它,您将无法看到一些代码段,但是在我这样做之前,我认为您可能需要了解当前数据库的设置方式。

ive已经说过如何使用type_tbtype_id来设置type_name

公差表tol_tb稍大一些。看起来像这样 它有一个tol_idtol_p_A_maal和一个tol_m_A_maal。它比这更长,但是在tol_p_A_maaltol_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_idtype_name 该表atm中有2行。

id:1name:test1

id:2name:test2

tol_tb的列为:tol_idtol_m_A_maaltol_p_A_maal

这里也有2行。

忽略古怪的名字,只要记住mp是这里的重要组成部分即可。

m代表减号-允许的最小数字

p代表加号-允许的最大数字

我认为可行的方法是制作一个外键或类似的东西。但是我不知道如何在代码中连接它。 再次感谢您的帮助

1 个答案:

答案 0 :(得分:0)

好吧,首先您需要在数据库中设置如下表:

type_tb:

  • type_id
  • 列表项

type_name

tol_tb:

  • tol_id
  • tol_m_A_maal
  • tol_p_A_maal
  • 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();
        }
    }
}