imediasun пишет:как добавить в базу строку под 3 им номером при этом чтобы все строки включая третью сместились на единицу в большую сторону, тем самым уступая место новой третьей строке.
Это может nested set model. Там опупенные запросы на такие операции. Но вы можете понять что в БД никаких номеров строк вообще не предусмотрено и не будет. Поэтому когда вам они нужны - их надо вычислять по различным обстоятельствам самостоятельно. Допустим для всякого рода рейтингов придется добавить поле рейтинг и попросту сортировать по нему. У кого стоит выше - тот окажется впереди и наоборот.
(Добавление)
Рейтинг добавляется с 1, а потом при каждом лайке увеличивается на 1. update table set rating = rating + 1;
(Добавление)
imediasun пишет:вставит в портфолио картинку под определенным приорететом
Это хуже. Придется дейсвительно перезаписывать все. Геморрой. Называется упорядочивание. К сортировке отношения не имеет. Поэтому придумайте систему приоритетов в отдельной таблице и линкуйте фотки к той или иной записи. Тогда не геморрой.
CODE (
SQL):
скопировать код в буфер обмена
CREATE TABLE rating (
rating_id int UNSIGNED NOT NULL UNIQUE KEY,
rating_name varchar(64) NOT NULL
);
CREATE TABLE photos (
photo_id...
rating_id int UNSIGNED NOT NULL
);
SELECT * FROM photo INNER JOIN rating USING(rating_id) ORDER BY rating.rating_id
Все, отсортировали по рейтингу. Обратите внимание что ид рейтинга не автоинкремент. Такое поле там лишнее, поскольку требуется управляемое value, автоинкремент не управляемый, но валуе должно быть уникальным и оно уникальное.
Можно сделать связь прямо по именам рейтингов. Но тогда придется индексировать имена и связанное поле должно быть такого же типа чтобы связь устанавливалась по индексу. Поэтому по числу.
Материально выглядит так. Заполняете таблицу рейтингов и затем при добавлении или редактировании записи о фотке меняете в поле rating_id значение на значение того рейтинга в таблице рейтингов которого данная говнофотка заслуживает.