[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по удалению записи из БД
P i L o T
Всем день добрый)
У меня возник вопрос по части работы php и собственно MySQL. Допустим у меня имеется блок статей и я удаляю статью под номером 8. Тогда получается что в БД новости идут со след. номерами 1 2 3 ...6 7 9.

Как сделать, чтобы при удалении на место удаленной записи вставала предыдущая, т.е. в данном случае чтобы 9-я новость стала 8-й вместо удаленной?



Спустя 1 час, 24 минуты, 13 секунд (23.02.2009 - 15:19) Adil написал(а):
Поле id не предназначено для нумерации!!!

Спустя 5 минут, 44 секунды (23.02.2009 - 15:25) Viking написал(а):
update таблитса set нумер_статьи=нумер_статьи-1 where нумер_статьи>8

Спустя 20 минут, 6 секунд (23.02.2009 - 15:45) P i L o T написал(а):
Цитата (Nezabivaemiy @ 23.02.2009 - 12:19)
Поле id не предназначено для нумерации!!!

Что?))

Цитата
update таблитса set нумер_статьи=нумер_статьи-1 where нумер_статьи>8

Спасибо!)

Спустя 2 часа, 30 минут, 39 секунд (23.02.2009 - 18:15) jetistyum написал(а):
Viking
Хорошо. только в случае, если номер не есть индекс. т.к. нарушение индекса это вообще противоречит всем принципам программирования бд smile.gif

Спустя 1 час, 7 минут, 20 секунд (23.02.2009 - 19:23) Viking написал(а):
Цитата
Хорошо. только в случае, если номер не есть индекс. т.к. нарушение индекса это вообще противоречит всем принципам программирования бд

спасибо, что одобрил мой ответ, только на счет индекса я в курсе, но о нем речь не шла, а шла она о номере статьи, но вот на счет ВСЕХ принципов програмирования я не согласен, ибо индекс, как не странно, можно изменять и даже задавать, если он не дублируется, по этому я думаю, что всеже нашим, варварским принципам программирования бд это никоим образом не противоречит smile.gif

Спустя 16 минут, 49 секунд (23.02.2009 - 19:39) kirik написал(а):
Цитата (Viking @ 23.02.2009 - 11:23)
индекс, как не странно, можно изменять и даже задавать, если он не дублируется

В случае одной таблицы - согласен. А если есть связка из 10 таблиц, то тогда придется менять id везде wink.gif Тоже вполне варварски smile.gif

Спустя 7 минут, 48 секунд (23.02.2009 - 19:47) Viking написал(а):
Цитата
В случае одной таблицы - согласен. А если есть связка из 10 таблиц, то тогда придется менять id вездеТоже вполне варварски

если таблиц больше одной - это уже другой вопрос, по себе могу сказать: в таких случаях Настоящие Викинги индекс не меняют!

Спустя 10 минут, 4 секунды (23.02.2009 - 19:57) Sylex написал(а):
Цитата (Viking @ 23.02.2009 - 22:47)
в таких случаях Настоящие Викинги индекс не меняют!

biggrin.gif laugh.gif

Спустя 15 минут (23.02.2009 - 20:12) P i L o T написал(а):
Так что мне делать то? У меня этот id является ключевым индексом )

Спустя 3 минуты, 53 секунды (23.02.2009 - 20:16) Viking написал(а):
Цитата
Так что мне делать то? У меня этот id является ключевым индексом )

ты меня подставил!!! я думал у тебя номер статьйи - не ид!!

либо заведи отдельно номер статьи, либо смирись...

Спустя 1 минута, 11 секунд (23.02.2009 - 20:17) Viking написал(а):
ну или вычисляй номер статьи програмно в пхп...

Спустя 39 минут, 43 секунды (23.02.2009 - 20:57) jetistyum написал(а):
а тебе принципиально иметь номера статей??? можно ведь просто выводить последние .... N статей.. независимо от номера статьи..

Спустя 8 минут (23.02.2009 - 21:05) Alchemist написал(а):
Цитата (Viking @ 23.02.2009 - 18:47)
...Настоящие Викинги индекс не меняют!

Цитата (P i L o T @ 23.02.2009 - 19:12)
...У меня этот id является ключевым индексом )


Спалился Viking biggrin.gif

Спустя 1 час, 10 секунд (23.02.2009 - 22:05) P i L o T написал(а):
Ну новости это типа вообще для примера)))
У меня короче имеется фотогалерея и я хочу расположить превьюшки фоток в таблице 3 на 3. Порядковый номер мне нужен чтобы вовремя прописать </tr><tr>, т.е. переход на другую строку после каждой третьей фотки:
PHP
<?php
$a 
= $photos['id']%3;
if ($a == 0) echo "</tr><tr>";

ну а если я допустим удалю фотку со 2-м порядковым номером, то в строке будет две фоты и так далее. Поэтому я хотел бы сделать так чтобы на место удалившейся фоты встала предыдущая.

Спустя 7 минут, 53 секунды (23.02.2009 - 22:13) Viking написал(а):
ну в данном случае, я бы сюда ид не примешивал вообще, а считал бы именно в самом пхп, по порядку следования. Учитывая, что, как сказано выше, ид реально не обязан соблюдать порядок, это было бы правильнее и расширяемее.
по крайней мере сегодня. а так вообще... а кто его меня знает...

Спустя 3 минуты, 7 секунд (23.02.2009 - 22:16) Viking написал(а):
вобщем ид который примари кей и автоинкремент - это только для внутреннего учета, использовать его для подсчета номера в скрипте - нехорошо! вы это перестаньте!

Спустя 4 минуты, 54 секунды (23.02.2009 - 22:21) jetistyum написал(а):
а как на счет циклов???

Спустя 14 минут, 59 секунд (23.02.2009 - 22:36) Viking написал(а):
дык именно циклами и надо делать!

Спустя 42 минуты, 47 секунд (23.02.2009 - 23:19) jetistyum написал(а):
прааавильна smile.gif

Спустя 10 часов, 30 минут, 49 секунд (24.02.2009 - 09:50) sergeiss написал(а):
Честно сказать? Фигней занимаешься smile.gif
Не надо удалять никакие идентификаторы.
Потому что когда ты будешь создавать свою 3х3 таблицу, то номер id вовсе не надо использовать для этих целей. Тогда и не будет пустой головной боли.
Просто делаешь индекс ЦИКЛА вывода, и используешь его. То есть, примерно то же самое, что ты хотел делать с помощью id.
Типа такого кода:
PHP
$loop=1;
while( 
$res=mysql_fetch_assoc( ... ) )
{
  ... 
// какой-то код
  
if( $loop == // конец строки
  
{
  ...
  }
   ... 
// продолжение кода
  
$loop++;
}

Спустя 2 дня, 7 часов, 44 минуты, 14 секунд (26.02.2009 - 17:34) P i L o T написал(а):
Да уж, спасиба за помощь, тупил по жесткому))


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.