Удаление.

Рома

был тут
Удаление.

Есть поле, в котором записано что-то типа "10,20,33,54", где цыфры, это id разделов. Когда я удаляю раздел, например с id=10, нужно удалить из этого поля нужное id, вместе с запятой.
Как это сделать?

Возникает мысль типа, выбрать все записи, которые содержат нужное id, а потом составить n-запросов и почистить записи, но может это можно сделать проще?

Заранее спасибо
 

RomikChef

Guest
вообще-то для таких целей служат связанные таблицы.
там ты просто удаляешь все записи, где id_razdel=10
если же ты так извратился, то можно попробовать
update table set dlinnii_spisok=(здесь вырезаешь субстрингами) where dlinnii_spisok like '%,10,%'
хотя уродство это, конечно страшное.
 

leosha

Старожил PHPCLub
$id - номер который надо удалить
$string - строка содержащая список id

$string = str_replace ("$id," "", $string);

А.. с последним номером не получится. Ну, значит, сначала добавь к $string запятую в конец, потом удали id c запятой, потом проверь что строка не заканчивается на запятую. =)
 

Рома

был тут
2 leosha:
Я просто думал что это можно сделать одним запросом... придется извращаться таким образом

2 RomikChef:
хмм... а где бы можно было почитать про эти связанные таблицы (в нете естественно) ?

Всем спасибо
 

RomikChef

Guest
а че про них читать?
есть у тебя, к примеру, таблица фильмов. и есть таблица актеров.
В каждом фильме может играть несколько актеров - верно?
Значит, в таблицу фильмов ты актеров не пишешь вообще. создаешь третью таблицу, в которой одни цыферки. В данном случае - id из таблиц актеров и фильмов.
Надо тебе записать пятерых актеров к фильму - пишешь в эту таблицу 5 записей с одним и тем же ид фильма и ид актеров.
теперь, если тебе надо узнать всех актеров какого-то фильму, делаешь запрос
select * from film_actors FA, actors A where film_id=$film_id and A.id=FA.actor_id
та же самая фигня и когда хочешь узнать, в каких фильмах снимался тот или иной актер.
 

Рома

был тут
Понял... спасибо... вот теперь думаю менять структуру базы или нет...
 
Сверху