Привет. Сломал голову. Есть задача - добавить товар в базу данных и в отдельном столбце сохраняю формулу для расчета продажной цены. Вот как я придумал: (пример) Коробок спичек, Формула для расчета цены: {цена коробка}+100*{цена 1й спички} $text = '{69}+100*{70}'; //в фигурных скобках указываю айди ячеек в БД где сохранил стоимости нужных компонентов if(preg_match_all('/{(.*?)}/', $text, $matches)) { print_r($matches[1]); } на выходе получаю массив, но как с этим работать дальше никак не могу понять! Помогите!
если формулу записывать в обычном виде без фигурных скобок, а так типа 65+(123*23)/2 итд то можно использовать просто функцию eval()
Я бы вовсе по таблицам распараллелил вот эту всю чепуху и сделал бы хронологию с ценновой политикой. Каждый товар при добавлении указывал на айди другой таблицы, где сохраняются все ценники. Либо я json строку впихую в ячейку, после с командами че и как, "тело" производит действие. Говнокод в деле Алилуя
никакой, так как данные формулы не задаются пользователем. А свой аналог экселя, даже в простейшем случае это тот ещё гемор, поверьте
А это и не обязательно делать. Формулы в коде, а основные переменные, какие-то коэффициенты, идентификаторы или др. селекторы формул в БД. --- Добавлено --- Кстати, формулы можно хранить и в SQL-коде --- Добавлено --- А еще в мускуле есть «генерируемые» столбцы
ммм.... но раз такой спец.. давай-ка, покажи как легко и просто сделать? Дано: есть набор формул, пару десятков для вычисления неких статистических отчетов, формулы оперируют с числами, арифметическими операциями, +,-,*,/ и имеют приоритеты с помощью скобок.. ну как в обычной математике к примеру - повторяю, таких формул много, постоянно добавляются и иногда меняются (не пользователем, а программистом - по заявке пользователя) что исключает в eval() попадания зловредного код как написать универсальную функцию для расчета значений формул? Насчет ТС ... тут да... мне кажется чел перебарщивает, вряд ли формула будет постоянно меняться, да и простая она достаточно сделать "генерируемый" столбец на основе данных записи
Добрый день! В БД есть таблицы, в них строки и столбцы, а что такое "айди ячеек в БД"? Для чего всё это? Почему Вы не хотите делать вычисления по формулам в SQL запросах? Если формул может быть несколько, то связано ли это с данными в полях таблицы? (например, с категорией товара)