Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 31.03.2017
Сообщений: 91

Правильное ли условие

29.05.2017, 08:22. Показов 1033. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть самописный POS для аптек на PHP. И тут чтоб кассир не смог продавать больше чем количество препарата которая есть на складе делаю так
PHP
1
2
3
4
5
6
7
8
9
10
11
12
include('../connect.php');
$nl = $_POST['nall'] ;
$a = $_POST['invoice'];
$b = $_POST['product'];
$c = $_POST['qty'];
   if($c > $nl) {
      echo "<div align='center'><font color='red' 
      style='font:bold 22px 'Aleo';'>Внимание Вы не сможете расходовать больше чем остаток. Сейчас будете перенаправлены' </font> </div><br> "; 
      echo "<meta http-equiv=\"refresh\" content=\"3;url=" . 
      $_SERVER['HTTP_REFERER'] . "\">";
   exit; 
   } ?>
Как видно по коду если продаваемое количество препарата (переменная $nl) БОЛЬШЕ чем количества остатка на складе (переменная $c) то вывести ошибку. Но если допустим количество препарата на складе 10 шт и кассир собирается продавать тоже 10 шт то всё равно выводит ошибку что нельзя расходовать больше чем остаток. Как правильно написать условие чтоб именно когда кассир собирается продавать больше а не ровно вывести ошибку?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.05.2017, 08:22
Ответы с готовыми решениями:

Правильное условие
Доброго времени суток.. У меня такой вопрос... Есть поле в документе ПОЛЕ_1 - оно многозначное, может принимать к примеру значения A,B,C....

Правильное условие в запросе
Привет. Проблема плевая, но меня чет так сильно затупило, что я уже готов спросить (видимо пару дней без сна дают о себе знать). Короче,...

Задать правильное условие (if)
Есть такое условие: if msg.hotkey=13 then Как прикрутить что бы он щитал ещё и шифт. Что бы условие было верное даже когда нажата клавиша...

12
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
29.05.2017, 08:28
Цитата Сообщение от localghost Посмотреть сообщение
если продаваемое количество препарата (переменная $nl) БОЛЬШЕ чем количества остатка на складе (переменная $c) то вывести ошибку
Тогда зачем Вы проверяете, меньше ли оно?
Цитата Сообщение от localghost Посмотреть сообщение
если допустим количество препарата на складе 10 шт и кассир собирается продавать тоже 10 шт то всё равно выводит ошибку
Что-то неправильно у Вас там, с количествами. PHP не может выдать, что "десять больше десяти".
PHP
1
2
3
4
5
6
7
<?php
 
if (10 > 10) {
    echo 'десять больше десяти';
} else {
    echo 'десять не больше десяти';
}
0
0 / 0 / 0
Регистрация: 31.03.2017
Сообщений: 91
29.05.2017, 08:36  [ТС]
Para bellum, может код страницы продажы тоже привести ?

Добавлено через 3 минуты
Para bellum, вот отсюда всё это и берется
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<form action="incoming.php" method="post" >
                                            
<input type="hidden" name="pt" value="<?php echo $_GET['id']; ?>" />
<input type="hidden" name="invoice" value="<?php echo $_GET['invoice']; ?>" />
<select name="product" style="width:650px; "class="chzn-select" id=".my_select_box" required>
<option></option>
 
    <?php
    include('../connect.php');
    $result = $db->prepare("SELECT * FROM products WHERE qty >0");
        $result->bindParam(':userid', $res);
        $result->execute();
        for($i=0; $row = $result->fetch(); $i++){
    ?>
        <option value="<?php echo $row['product_id'];?>"><?php echo $row['product_code']; ?> - <?php echo $row['gen_name']; ?> -Остаток <?php echo $row['qty']; ?> |  Код продукта <?php echo $row['shcod']; ?> | Годен до: <?php echo $row['expiry_date']; ?></option>
        <?php $nal = $row['qty'];  ?>
    <?php
                }
            ?>
</select>
 
<input type="hidden" name="nall" value="<?php echo $nal ;?>"/>
<input type="text" name="qty" value="1" min="1" placeholder="ШТ" autocomplete="off" style="width: 68px; height:30px; padding-top:6px; padding-bottom: 4px; margin-right: 4px; font-size:15px;" />
<input type="hidden" name="discount" value="" autocomplete="off" style="width: 68px; height:30px; padding-top:6px; padding-bottom: 4px; margin-right: 4px; font-size:15px;" />
<input type="hidden" name="date" value="<?php echo date("m/d/y"); ?>" />
<Button type="submit" class="btn btn-info" style="width: 123px; height:35px; margin-top:-5px;" /><i class="icon-plus-sign icon-large"></i> Добавить</button>
</form>
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
29.05.2017, 08:50
Нет, это ничего не даст. Лучше распечатайте значения:
PHP
1
var_dump($_POST['qty'], $_POST['nall']);
0
0 / 0 / 0
Регистрация: 31.03.2017
Сообщений: 91
29.05.2017, 09:02  [ТС]
Para bellum, вот что он мне выдаёт
string(2) "25" string(3) "210"
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
29.05.2017, 09:08
Ну. 25 никак не может больше 210:
PHP
1
if($c > $nl) {
0
0 / 0 / 0
Регистрация: 31.03.2017
Сообщений: 91
29.05.2017, 09:12  [ТС]
Para bellum, понял подскажите а как превратить строки в числа ?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
29.05.2017, 09:19
Вообще так:
PHP
1
2
3
4
$number = (int) '123';
 
// или так
$number = intval('123');
Не знаю, зачем оно Вам, но в документации PHP написано:
В случае, если вы сравниваете число со строкой или две строки, содержащие числа, каждая строка будет преобразована в число, и сравниваться они будут как числа.
0
0 / 0 / 0
Регистрация: 31.03.2017
Сообщений: 91
29.05.2017, 09:47  [ТС]
Para bellum, мне один посоветовал просто ...превратить строки в числа через intval но не помогает

Добавлено через 30 секунд
Para bellum, Простите а как мне быть чтоб решить данную проблему ?(

Добавлено через 16 минут
В самом начале сделал так и всё заработало спасибо за помощь
PHP
1
2
3
4
5
6
7
8
9
if($_POST['qty'] > $_POST['nall']) {
      echo "<div align='center'><font color='red' 
      style='font:bold 22px 'Aleo';'>Внимание Вы не сможете 
расходовать больше чем остаток. Сейчас будете перенаправлены' </font> 
</div><br> "; 
      echo "<meta http-equiv=\"refresh\" content=\"3;url=" . 
      $_SERVER['HTTP_REFERER'] . "\">";
   exit; 
}
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
29.05.2017, 09:52
Вы тут не ошиблись?
Цитата Сообщение от localghost Посмотреть сообщение
Как видно по коду если продаваемое количество препарата (переменная $nl) БОЛЬШЕ чем количества остатка на складе (переменная $c) то вывести ошибку.
Судя по коду -- в этих переменных содержится как раз обратное сказанному Вами.
И ещё, Вы переменную $nal в цикле присваиваете, а используете вне. Значит в $nal будет только последнее значение, какое было в цикле.
1
0 / 0 / 0
Регистрация: 31.03.2017
Сообщений: 91
29.05.2017, 10:36  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
Вы тут не ошиблись?
Сообщение от localghost
Как видно по коду если продаваемое количество препарата (переменная $nl) БОЛЬШЕ чем количества остатка на складе (переменная $c) то вывести ошибку.
Прошу прощения за невнимательность да это моя ошибка неправильно составил вопрос (
Как раз так и было наоборот

Добавлено через 38 минут
Цитата Сообщение от Para bellum Посмотреть сообщение
И ещё, Вы переменную $nal в цикле присваиваете, а используете вне. Значит в $nal будет только последнее значение, какое было в цикле.
Совершенно верно ! так и стало ( . Не могу взять значение переменной оттуда ( не знаю как быть. Что посоветуете ?

Добавлено через 2 минуты
Para bellum, как можно взять оттуда значение переменной ? вся проблема оказывается в этом (
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
29.05.2017, 10:47
Лучший ответ Сообщение было отмечено localghost как решение

Решение

Цитата Сообщение от localghost Посмотреть сообщение
как можно взять оттуда значение переменной ?
Вам нужна сумма всех тех значений? Тогда просто суммируйте $nal с текущим значением в цикле:
PHP
1
$nal += $row['qty'];
Хотя сомневаюсь, что нужна общая сумма.
Тогда вообще уберите
PHP/HTML
1
<input type="hidden" name="nall" value="<?php echo $nal ;?>"/>
А в скрипте, на который отправляется форма -- получайте ID товара ($_POST['product']), затем делайте запрос к базе, для получения количества для этого ID. Потом полученное значение сравнивайте с тем, что пришло из формы (с $_POST['qty']).
1
0 / 0 / 0
Регистрация: 31.03.2017
Сообщений: 91
29.05.2017, 14:13  [ТС]
Цитата Сообщение от Para bellum Посмотреть сообщение
ам нужна сумма всех тех значений? Тогда просто суммируйте $nal с текущим значением в цикле:
PHPВыделить код
1
$nal += $row['qty'];
Вы правы сумма не нужна
Цитата Сообщение от Para bellum Посмотреть сообщение
Тогда вообще уберите
PHPHTMLВыделить код
1
<input type="hidden" name="nall" value="<?php echo $nal ;?>"/>
А в скрипте, на который отправляется форма -- получайте ID товара ($_POST['product']), затем делайте запрос к базе, для получения количества для этого ID. Потом полученное значение сравнивайте с тем, что пришло из формы (с $_POST['qty']).
Вот это идея мне понравилась ) Правильное решение) спасибо. Попробую
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.05.2017, 14:13
Помогаю со студенческими работами здесь

Добавить правильное условие
есть код от Puporev'a можно ли добавить условие,что бы когда картинка была в координатах (x,y) то его скорость увеличивалась? uses ...

Как составить правильное условие
Подскажите как дописать условие, если $row пустое, то заносилось значение из $row? Так будет верно? if (!empty($row)) { $row =...

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

Принадлежание введеной точки заштрихованой области, правильное условие принадлежания?
#include &lt;Windows.h&gt; #include &lt;cstdio&gt; #define USE_MATH_DEFINES #include &lt;cmath&gt; void main() { SetConsoleOutputCP(1251); ...

Правильное swprintf, правильное wprintf ?
Вродеж бы по ,,инструкции,,.... ..... wchar_t str = L&quot;tanya&quot;; // обозначает, что строка не однобайтная, а двуб ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru