• Как на PHP подготовить вставить HTML в JSON строку?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Михаил Ливач, Ну извините. Но и выкладывать примеры кода в виде мусора тоже не этично.
    Вполне логично для читающих предположить что автор упростил вопрос чтобы убрать личностные данные, чтобы потом ищущие из яндекса так же смогли понять саму идею без мусора и без шелухи. Не буду же я писать тут названия свойств объектов в виде tickets_object_event_start, tickets_object_event_stop, data_event_name_created.
    Написано
  • Как на PHP подготовить вставить HTML в JSON строку?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Михаил Ливач, Пару дней назад я задавал вопрос в тостере https://qna.habr.com/q/1278178
    Суть в том что в одной колонке в виде JSON массива находятся в каждой ячейке много сериализованных ключей.
    Конечно мне советовали не хранить список ключей сериализованных в ячейке.
    Но вопрос не в том что хранить или не хранить. Суть в том что в MySQL 8 появилась возможность работать с JSON, не ужели эту функцию в MySQL добавляли только для того чтобы на клиент передавать значения из объектов JSON. Я думаю что это прежде всего нужно для случаев хранения ключей в JSON. Разумеется так делать противопоказано.
    Но как Вы думаете если я задаю вопрос в тостере, при том что я работаю програмистом с 2007 года, мне нужны ответы что так делать не надо? То что так делать не надо я и сам знаю, но у меня сложилась ситцация, из которой надо выйти только таким способом. И если ктото так же ищет ответ как вынимать ключи из JSON в MySQL может он профессионал?
    Как думаете если человек парится JSON в MySQL кто он?
    это как например будут спрашивать вопросы по оптимизации компилятора для SSE2 не обычным способом. Стоит ли ему отвечать что так делать не стоит?
    Написано
  • Как в MySQL из JSON-объекта получить массив?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Rsa97, Печаль. Хостинг моего клиента не поддерживает MySQL 8.
    Придётся всё делать в PHP и делать мнокократное обращение к базе.
    Написано
  • Как на PHP подготовить вставить HTML в JSON строку?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Михаил Ливач,
    $array1 = ['Один','Два','Три','Четыре',];
    $array2 = $array1;
    $array2 копия массива $array1. В памяти занимает в 2 раза больше.
    Профессионалы всегда рекоменуют в Mysql SELECT указывать вместо звёздочки имена конкретных колонок.
    Потому как один лишний параметр в одном запросе увеличивает нагрузку на 10%, а потом окажется что всё приложение увеличивает нагрузку на 10% потому как разработчик в отдельном запросе не беспокоился об экономии.
    Я пишу приложения и плагины для CMS Joomla. Сама Joomla оптимизирована в меру своих возможностей. Моё приложение на этой CMS так же потребляет столько же нагрузки ЦПУ как и вся CMS.
    Если Я буду писать своё приложение без оптимизаций, даже не в угоду читабельности кода, а просто бездумно копируя массивы, при том что данных объектов из БД на одной странице пользователя должно отображаться до 5 тысяч.
    То вот мне делать не фиг лишний раз сериализовать и десириализовать эти объекты.
    5000 объектов это места для зала.
    Написано
  • Есть ли оболочки (cms) для работы с mysql таблицами?

    accountnujen Artem Mamaev, они просто фигнёй страдают. Например спросишь бабку на улице как пройти в библиотеку, так она говорит что мол библиотеки сейчас не те что были в её молодости, да и зрение чтото тоже не для чнения в библиотеках.
    А если ктото я яндексе будет искать ответ на такой же вопрос. Эти ребята прям помошники. Ведь автор реально будет искать дальше ответ, а значит ответы этих ребят как вилами по воде.

    Как один миллиардер сказал, что мол ему юристы говорят что чтото зделать не позволяет закон. Миллиардер сказал, что он это знает и без юристов, пусть они скажут как это сделать при наличии закона.
    Написано
  • Каков план личностного развития JavaScript программиста с нуля?

    ЭРИК Галин, Там же всё просто. Для изучения JavaSript нужно освоить терпение, целеустремлённость, прилежность, находчивость, трудолюбие. Эти личностные качества помогут в освоении профессиональных качеств в JavaScript
    Написано
  • Как в MySQL из JSON-объекта получить массив?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Rsa97, Спасибо большое за наводку. Даже не знал что такие возможности есть.
    CREATE TABLE Orders(id INTEGER, csv VARCHAR(80));
    INSERT INTO Orders(id, csv) VALUES
    (1, '0:A:1683481111,1:A:1683481112,2:A:1683481113,3:A:1683481114,4:A:1683481115'),
    (2, '0:B:1683481121,1:B:1683481122,2:B:1683481123');
    
    WITH RECURSIVE str_row  AS (
            SELECT csv
            FROM Orders
            UNION ALL
            SELECT SUBSTRING(csv,16) csv
            FROM str_row
            WHERE   LENGTH(csv) > 14   
    )
    SELECT SUBSTRING(csv,1,14) FROM str_row

    Возвращает:
    0:A:1683481111
    0:B:1683481121
    1:A:1683481112
    1:B:1683481122
    2:A:1683481113
    2:B:1683481123
    3:A:1683481114
    4:A:1683481115

    https://www.mycompiler.io/view/7EK4TDRdIsb

    Когда спрашивал Вас, думал что это не реально. Разве что при помощи REPLACE() превращать строку в JSON объект.
    Спасибо.

    Rsa97, Ещё вопрос по главному вопросу с JSON. В Вашем примере сравнение происходит со значениями в JSON, а как сделать чтобы сравнение было с ключами (именами свойств объекта) JSON?
    И в последнем примере подскажите, кроме того что это рекурсия, есть ли другие замечания?
    И наверно без рекурсии такие вещи не решаются.
    Написано
  • Как в MySQL из JSON-объекта получить массив?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Rsa97, Подскажите а возможно ли тоже самое сделать только с CSV содержимым,
    Если например в ячейке находится "1,2,3",
    Для другой таблицы я использовал функции PHP для работы с CSV. Чтобы было легко дописывать данные в ячейку.
    В результате в ячейке содержится "0:F:1683481184,1:C:1683481184,3:F:1683481184,1:F:1683481184,0:F:1683481184".
    Это тоже колонка в таблице заказов, первая цифра это номер подзаказа, буква статус подзаказа, а число это время в Unix.
    Возможно ли так же это аналогично предыдущему разщепить. Задача: нужно находить заказы, подзаказы которых входят в временной интервал.
    SELECT o.*
    FROM Orders o
    WHERE o.csv[*][2] >= NOW();

    Спасибо за Вашу помощь, я даже первый вопрос писал думая что ответа ни кто не даст. Это скорей моё везение, что Вы мне попогли.
    Написано
  • Как в MySQL из JSON-объекта получить массив?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Rsa97, Вау. Круто, спасибо огромное.
    Я специально пишу вопросы так чтобы поисковик мог правильно найти потом его ответ. Но в Tosterе Habr нет возможности делать поиск по своим же личным запросам, которые накапливаются как справочная со временем, можно только листать историю и подрят перебирать. Писал в поддержку, сказали что им пофиг.

    Повторю правильный ответ тут:
    CREATE TABLE Orders(id INTEGER, jsons VARCHAR(30));
    INSERT INTO Orders(id, jsons) VALUES
    (1, '{"1":1,"2":1,"72":3}'),
    (2, '{"11":1,"23":1}');
    
    
    CREATE TABLE Attr(id INTEGER, val VARCHAR(30));
    INSERT INTO Attr(id, val) VALUES
    (1, 'Один'),
    (2, 'Два'),
    (3, 'Три'),
    (4, 'Четыре');
    
    
    SELECT o.*, a.* 
    FROM Orders o
    JOIN JSON_TABLE(o.jsons, '$.*' COLUMNS(`child` INT PATH '$') ) as js
    JOIN Attr a ON a.id = js.`child`;
    Написано
  • Как в MySQL из JSON-объекта получить массив?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Rsa97, я наверно что то не так делаю.
    в каждой ячейке колонки лежит отдельный JSON объект.
    как {"1":1,"2":1,"72":3} и как {"11":1,"23":1}
    т.е. получается связь таблиц один ко многим. Только в данном случае связь не во второй таблице указана, а указана в первой в виде IDшек в JSONе.

    Я накидал рабочий пример с ошибкой в Онлайн редакторе.
    https://www.mycompiler.io/view/9ILsDSOD3fF
    Посмотрите пожалуйста!

    CREATE TABLE Orders(id INTEGER, jsons VARCHAR(30));
    INSERT INTO Orders(id, jsons) VALUES
    (1, '{"1":1,"2":1,"72":3}'),
    (2, '{"11":1,"23":1}');
    
    SELECT o.*, a.* 
    FROM Orders o
    JOIN JSON_TABLE(o.jsons, '$.*' COLUMNS(`child` INT PATH '$') ) as js
    JOIN Attr a ON a.attr_id = js.`child`;
    Написано
  • Как в MySQL из JSON-объекта получить массив?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Rsa97, я понимаю что что-то не правильно. Но уже нет времени абсолютно всё переделывать. Есть время только JSON разворачивать, либо в PHP либо в MySQL.
    Есть таблица с заказами, в полях одной колонки лежат именованные массивы.
    ['value_id'=>'attritute_id', ...... ];
    При серриализации IDшки массива завернулись в JSON объект.
    Так я хотел получить результат запроса двух таблиц.
    Но вот ID второй таблицы завёрнуты в JSONы объектов первой таблицы.
    Написано
  • Как в MySQL из JSON-объекта получить массив?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    круто . А можно полученную строку как то скомбинировать с CONCAT_WS чтобы получить новый JSON и уже дисериализовать.
    мне то нужно по этим цифрам найти значения из другой таблицы
    Написано
  • Как на GitHub поменять целевую ветку для PR?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Сергей Кузнецов, Но спустя время я мне приходят уведомления что мои PR переносятся из J4.2 на J4.3.
    Это так могут только владельцы репозитория переносить?
    Написано
  • Как на PHP подготовить вставить HTML в JSON строку?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Михаил Ливач, да уж таких людей тоже не встречал. Например какой нибудь юзер будет в яндексе искать решение своей проблемы, напишет в поиске запрос аналогичный названию запроса этого вопроса. Ему высветится этот..
    А в нём он увидит что мол не фиг парится дисериализуй обратно вобъекты меняй значения а потом обратно сериализуй. Между прочим JSON часто используется для локализации приложения на разных языках. Т.е. подгружаются из файла а потом переменные подставляются в нём, а потом отпрпавляются на клиент в виде JSON.
    Написано
  • Как на PHP подготовить вставить HTML в JSON строку?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Михаил Ливач, В том что люди часто используют форматированую строку и декларативный подход.
    $format_string = '{"one":"%s"}';
    echo sprintf($format_string , json_encode  ($html));

    Как по Вашему строку надо вначале десериализовать в объект заменить свойство а потом обратно сериализовать в JSON?
  • Как на PHP подготовить вставить HTML в JSON строку?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Михаил Ливач, Согласен с Вами, быстро отработает. Но иногда приходится писать так чтобы было удобно читать потом. Т.е. писать в формате echo '{"content":'.json_encode ($html) .'}';
  • Как приклеивать блок DIV к верхнему и к нижнему краю одновременно используя POSITON:STICKY;?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Спасибо, на радостях уже подключил либу.
    Но разочаровался, в ней нет декларативного подхода. Вроде так солидно всё выглядит, а декларации нет.
    А в моём случае подключаю к CMS, лишние вложенные скрипты в основной документ не желательны.
    Спасибо за совет. Поищу что-нибудь с Affix Sidebar.
  • Как получить поле для максимального значения другой группированной строки GROUP BY в MySQL?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    N, А что Вы думаете об этом?
    SELECT p.*,   h.date, h.status
    FROM product p
    LEFT  JOIN history h ON p.id = h.prod_id
    ORDER BY h.date;
  • Как получить поле для максимального значения другой группированной строки GROUP BY в MySQL?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    А что Вы думаете об этом?
    SELECT p.*,   h.date, h.status
    FROM product p
    LEFT  JOIN history h ON p.id = h.prod_id
    ORDER BY h.date;
  • Как на PHP подготовить вставить HTML в JSON строку?

    Dier_Sergio_Great
    @Dier_Sergio_Great Автор вопроса
    Михаил Ливач, Что же Вы , 2 Вам по знанию PHP
    Вот. Валидный JSON.
    $html =" <span  style='display:block;' class=\"active\"> 
    
    123 </span>";
    echo   '{"content":'.json_encode  ($html) .'}';


    Кавычки надо было убрать перед и после функции json_encode().