Snake800

Snake800
Рейтинг
237
Регистрация
02.02.2011
(_._)
rudireg :
Хочу такую же к себе на сайт.

Эмм... А зачем? Можно же просто указать номер карты и сумму. На чём, похоже, функция сервиса и заканчивается. 🤔

Shelton724 #:
когда всё начало падать, его же и вызвонили в дороге, развернули, он приехал и сделал всё как было. 😀

Ну чем не герои? И всё сделавший чувак, и тот, что его вызвонил, и третий, что дал им пр...дона и доложил наверх об успехе 😁

egel #:
Кроворукие уронили зону .ru, но оказывается это все глобальная инфраструктура виновата! 🤣🤣🤣

Может даже кого-то к наградам представят за оперативное восстановление и слаженное управление ликвидацией аварии.

Biomusor #:

Не работает у меня ru домен с CF :( При этом на ПК с Windows DNS от гугла вбит

Google dns, как и 1.1.1.1 всё ещё не ресолвит многие .ru. В том числе те, что хостятся на cf.

evgeniymx #:
ДО полной блокировки их подсетей в РФ.

Может быть и не полностью, но законные основания для блокировки ip или отдельных подсетей "без объяснения причин" теперь вроде как имеются.

LEOnidUKG #:

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

Обычный рекурсивный джойн, ничего сложного. А вот если
LEOnidUKG #:
СРАЗУ в переменную выгрузить все эти id,id_parent и уже с ними работать

то получим табличку, предположительно на 7000 строк, которую всё равно надо будет обсчитывать для получения уровня вложенности каждого из id.

Если MySQL версии 8.x, уровень вложенности можно получить таким запросом (результат 1 -  нет предка, 2 - один предок и т.д.):

WITH RECURSIVE cte (id, id_parent, depth ) AS
(
  SELECT id, id_parent, 1 as depth FROM `content` WHERE id=[id, для которого ищем глубину вложенности]
  UNION ALL
  SELECT c.id, c.id_parent, cte.depth+1 FROM `content` c JOIN cte
  ON c.id=cte.id_parent
)
SELECT max(depth) as level FROM cte

Тогда метод можно трансформировать таким образом:

function level($id) {
        $result = mysql_query("WITH RECURSIVE cte (id, id_parent, depth ) AS (SELECT id, id_parent, 1 as depth FROM `content` WHERE id='$id' UNION ALL SELECT c.id, c.id_parent, cte.depth+1 FROM `content` c JOIN cte ON c.id=cte.id_parent) SELECT max(depth) as level FROM cte");
        $myrow = mysql_fetch_array($result);
        return $myrow["level"];
}

Без циклов и одним запросом

Не парьтесь вы с этим id. Надо сокращать количество запросов. Уверен, что это можно реализовать относительно легко и, если повезёт, может быть даже не поломав сайт. В те времена код обычно был не сильно мудрёным.
Kaavain #:
Не?

Не. Да, часто есть смысл разбивать сложный запрос на несколько, но 1150 sql запросов на страницу это оверхед. Если уж очень нужно кидать запрос на получение иерархии предков для каждого выводимого элемента например, стоит посмотреть в сторону рекурсивных запросов CTE. А вообще такие объекты как правило кэшируются в виде связанных списков. Или решается одним или небольшой группой запросов, в зависимости от рабочих задач и природы данных.

Всего: 2062