Управление логикой выставления ордеров

В настоящее время я пытаюсь сформировать логику, где я размещаю заказы, и если заказ превысил вместимость при суммировании с текущим запасом, появится соответствующее сообщение. Также, если есть входящие заказы, то при добавлении новых заказов они не могут превышать мощности при суммировании с отложенными входящими заказами, а также текущими доступными запасами. Однако моя проблема в том, что независимо от того, какую сумму я положил, она продолжает показывать мой «Сумма размещенного заказа превысила вместимость». сообщение проверки. Моя логика вокруг этой функции неверна? Спасибо.

if (isset($_POST['addBtn'])){  
        $brand = $_POST['brand'];
        $modelName = $_POST['model_name'];
        $session = $_SESSION['username'];
        $station = 'At Factory';
        $progress = 'Awaiting';
        $status = 'Awaiting';
        $handler = 'Awaiting';
        $request = '-';
        $stock = $_POST['stock'];
        $incoming = '0';
        $date = date('Y-m-j H:i:s', time());
        $stock = $_POST['stock'];
        $incoming = '0';


        $sql2 = "SELECT o.stock,m.current,m.capacity FROM orders o
                 INNER JOIN models m ON o.model_id=m.model_id
                 WHERE o.incoming = 0";
        $result2 = $conn->query($sql2);
        if (!$result2) die($conn->error);
        $rows = $result2->num_rows;

        $stok = $rows['stock'];
        $cu = $rows['current'];
        $ca = $rows['capacity'];

        if (($stock+$cu)>$ca){
?>
            <div class = "alert alert-danger alert-dismissible" role = "alert">
                <button type = "button" class = "close" data-dismiss = "alert" aria-label = "Close"><span aria-hidden = "true">&times;</span></button>
                <strong id = "alert2">Error! </strong>Placed order stock amount has exceeded capacity.
            </div>
<?php
        }elseif (($stok+$stock+$cu)>$ca){
?>
            <div class = "alert alert-danger alert-dismissible" role = "alert">
                <button type = "button" class = "close" data-dismiss = "alert" aria-label = "Close"><span aria-hidden = "true">&times;</span></button>
                <strong id = "alert2">Error! </strong>Pending incoming stocks has exceeded capacity.
            </div>
<?php
        }else{

        $query = "INSERT INTO orders(brand,model_id,station,progress,status,editor,time_ordered,admin,request) VALUES ('".$brand."','".$modelName."','".$station."','".$progress."','".$status."','".$handler."','".$date."','".$session."','".$request."')"; 
   }
}

имя вашей базы данных заказы или заказы о?

Vishwa 09.04.2019 07:27

заказы - это не БД, это имя таблицы, а o - псевдоним для этого имени таблицы orders

Rasa Mohamed 09.04.2019 07:45

@heh эта строка $rows = $result2->num_rows; даст только количество строк в таблице, после чего вы получаете доступ $rows['stock'], так что все это не имеет значений. проверьте, что значения получают с помощью print_r(). Используйте для получения данных, таких как $rows = $result2->fetch_assoc()

Rasa Mohamed 09.04.2019 08:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
3
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю, что вам понадобится еще одно предложение WHERE в вашем SQL для выбора заказов на основе вашей модели.

Пример:

$sql2 = "SELECT SUM(o.stock) as stock_sum, m.current, m.capacity FROM orders o
INNER JOIN models m ON o.model_id=m.model_id
WHERE o.incoming = 0 AND m.model_id = $modelName";

Но может возникнуть ошибка, если заказов нет. Например, $cu и $ca могут быть пустыми, потому что вы получаете эти значения путем объединения заказов и моделей.

Отличным предложением было бы иметь отдельный SQL для получения суммы акций и другой SQL для получения сведений о модели.

То, что $cu и $ca пусты, на самом деле не сильно повлияет, если тип обоих столбцов в таблице базы данных установлен как целочисленный, что приведет к тому, что 0 будет значением, если оно пусто, поэтому в этом случае ошибки не произойдет.

heh 20.02.2020 10:29

Другие вопросы по теме