| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Порядок записей |
| Автор: Spectre 22.7.2006, 11:17 | ||
| Есть таблица id, title, body, num num - это порядковый номер в котором выводить на экран запись. Мне надо сделать так, что бы при введении новой записи в бд у меня они переставлялись. То есть при наличии 7 записей я ввожу 8-ю и указываю что бы ее порядковый номер был 3, а все остальные записи в БД, включая текущую третью и выше, обновляли порядковый номер на num + 1. Вот пока так сделано:
$num - это получаемый номер записи из формы добавления записи. Тут несколько лишних записей которые можно изменить, но должно работать помоему. А не работает. Он присваивает новой записи тот порядковый номер который я указываю, а остальные записи получают последний, тот который должен был быть у этой если бы я не поменял. |
| Автор: Gold Dragon 22.7.2006, 14:42 | ||
| Spectre, что-то я не понял.. а в чём проблема то.. тебе нужно именно чтобы в `num` всё переименовать или чтоб выводить в порядку? Если только выводить, то достаточно отсортировать по полю `num` и всё, ну плюс добавить какое-нибудь дополнительное поле для сортировки, например `data` (ну чтоб сортировать если будет несколько одинаковых `num`) а вообще-то это наверное в раздел PHP вот код, что не понятно, спрашивай
|
| Автор: Spectre 22.7.2006, 15:49 |
| Отсортировать по num не проблема... num у меня всегда должен быть уникальным. Но при этом если я при введении нового вопроса указываю уже существующий num, то он должен выдать этому вопросу этот номер, а все вопросы последующие, и тот который заменили должны сдвинуться на единицу вперед. Был 2 стал 3 и т.д. Как составить такой запрос. |
| Автор: Gold Dragon 22.7.2006, 17:30 |
| как сделать всё это одним запросом пока не представляю... что-то не выходит... а на PHP я тебе написал, вроде всё работает как ты хочешь |
| Автор: skyboy 22.7.2006, 21:28 |
| поясни, пожалуйста, id - это уникальное поле? Или ты по нему определяешь, что куда вставлять? Набросай короткий пример лучше - что было и как стало.... |
| Автор: Spectre 22.7.2006, 21:39 |
| id у меня уникален и я не по нему определяю... Пример такой У меня есть таблицв. id / body / num id - уникален и имеет свойство auto_incriment или как там. Второй ряд содержит то что надо выводить на экран. А третий - порядок в котором выводить. Там числовое значение. Забиваю базу через форму на страничке сайта. При этом у меня автоматически высчитывается значение поля num что бы не повторялось. Допустим забил в базу 5 значений... получилось у меня num от 1 до 5. Теперь я забиваю значение шестое.. но мне надо, что бы оно было не шестым по порядку а например вторым... В форме я меняю автоматом поставленную 6-ку на 2. Нажимаю "Добавить" и мне надо что бы он сместил во всех записях от 2 до 5 значение поля num на 1. А потом вставил 6-ю запись со значением num = 2... А поле с id = 2, то есть второе забитое, у которого раньше и num = 2 обновилось. Там num теперь 3. так же и с остальными до конца таблицы. Было до id / body / num 1 / а / 1 2 / б / 2 3 / в / 3 Ввожу новую строку: 4(автоматом, я не могу изменить) / г/ 2(сам поменял. Предлагало 4) Получается: 1 / а / 1 2 / б / 3 3 / в / 4 4 / г / 2 |