Здравствуйте. Возникла следующая задачка: Допустим, в базе данных есть категории, которые сортируются по "position" position 1 2 3 4 5 6 7 8 9 Теперь удаляем несколько категорий: Код (PHP): $sql = "DELETE FROM cats WHERE id_cat IN(3,5,7,8)"; соответственно в базе позиции становятся вида: position 1 2 (del 3) 4 (del 5) 6 (del 7) (del 8) 9 Т.е. нумерация с пробелами, не по порядку - 1. 2. 4. 6. 9. Как поле "position" изменить, чтобы после удаления сразу нескольких категорий этих пробелов не было? Точнее как обновить порядок, чтобы было снова всё по порядку? - в данном примере стало - 1, 2, 3, 4, 5. Надеюсь ясно выразился PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Re: Пересчитать и обновить в базе данных позиции после удале Они как были по порядку, так и остались, только с пробелами в айдишниках. Это создает какую-то проблему?
Re: Пересчитать и обновить в базе данных позиции после удале пока проблем нет, на ночь глядя мысля пришла - а вдруг кто-то уже подобную задачку делал, интересно увидеть примерное решение и, кстати, в поле "position" значения не обязательно уникальные
Re: Пересчитать и обновить в базе данных позиции после удале Мне с 2007 года не встречались такие решения. PHP это чаще всего сайты. А там нельзя менять айдишники категорий. Представь, удалишь первую категорию, и у тебя все страницы переедут по урлу (если в урле есть id категории). От такого поворота, поисковики спрячут твой сайт глубоко-глубоко.
Re: Пересчитать и обновить в базе данных позиции после удале разумеется, уникальное поле в базе есть "id_cat", дополнительно для сортировки добавил ещё поле "position", обновлять нужно именно это поле, а не "id_cat" Добавлено спустя 4 минуты 37 секунд: Re: Пересчитать и обновить в базе данных позиции после удаления если удалять только одну категорию, то решение простое Код (Text): $sql = "UPDATE cats SET position = position-1 WHERE position >= {$pos} AND position != 0"; а если сразу несколько категорий удалить, как потом обновлять позиции не знаю
Re: Пересчитать и обновить в базе данных позиции после удале Ну можно удалять по одной... Делать отдельный запрос для каждой категории, потом апдейтить позиции. Хотя неравномерность номеров позиций в принципе не шибко усложняет управление порядком.