Какая разница алгоритму, какое число комбинаций перебирать? Ты написал что еще один пункт не выстроится по правилу, с чего бы это PHP: $r = Array('Питер','ул. Красная', 'Москва','Сочи'); Код (Text): Питер - ул. Красная Питер - Москва Питер - Сочи ул. Красная - Москва ул. Красная - Сочи Москва - Сочи --- Добавлено --- Джойнить - это про JOIN в sql --- Добавлено --- Сначала составляешь список для листа, с ид - название. Потом по ид выстраиваешь последовательность.
Начнем с того, что все улицы страны я просто не смогу сделать. Пользователь сам вносит эти улицы. Я с SQL плохо знаком. Знаю только основы.
Иии записывать их в отдельную таблицу-список религия не позволяет? Это будет правильно. И бонус - ты накопишь базу названий и сможешь запилить автокомплит при наборе букв. Чтобы помогать пользователю и не копить дубли, которыми твоя база будет переполнена. И ты так и не объяснил, что неправильного в результате моего алгоритма. --- Добавлено --- Алгоритм с указателем массива потребует 0 затрат память и сработает в сто раз быстрее, чем select.
Хорошо. В нем все правильно, есть просто проблема. Если в базе уже существует комбинация (например): 1-2 1-3 1-4 2-4 И я хочу добавить еще одну, например, 5, нужно чтобы получилось таким образом: 1-2 1-3 1-4 1-5 2-4 2-5 3-5
@Danil005 если задача связана с упорядочиванием элементов по порядку, чтобы вставить вдруг появившися пятый элемент в середину, то это задача по сортировке меню в БД. Когда CMS позволяет передвигать пункты вверх-вниз, она не меняет положение строк в базе. Обычно, у элементов есть поле вес и оно может выставляться с большим шагом (например, 1000). Чтобы передвинуть элемент вверх, надо выставить вышестоящему пункту вес на единицу больше, чем у этого. Например было Код (Text): A | 1000 B | 2000 C | 3000 стало Код (Text): A | 2001 B | 2000 C | 3000 т.е. добавляешь новую запись в конец, потом с помощью веса выставляешь на нужное место. Из базы всегда выбираешь с сортировкой по весу.
@[vs], ты не понял. У меня уже есть комбинация в бд, а мне к этой комбинации нужно добавить элемент, тем самым сделать еще больше комбинаций. Было 1-2 1-3 2-3 Стало после доавления ОДНОГО элемента (элемент: 4) 1-2 1-3 1-4 2-3 3-4
Я так делал, нужно брать уникальные значения. Сегодня проснулся и меня осенила мысль. Как ты и говорил, создать еще одну таблицу и записывать иды, следовательно именно оттуда я брал значения. Впрочем, спасибо, кто пытался вникнул в мой бред!