Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как поправить реф-систему
 
 автор: Shorr Kan   (04.02.2005 в 14:39)   письмо автору
 
 

У меня в реф-системе известное количество уровней. Поэтому, и потому что я пока не придумал, как иначе - я держу табличку:

login preref1 preref2

и так далее. Логин - это пользователь, пререф1 - под кем он зарегистрировался, пререф2 - тот, под кем зарегистрировался пререф1... все замечательно, но теперь мне поставили задачу - при удалении, поднимать всех низлежащих на уровень ввверх. то есть, если:
login preref1 preref2
aaa
bbb aaa
ccc bbb aaa

то после удаления пользователя bbb, должно получится так:

login preref1 preref2
aaa
ccc aaa


Так вот... как это оптимально можно сделать? а то корплю над кодом - как об стенку головой...

А на будущее, для само-развития - как все-таки сделать реф систему? Полагаю, можно сделать login preref , и все. И как-то циклом бегать по ним, ориентируясь на цифирку "количество уровней"....

   
 
 автор: cheops   (04.02.2005 в 21:44)   письмо автору
 
   для: Shorr Kan   (04.02.2005 в 14:39)
 

Для этого вводят два поля
login parent_login
 aaa
 bbb     aaa
 ccc     bbb
 ddd     bbb
 eee     ddd

Тогда для удаления реферера ddd следует сначала удалить все записи у кого parent_login = ddd, а потом запись для которой login = ddd. Для удаления aaa следует рекурсивно спустится по дереву и удалить всех рефералов. В нормальных базах данных это можно сделать в одину строку, в MySQL - придётся рекурсию организовывать. Схожая проблема обуждается в теме по ссылке.

http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=701

   
 
 автор: Shorr Kan   (05.02.2005 в 02:58)   письмо автору
 
   для: cheops   (04.02.2005 в 21:44)
 

Прочитал, понятно. Но это, как я уточнял, на будущее. А так у меня сейчас несколько столбцов, и каждому логину приписаны люди, под которыми он зарегистрирован (все уровни). Тут есть большой плюс - не надо каждый раз искать по всей таблице, достаточно WHERE login=... Но дело не в этом. Как мне сейчас поднимать всех на уровень вверх при удалении кого-либо?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования