b1nary
Новичок
Я пытаюсь написать телефонный справочник для большой организации. Понимаю что это очень легко, но мой справочник основан на структуре предприятия, а я к тому же новичок в php. В б.д. созданы две таблицы: отделы и сотрудники. Все имеют автоинкрементарное id. И поле nomer(int) в каждой таблице, с помощью которого я и задаю определённое место в справочнике, как для отделов, так и для сотрудников внутри отдела, в случае вывода всех сотрудников в режиме "структура". Т.е. первым идёт отдел Дирекция nomer=1, затем выводятся все сотрудники с id дирекция, отсортированные по полю nomer в таблице сотрудники, т.е. 1 директор, 2 зам. директора и т.д., а не по фамилиям. Вторым идёт к примеру Коммерческий отдел nomer=2 и все его сутрудники с id этого отдела. Теперь о проблеме, ниже приведена несуществующая таблица для примера.
Есть таблица sotrudniki в бд MySQL
table: sotrudniki
nomer(int) | name(string)
1 | Иванов
2 | Петров
3 | Сидоров
4 | Карпов
Номер каждого сотрудника необходим для сортировки внутри отдела, т.е. первым должен идти директор/начальник, затем его замы и т.д. Допустим я хочу добавить нового сотрудника в существующий отдел, который будет стоять под номером 2, т.е. мне нужно, чтобы в столбце nomer все значения > или = 2 увеличились на 1. Соответственно тоже самое если я удалю сотрудника под номером 2, у всех значений > 2 отнять 1. Поначалу я начал писать скрипт где в цикле php запрашивал всех у кого >= 2, прибавлял 1, клал в базу и запоминал последнее значение, запрашивал у кого = 3 прибавлял 1, клал в базу и т.д.. Я конечно запутался, к тому же код получился с жутким количеством запросов к б.д., что плохо, ведь народу может быть и тысяча. Понял что делаю что-то не так, от малого количества знаний/опыта.
Скажите пожалуйста, если данный алгоритм видится вам нормальным, то возможно ли его выполнить проще, к примеру силами мускула, в духе (запрос из головы) mysql_query ("UPDATE nomer FROM otdel SET nomer+1 WHERE nomer >=2 "); и MySQL сама увеличит все значения на 1. Если вы знаете алгоритм лучше/грамотнее (уверен так и есть), пожалуйста поделитесь.
Есть таблица sotrudniki в бд MySQL
table: sotrudniki
nomer(int) | name(string)
1 | Иванов
2 | Петров
3 | Сидоров
4 | Карпов
Номер каждого сотрудника необходим для сортировки внутри отдела, т.е. первым должен идти директор/начальник, затем его замы и т.д. Допустим я хочу добавить нового сотрудника в существующий отдел, который будет стоять под номером 2, т.е. мне нужно, чтобы в столбце nomer все значения > или = 2 увеличились на 1. Соответственно тоже самое если я удалю сотрудника под номером 2, у всех значений > 2 отнять 1. Поначалу я начал писать скрипт где в цикле php запрашивал всех у кого >= 2, прибавлял 1, клал в базу и запоминал последнее значение, запрашивал у кого = 3 прибавлял 1, клал в базу и т.д.. Я конечно запутался, к тому же код получился с жутким количеством запросов к б.д., что плохо, ведь народу может быть и тысяча. Понял что делаю что-то не так, от малого количества знаний/опыта.
Скажите пожалуйста, если данный алгоритм видится вам нормальным, то возможно ли его выполнить проще, к примеру силами мускула, в духе (запрос из головы) mysql_query ("UPDATE nomer FROM otdel SET nomer+1 WHERE nomer >=2 "); и MySQL сама увеличит все значения на 1. Если вы знаете алгоритм лучше/грамотнее (уверен так и есть), пожалуйста поделитесь.