|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
|
InfMag |
|
|||
… Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: нет Всего: 4 |
У меня есть MySQL таблица. У нее есть ID, который работает автоматом и есть поле N, которое забивается от 1ого и до конца по порядку по циклу сортируясь от ID:
Проблема в том, что я использую N для сдвига записей вверх и вниз, ID должен оставаться у записи тем же. Я меняю только местами N. Но когда использую пронумеровку в зависимости от ID, то все N перемещения сбрасываются, потому что сортировка идет от ID. Посоветуйте что можно придумать в данной ситуации. ЗЫ: Просьба не перемещать тему к Базам Данных, поскольку проблема заключается не в самой БД. |
|||
|
||||
PARROT |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 2339 Регистрация: 5.1.2005 Где: Спб-ЦарьГрад Репутация: 3 Всего: 50 |
может так? -------------------- Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим! |
|||
|
||||
InfMag |
|
|||
… Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: нет Всего: 4 |
PARROT, ну? и что это изменит? вобще функцию я сам писал, она работает и к ней у меня никаких вопросов нету.
На заметку: в php, также как и в си, есть сокращенные действия. $n++ и $n=$n+1; выполняют одно и тоже, но стоит признаться, что $n++ писать быстрее и удобнее для глаза. $n-- и $n=$n-1; анологично |
|||
|
||||
Mal Hack |
|
|||
Мудрый... Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 11 Всего: 261 |
Перекинул именно туда, т.к. Все это противоречит 1 НФ, 2 НФ и вообще сути ключа. Идет дубляж данных. Модератор: перемещено в Базы Данных -> MySQL из PHP -> PHP для начинающих |
|||
|
||||
igorold |
|
|||
Опытный Профиль Группа: Участник Сообщений: 557 Регистрация: 22.12.2005 Где: Россия->Урал-& gt;Миасс Репутация: нет Всего: 17 |
а что значит - все N перемещения сбрасываются
объясни на примере, легче будет тебе помочь ... т.е. что делаешь, что получается, а что хочешь получить? а что такое - $arr['id'] ? я с РНР не знаком - работаю с перлом и mysql ... и зачем пишешь LIMIT 1, если поле id - уникально? -------------------- ... у семи нянек 14 сисек ... Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
Ignat |
|
||||
Флудератор Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Ни фига подобного. Дубляжа здесь нет: Поле N отражает порядок следования записей и никак не отражает уникальность (по сути), в то время как id уникален и является ключом. Все данные атомарны. А где же противоречие НФ? InfMag, а вот вопрос я так и не понял, собственно как и смысл в приведенном участке кода. Добавлено @ 09:10
-------------------- Теперь при чем :P |
||||
|
|||||
igorold |
|
|||
Опытный Профиль Группа: Участник Сообщений: 557 Регистрация: 22.12.2005 Где: Россия->Урал-& gt;Миасс Репутация: нет Всего: 17 |
если взять частный случай, когда записи не удалялись, то это будут равные поля ... -------------------- ... у семи нянек 14 сисек ... Putin here, Putin there, Putin almost everywhere! |
|||
|
||||
Ignat |
|
|||
Флудератор Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Единственно возможный случай -------------------- Теперь при чем :P |
|||
|
||||
InfMag |
|
||||||||
… Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: нет Всего: 4 |
Вот, попытаюсь обьяснить.
У меня есть таблица, которая выводится так:
Тоесть сортируется она по полю N. ID тоже есть. Поле N должно быть точно от 1ого и до конечного числа. Не так, как может быть в ID:
А так:
И чтобы было именно так - я написал функцию:
Но получился один ньюанс. У записей еще есть кнопочки Вниз и Вверх, а когда нажимаешь на любую из них, то просто перемещается значение N, а ID не меняется, просто так и задумано, чтобы ID всегда оставался тем же, но когда я запускаю функцию NUMRESET, то сортировка записей идет от ID и N простанавливаются через цикл по этой последовательности и получается так, что все, что я переместил Вверх и Вниз становится обратно на свои места. Надеюсь понятно. Что делать? |
||||||||
|
|||||||||
InfMag |
|
|||
… Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: нет Всего: 4 |
У меня конечно есть мелкие идейки, но все-равно не входят в рамки. Дело в том, что при добавлении записи, ни ID ни N не указывается и не должно. Все должна выполнять функция numreset.
Вот у меня например была идея в функции numreset поставить сортировку по самой N, но если добавить запись, то N будет равняться нулю и эта запись пойдет самой первой, проблему можно решить при указании N, когда добавляешь саму запись по запросу, но я уже говорил, что так быть не должно... |
|||
|
||||
Ignat |
|
|||
Флудератор Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Понял. Вообще перетряхивать таблицу ради нумерации - не есть гуд. Но ответом на поставленный вопрос будет:
Возникает вопрос: "Для чего нужно сплошное заполнение поля N?" -------------------- Теперь при чем :P |
|||
|
||||
InfMag |
|
|||
… Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: нет Всего: 4 |
Ignat, нет, то что ты написал я уже предлагал, но я говорил про INSERT INTO, то-бишь когда добавляешь значение, то N будет по умолчанию равняться 0 и получится так, что значение будет с номером 1, а остальные пойдут потом.
N нужно, для того чтобы можно было для юзера перемещать значения вверх и вниз, но чтобы ID всегда оставался тем же. Ух... Попроюую сам сейчас накалякать, потом отпишусь. |
|||
|
||||
Ignat |
|
||||
Флудератор Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
Вчитайся
Какое умолчание поставишь, то и будет =) хоть MAXINT
Для этого не обязательно сплошное заполнение. Ставь TIMESTAMP, а при необходимости поменять местами записи - поменяй занчение. -------------------- Теперь при чем :P |
||||
|
|||||
InfMag |
|
||||
… Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: нет Всего: 4 |
Ignat,
Цитата(InfMag @ 24.5.2006, 13:49 ) Ignat, нет, то что ты написал я уже предлагал >>> Вчитайся Я точно тебе говорю. А вот при создании тейбла поставить дефольт MAXINT это идея! Спасибо! Добавлено @ 13:25
А что писать то?
Добавлено @ 13:31 Темка конечно переходит уже к теме mysql, но все же, как по дефольту проставить maxint? |
||||
|
|||||
Ignat |
|
|||
Флудератор Профиль Группа: Экс. модератор Сообщений: 4030 Регистрация: 19.4.2004 Где: غيليندزيك مدينة Репутация: нет Всего: 73 |
что-то вроде
-------------------- Теперь при чем :P |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |