来自父数据库的第六个单个数据阵列

时间:2019-06-23 05:50:15

标签: php mysql forms

我已经创建了2张桌子

TABLE产品

.selected {
    background:lightpink;
}
.notselected {
    background:lightblue;
}

和表productSub

------------------------------
| ID | name    | duration|
------------------------------
| 1  | box     |   10    |
| 2  | plastic |   20    |
------------------------------
数据库产品中的

Sub 父级表示数据库产品的ID,我已经成功在php代码中显示了带有子数据的所有数据。带有输入单选按钮的数据显示可以选择要订购的数据。

-------------------------------------------------
| ID | type    | min_order | max_order | parent |
-------------------------------------------------
| 1  | paper S |    1      |    10     |    1   |
| 2  | paper L |    11     |    50     |    1   |
| 3  | wood S  |    1      |    20     |    2   |
| 4  | wood L  |    21     |    50     |    2   |
--------------------------------------------------

提交表单后,它将把数据发布到我的php页面并给我数据表单。

提交数据后,我得到的是由productSub组成的两个数组。

<form method="post" name="productform">
   <?php foreach($allproducts as $key => $products):?>
   <h4 class="title">
        <input type="radio" name="p_id" value="<?php echo $products['id'];?>" checked="">
        <?php echo $products['name'].'  <small>'.$products['duration'].'</small>';?>
   </h4>
   <?php $allproductsparent = getAllProductsParent($products['id']); foreach($allproductsparent as $value):?>
   <table class="table"><tr>
       <th scope="row"><?php echo $value['type'];?></th>
       <td><?php echo $value['min_order'].' ~ '.$value['max_order'];?></td>
   </tr></table>
   <?php endforeach; ?>
   <?php endforeach; ?>
   <input type="text" id="order" class="form-control" name="order" placeholder="Total Order" required>
   <input type="submit" id="submit" class="btn btn-success" name="submit" value="Submit">
</form>

问题是如何根据总订单提交过滤数据。并且数据应在productSub最小订单和最大订单之一之间,然后仅显示1个符合条件的productSub。 谢谢

================================================ =====================

为您提供更多信息,我已制作了此PDO以显示提交的数据

Array
(
    [0] => Array
        (
            [id] => 1
            [type] => Paper S
            [min_order] => 1
            [max_order] => 10
            [duration] => 10
        )

    [1] => Array
        (
            [id] => 1
            [type] => Paper L
            [min_order] => 11
            [max_order] => 50
            [duration] => 10
        )

)

并像这样显示它

function getProductById($id){
    $res_arr = [];
    global $conn;
    $stmt = $conn->prepare("SELECT ps.*,p.* FROM productsub ps INNER JOIN products p ON p.id = ps.parent WHERE ps.parent = :id");
    $stmt->bindParam(':id', $id);
    $stmt->execute();
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    while ($res = $stmt->fetch())
    {
        $res_arr[]= $res;
    }
    return $res_arr;
}

1 个答案:

答案 0 :(得分:0)

找到答案

在我的php中使用foreach并过滤一些数据将为我提供我想要的提交表单中的确切数据。

这是代码。

    foreach($productid as $product){
        if($_POST['order'] >= $product['min_order'] && $_POST['order'] <= $product['max_order']){
            echo $product['name'].' because the order was '.$_POST['order'];
        }
    }

并会显示这样的数据

  

论文1,因为订单是10

感谢所有人