PHP. Помощь с алгоритмом

232
05 апреля 2017, 17:14

На сайте реализована функция определения города и региона по ip. Так вот, нужно чтобы у каждого города или региона выводилась определенная информация. Нужен алгоритм. Ведь это совсем не удобно для каждого города вбивать информацию, их сотни. Можно конечно сделать множественный выбор списка (где выбираются города), но тогда как это все записать в базу, ведь города не должны повторяться. Например, я вбиваю информацию для всей Московской области, а кто-то отдельно для Москвы, так не должно быть. Должно быть так, один город = один текст.

Пример: Допустим, админ сайта хочет чтобы у каждого города выводился свой баннер. Он заходит в админку выбирает город и указывает какой баннер выводить. Но это не удобно, городов сотня, каждому вбивать город не удобно. Мне б хотя бы пример.

Answer 1

В дополнение к списку городов и их ip (для определения города - то, что как я понял у вас уже есть) вам нужно добавить дерево самих городов/районов/областей, чтоб понимать, какой город в какой более общий "узел" входит.

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

Читать надо начать с деревьев в теории графов https://ru.wikipedia.org/wiki/%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D0%BE_(%D1%82%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D0%B3%D1%80%D0%B0%D1%84%D0%BE%D0%B2)

В базе это реализуется разными способами. Самый банальный - завести в таблице городов ещё одно поле - "выше-стоящий объект" (parent_id) и через это поле помечать какой город в какой более крупный объект вложен.

Россия
  Тверская область
    Тверь
    Кашинский район
      город Кашин
  Башкортостан
    Уфа
    Куюргазинский район
      город Кумертау

и т.д.

Определив по ip конкретный город, просто проверь наличие баннера для него. Если пусто - проверяй для города, который расположен выше (более общий случай), ещё выше и ещё. Пока не доберёшься до самого верхнего узла. Как только нашёл что показать - показываешь.

READ ALSO
SetCookie массив php

SetCookie массив php

Как в PHP в setCookie() передать массив?

265
Затемнение картинки при помощи php

Затемнение картинки при помощи php

Всем привет! Есть задача - обработка загруженного изображенияФото должно засериться так, чтобы на него можно было наложить текст

324
НОД для вещественных чисел

НОД для вещественных чисел

Здравствуйте! Передо мной стоит следующая задача: написать на C++ метод, вычисляющий НОД для 2 чисел типа int ИЛИ double(класс шаблонный)

299