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
Форумы портала PHP.SU :: Версия для печати :: Есть такая вот задача
Форумы портала PHP.SU » » Вопросы новичков » Есть такая вот задача

Страниц (1): [1]
 

1. imediasun - 31 Октября, 2013 - 22:01:43 - перейти к сообщению
Здравствуйте, есть такая вот задача . Есть база данных значения id_photo от 1 до 10
CODE (html):
скопировать код в буфер обмена
  1.  
  2.  [id_photo] => 1
  3.  [thumb_path] => /works/thumbs/707097738.jpg
  4.  [photo_path] => /works/1.jpg [title] => Lorem ipsum dolor sit amet
  5.  

как добавить в базу строку под 3 им номером при этом чтобы все строки включая третью сместились на единицу в большую сторону, тем самым уступая место новой третьей строке.
2. armancho7777777 - 31 Октября, 2013 - 22:06:02 - перейти к сообщению
Вопрос: зачем этот танец с бубном ?
Для чего ?
3. imediasun - 31 Октября, 2013 - 22:40:35 - перейти к сообщению
вставит в портфолио картинку под определенным приорететом
4. esterio - 01 Ноября, 2013 - 01:24:18 - перейти к сообщению
дрбвте поле с приоритетом
5. deblogger - 01 Ноября, 2013 - 11:18:04 - перейти к сообщению
imediasun пишет:
как добавить в базу строку под 3 им номером при этом чтобы все строки включая третью сместились на единицу в большую сторону, тем самым уступая место новой третьей строке.


Это может nested set model. Там опупенные запросы на такие операции. Но вы можете понять что в БД никаких номеров строк вообще не предусмотрено и не будет. Поэтому когда вам они нужны - их надо вычислять по различным обстоятельствам самостоятельно. Допустим для всякого рода рейтингов придется добавить поле рейтинг и попросту сортировать по нему. У кого стоит выше - тот окажется впереди и наоборот.
(Добавление)
Рейтинг добавляется с 1, а потом при каждом лайке увеличивается на 1. update table set rating = rating + 1;
(Добавление)
imediasun пишет:
вставит в портфолио картинку под определенным приорететом


Это хуже. Придется дейсвительно перезаписывать все. Геморрой. Называется упорядочивание. К сортировке отношения не имеет. Поэтому придумайте систему приоритетов в отдельной таблице и линкуйте фотки к той или иной записи. Тогда не геморрой.
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE rating (
  3. rating_id int UNSIGNED NOT NULL UNIQUE KEY,
  4. rating_name varchar(64) NOT NULL
  5. );
  6.  
  7. CREATE TABLE photos (
  8. photo_id...
  9. rating_id int UNSIGNED NOT NULL
  10. );
  11.  
  12.  
  13. SELECT * FROM photo INNER JOIN rating USING(rating_id) ORDER BY rating.rating_id


Все, отсортировали по рейтингу. Обратите внимание что ид рейтинга не автоинкремент. Такое поле там лишнее, поскольку требуется управляемое value, автоинкремент не управляемый, но валуе должно быть уникальным и оно уникальное.
(Добавление)
Можно сделать связь прямо по именам рейтингов. Но тогда придется индексировать имена и связанное поле должно быть такого же типа чтобы связь устанавливалась по индексу. Поэтому по числу.
(Добавление)
Материально выглядит так. Заполняете таблицу рейтингов и затем при добавлении или редактировании записи о фотке меняете в поле rating_id значение на значение того рейтинга в таблице рейтингов которого данная говнофотка заслуживает.

 

Powered by ExBB FM 1.0 RC1