Страница 1 из 1
Получение переменного количества полей в запросе
Добавлено: 27 мар 2007, 09:53
Хыиуду
Проблема такая: есть база данных документов, каждый разбит на N частей (допустим, на 10). Юзер с сайта вводит логин и пароль, и система считывает из базы его уровень доступа (соответственно от 1 до 10). После этого, если он запрашивает какой-то документ, база возвращает все его части с номером, не большим его уровня доступа. Например, если уровень юзера - 4, то он сможет просматривать 1,2,3 и 4 части документов. Такое возможно реализовать средствами MySQL, или надо будет производить отсеивание уже на стороне клиента средствами PHP?
Re: Получение переменного количества полей в запросе
Добавлено: 27 мар 2007, 10:01
Duncon
Угу, в системе авторизации оставь флажок с цифрой доступа (лучше в сессии).
И при запросе в зависимости от этого варьируешь количество возвращяющихся доков.
Re: Получение переменного количества полей в запросе
Добавлено: 27 мар 2007, 10:08
Хыиуду
Нет, количество документов от уровня доступа не зависит. Просто юзер с уровнем 2 может просмотреть 1 и 2 часть документа А, 1 и 2 часть документа Б и 1 и 2 часть документа В. А юзер с уровнем 7 сможет смотреть 1-7 части документов А, Б и В.
Re: Получение переменного количества полей в запросе
Добавлено: 28 мар 2007, 08:53
Duncon
Ну тогда варьируешь количество возвращяющихся частей. :d
Re: Получение переменного количества полей в запросе
Добавлено: 28 мар 2007, 09:52
Хыиуду
Вот, собственно, ради того, чтобы узнать, как это делается, я эту тему и открыл

Re: Получение переменного количества полей в запросе
Добавлено: 28 мар 2007, 11:10
Yurich
Хыиуду писал(а):После этого, если он запрашивает какой-то документ, база возвращает все его части с номером, не большим его уровня доступа.
А какой тип у "части документа" в БД?
Re: Получение переменного количества полей в запросе
Добавлено: 28 мар 2007, 11:12
Хыиуду
Текст до 10 КБ
Re: Получение переменного количества полей в запросе
Добавлено: 28 мар 2007, 12:07
Yurich
Хыиуду писал(а):Текст до 10 КБ
Тогда наверное стоит делать так:
Код: Выделить всё
select
if(@Level >= 1, Part1, NULL) as Part1,
if(@Level >= 2, Part2, NULL) as Part2,
...
if(@Level >= 10, Part10, NULL) as Part10
from Document
where
....
Re: Получение переменного количества полей в запросе
Добавлено: 28 мар 2007, 14:29
Хыиуду
Спасибо, именно это я и хотел услышать!