Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Сортировщик таблицы в базе данных
INSERT INTO `catalog` VALUES (1,'Юзер Коля','Нуп, каких мало. Неадекват');
INSERT INTO `catalog` VALUES (2,'Эникейщик Вася','Хороший специалист');
INSERT INTO `catalog` VALUES (3,'Одмин Петя','Одмин - такой одмин...');
Стоит такая задача:
Напейсать набор функций на PHP, которые бы
1). Раздавали полям `id` - собственно id-ы по порядку.
2). Перенумеровывали бы id-ы (Например в случае удаления второй строки из табла, у нас останутся строки с id-ами 1 и 3. А функция должна их перенумеровать, рассчитав на 1 ... 2, т.е. снова по порядку)
Кто что может посоветовать, и\или напейсать? Нужны свежие идеи
----- И чё?
Мелкий
Отправлено: 05 Июня, 2010 - 17:01:13
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
1) auto_increment
2) зачем?
----- PostgreSQL DBA
Haron
Отправлено: 05 Июня, 2010 - 17:05:52
Частый гость
Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010 Откуда: Оттуда
Помог: 5 раз(а)
Мелкий пишет:
1) auto_increment
2) зачем?
Автоинкремент криво всё делает, и уже пробовался. Если из трёх строк например удаляется средняя - он не будет перенумеровывать по порядку, а если потом создать в табле новую запись - он ей присвоит ид = 4... Результат: Строки будут идти с ид-ами 1, 3, 4.... А надо чтобы оно перерассчиталось, и стало 1, 2, 3 - как и надо.
----- И чё?
Мелкий
Отправлено: 05 Июня, 2010 - 17:14:14
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
см. п.2
----- PostgreSQL DBA
Haron
Отправлено: 05 Июня, 2010 - 17:24:38
Частый гость
Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010 Откуда: Оттуда
Помог: 5 раз(а)
Мелкий пишет:
см. п.2
Пишу редактор каталога. По этому таблу генерится HTML-таблица, с опциями правки и удоления. В случае удоления не с конца, а например, записи с середины откуда-нибудь, все ид-ы сбиваются к к чертям (например - переколбасило всю сгенереную таблицу), что доставляет некоторые неудобства. Есть два варианта, либо я изначально писал неправильно и надо всё напейсать по-другому (что уже не вариант, так как в коде уже слишком "многа букафф", и времени нет, заказчики напирают...), либо впереть костыль под названием "ренумератор таблицы"...
В ПХП и мускуле я недавно, до этого имел дело только с MaxScript и Maya питон (MEL)... Трёхмерщик я, но увы, кризис, и надо искать новые возможности...
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
id должен однозначно указывать на строку, на то он и идентификационный номер. А если всё пересчитывать - то легко попасть в аномалии реляционной базы данных, например:
поток 1 изменяет данные строки №3.
поток 2 удалил строку №2, выполняется пересчёт id
поток 1 сохраняет данные в строку №3 и... заменяет данные бывшей строки №4.
Вот это как раз и есть "все id сбиваются к чертям".
Можно, конечно, и пересчитывать id. Будет что-то типа такого:
Покинул форум
Сообщений всего: 197
Дата рег-ции: Июнь 2010 Откуда: Оттуда
Помог: 5 раз(а)
Проблему решил гораздо проще... Тупо сделал так, что теперь, в редакторе, можно удалить лишь последний элемент в табличке. Остальные лишь редактировать... Да, неудобно, но проблема тем не менее, решена. Спасибо.
От себя добавлю ту самую кучку кода, которая генерит html-таблицу из из SQL-табла. Может кому пригодится...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.