Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проверка множества условий. [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
Fart
Отправлено: 01 Августа, 2016 - 16:33:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


Помог: 10 раз(а)




если я правильно понял, тебе нужны 2 таблицы. первая с данными, которые изменяются со временем. вторая таблица с внесением данных, на которые они влияют (что то вроде матрицы)
_______|зерно|погода|вагоны|
зерно__|__0__|__1___|__0__|
погода_|
вагоны_|
... и так далее

как появляются данные ты вносишь в эту таблицу и первую с изменяемой ценой и валютой.
если у тебя есть расчеты зависимости одного "товара" от другого, делаешь их согласно финансовой математике.

остается вопрос что ты хочешь выводить какой результат в итоге?

(Отредактировано автором: 01 Августа, 2016 - 16:40:45)

 
 Top
gnork
Отправлено: 01 Августа, 2016 - 16:41:52
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




Чтобы не вдаваться в финансово-метеорологические дебри, предлагаю упростить задачу до маленького склада.
Есть склад. На нем лежат болты, гайки и шайбы. Их количество заносится по таблицам Bolts, Gaykas и Shaybas. В каждую таблицу заносится количество и время изменения. По таблице потом будет строиться график прибыли-убыли и поэтому мы не можем хранить просто последнее значение. Сводить их в одну таблицу тоже не желательно, т.к. какие-то детали могут годами не меняться. Есть таблица, где хранятся заявки на закупку Zayavkis. Там указывается время, тип детали и количество. И есть набор правил:
Если болтов меньше 1000 - добавить в таблицу заявок покупку 100 штук болтов.
Если гаек меньше 1000 - добавить в таблицу заявок покупку 100 штук гаек.
Если шайб меньше 5000 - добавить в таблицу заявок покупку 500 штук шайб.
Если болтов больше гаек на 500 - добавить в таблицу заявок покупку 500 штук гаек.
Если болтов меньше гаек на 500 - добавить в таблицу заявок покупку 500 штук болтов.
Если болтов больше шайб на 500 - добавить в таблицу заявок покупку 1000 штук шайб.
И поскольку на складе еще могут быть винты, шплинты, шпильки и другая непотребщина, количество правил вырастает до небес, и мы хотим, если приходит сигнал, что болтов осталось 300 штук, проверить только правила, где фигурируют болты.
Проблема в том, что я не понимаю, в каком виде хранить эти правила и как отбирать нужные.

(Отредактировано автором: 01 Августа, 2016 - 16:43:19)

 
 Top
Fart
Отправлено: 01 Августа, 2016 - 16:49:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


Помог: 10 раз(а)




если ты говоришь о резерве на продажу, создавай отдельную таблицу и сравнивай с той таблицей, в которой хранится информация о цене как одного так и нескольких товаров и прочее. не противоречат и не мешают друг другу.
(Добавление)
в таблице также можно указывать мин и макс значения... просто получаешь их из бд, сопоставляешь и выполняешь вывод данных
(Добавление)
единственная задача организовать заполнение субд актуальными данными, но тут уже дело техники
 
 Top
gnork
Отправлено: 01 Августа, 2016 - 17:13:29
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




Bolts
date | value
01-07-16 | 2000
03-07-16 | 1800
15-07-16 | 1300

Gaykas
date | value
02-07-16 | 2200
18-07-16 | 1500
20-07-16 | 1200

Shaybas
date | value
01-07-16 | 1800
06-07-16 | 1500
15-07-16 | 700

Rules
Condition | Action
if $bolts<1000 | INSERT INTO Zayvkis 100 bolts
if $gaykas<1000 | INSERT INTO Zayvkis 100 gaykas
if $shaybas<5000 | INSERT INTO Zayvkis 500 shaybas
if $bolts-$gaykas>500 | INSERT INTO Zayvkis 500 gaykas
if $gaykas-$bolts>500 | INSERT INTO Zayvkis 500 bolts
if $bolts-$shaybas>500 | INSERT INTO Zayvkis 1000 shaybas

Вот по этим таблицам получается, что значение Bolts стало 15-07-16 меньше Gaykas на 900 штук, а Shaybas меньше Bolts на 600, значит должны сработать правила 5 и 6. Как оформить эти правила и отобрать нужные?

(Отредактировано автором: 01 Августа, 2016 - 17:14:07)

 
 Top
Fart
Отправлено: 01 Августа, 2016 - 17:19:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


Помог: 10 раз(а)




все таблицы объединяешь в одну.

для вставки пишешь

if(количество_предмета и его диапозон) INSERT INTO item `Допустимое значение`
else if(количество_предмета и его диапозон) INSERT INTO item `Допустимое значение`

у этих данных 100 500 1000 5000 все будет примерно 4 условия, а не по 3-4 на каждый "товар"

и так далее
(Добавление)
конечно все верно оформив. создавать для каждого вида "товара" отдельную таблицу не имеет смысла

(Отредактировано автором: 01 Августа, 2016 - 17:23:42)

 
 Top
gnork
Отправлено: 01 Августа, 2016 - 17:27:37
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




Нет. Это не то. Так у нас получается, что все правила проверки хранятся в скрипте вставки в базу. А это, во-первых не удобно для изменения этих правил, во-вторых опять заставляет нас перебирать все правила, а мы уже пришли к решению, что при большом их количестве - это не конструктивно. А условий будет не 4. Их вполне может быть больше.
Надо искать другое решение.

(Отредактировано автором: 01 Августа, 2016 - 17:30:11)

 
 Top
Fart
Отправлено: 01 Августа, 2016 - 17:33:36
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


Помог: 10 раз(а)




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

ты четко должен понимать, что существует диапазон например от 100 до 500 - это 1 условие и в нем может быть вложено еще 1 например от 200 до 300. но создавать каждый раз от 100 до 101, 100 до 102... это нецелесообразно. здесь больше будет напрочь отсутствовать логика скрипта...
(Добавление)
тебе в итоге придется записывать данные отдельно и сравнивать только с ними.

мин, макс, допуст. значение и их перезаписывать, а менять каждый раз условие в скрипте... это не квантовое программирование.
 
 Top
gnork
Отправлено: 01 Августа, 2016 - 17:37:53
Post Id


Новичок


Покинул форум
Сообщений всего: 11
Дата рег-ции: Авг. 2016  


Помог: 0 раз(а)




Не годится привязываться к каким-то диапазонам, которые я привел для примера. Как в таком случае проверять условия сравнения не с конкретным числом, а со значением другой переменной? Например, если одно больше другого, то пишем 321, а если наоборот, то пишем .456
 
 Top
Fart
Отправлено: 01 Августа, 2016 - 17:49:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 324
Дата рег-ции: Июль 2016  


Помог: 10 раз(а)




1. если конкретное число, которое тебе нужно - его фиксируешь и сравнивать не с чем.
2. если тебе нужны "крайние" числа, то ищешь макс или минимальное значение.
3. если какое-то число должно быть меньше другого или наоборот больше какого-то - здесь должен ты понимать в какой именно момент и в сравнении с какими числами. машина за тебя не поймет если ты сам не понимаешь в какой момент сравнить. значит нужен диапазон. и все будет зависеть от величины этих значений.
можно указать машине логически что тут диапазон и рассмотреть ситуацию, а не бесконечно сравнивать числа.

Например, если одно больше другого, то пишем 321, а если наоборот, то пишем .456

вот твой пример.
a = 100
a1 = 321
a2 = 456

код получает их либо сразу, либо по отдельности. если сразу, то делаем выборку макс значения, если по отдельности то они после каждой загрузки скрипта будут видеть макс значение.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB