Fecth один массив данных из родительской базы данных - PullRequest
0 голосов
/ 23 июня 2019

Я создал 2 таблицы

Продукты TABLE

------------------------------
| ID | name    | duration|
------------------------------
| 1  | box     |   10    |
| 2  | plastic |   20    |
------------------------------

и TABLE productSub

-------------------------------------------------
| 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   |
--------------------------------------------------

в базе данных productSub parent означает идентификаторпродуктов базы данных, я уже успешно показываю все данные с под данными в коде php.Отображение данных с переключателем ввода позволяет выбрать, какие данные они хотят заказать.

<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>

Когда форма будет отправлена, она отправит данные на мою страницу php и выдаст мне форму данных.

Что я получаю после отправки данных, это два массива, состоящих из productSub.

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
        )

)

Вопрос в том, как отфильтровать данные на основе Total Order submit.И данные должны быть между одним из минимального заказа productSub и максимальным заказом, тогда показывать только 1 productSub, который соответствует критериям.Спасибо

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

Для дополнительной информации я создал этот PDO для отображения представленных данных

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;
}

И покажите это так

<code>echo '<pre>';
print_r(getProductById($_POST['p_id']));
echo '
';

1 Ответ

0 голосов
/ 23 июня 2019

Нашел ответ

, используя foreach в моем php и отфильтровав некоторые данные, которые дадут мне именно то, что я хочу получить от отправленной формы.

Вот код.

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

И покажет такие данные

paper 1, потому что заказ был 10

Спасибо за все

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...