За последние 24 часа нас посетили 20588 программистов и 1331 робот. Сейчас ищут 696 программистов ...

Вытащить информацию из строки и превратить её в формулу

Тема в разделе "Регулярные выражения", создана пользователем Pelsh, 30 янв 2024.

  1. Pelsh

    Pelsh Новичок

    С нами с:
    30 янв 2024
    Сообщения:
    1
    Симпатии:
    0
    Привет. Сломал голову.
    Есть задача - добавить товар в базу данных и в отдельном столбце сохраняю формулу для расчета продажной цены.
    Вот как я придумал: (пример)

    Коробок спичек, Формула для расчета цены: {цена коробка}+100*{цена 1й спички}


    $text = '{69}+100*{70}';
    //в фигурных скобках указываю айди ячеек в БД где сохранил стоимости нужных компонентов


    if(preg_match_all('/{(.*?)}/', $text, $matches)) {
    print_r($matches[1]);
    }


    на выходе получаю массив, но как с этим работать дальше никак не могу понять! Помогите!
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.827
    Симпатии:
    738
    Адрес:
    Татарстан
    если формулу записывать в обычном виде без фигурных скобок, а так типа
    65+(123*23)/2 итд
    то можно использовать просто функцию eval()
     
  3. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    866
    Симпатии:
    134
    Дыра в безопасности, но самое простое решение.
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.753
    Симпатии:
    1.322
    Адрес:
    Лень
    Я бы вовсе по таблицам распараллелил вот эту всю чепуху и сделал бы хронологию с ценновой политикой. Каждый товар при добавлении указывал на айди другой таблицы, где сохраняются все ценники. Либо я json строку впихую в ячейку, после с командами че и как, "тело" производит действие.

    Говнокод в деле Алилуя
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.827
    Симпатии:
    738
    Адрес:
    Татарстан
    никакой, так как данные формулы не задаются пользователем. А свой аналог экселя, даже в простейшем случае это тот ещё гемор, поверьте
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.753
    Симпатии:
    1.322
    Адрес:
    Лень
    если вы используете ebal в своём коде, то это значит что-то вы не то делаете
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.794
    Симпатии:
    650
    А это и не обязательно делать. Формулы в коде, а основные переменные, какие-то коэффициенты, идентификаторы или др. селекторы формул в БД.
    --- Добавлено ---
    Кстати, формулы можно хранить и в SQL-коде ;)
    --- Добавлено ---
    А еще в мускуле есть «генерируемые» столбцы ;)
     
  8. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.827
    Симпатии:
    738
    Адрес:
    Татарстан
    ммм.... но раз такой спец.. давай-ка, покажи как легко и просто сделать?

    Дано: есть набор формул, пару десятков для вычисления неких статистических отчетов,
    формулы оперируют с числами, арифметическими операциями, +,-,*,/ и имеют приоритеты с помощью скобок.. ну как в обычной математике
    к примеру -
    повторяю, таких формул много, постоянно добавляются и иногда меняются (не пользователем, а программистом - по заявке пользователя) что исключает в eval() попадания зловредного код

    как написать универсальную функцию для расчета значений формул?

    Насчет ТС ... тут да... мне кажется чел перебарщивает, вряд ли формула будет постоянно меняться, да и простая она
    достаточно сделать "генерируемый" столбец на основе данных записи
     
  9. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
    spritf()
    mysqli()
     
  10. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.753
    Симпатии:
    1.322
    Адрес:
    Лень
    Открыть гугл.
     
    Sail нравится это.
  11. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    260
    Симпатии:
    51
    Адрес:
    Бавария, Германия
    Добрый день!
    В БД есть таблицы, в них строки и столбцы, а что такое "айди ячеек в БД"?
    Для чего всё это?
    Почему Вы не хотите делать вычисления по формулам в SQL запросах?
    Если формул может быть несколько, то связано ли это с данными в полях таблицы? (например, с категорией товара)
     
    #11 Vladimir Kheifets, 1 фев 2024
    Последнее редактирование: 1 фев 2024