Здравствуйте.
У меня стоит задача по уникализации поля типа "список". Изначально в настройках поля указывается список всех возможных значений. Далее необходим сделать так, чтобы при добавлении данных выпадающее меню со списком содержало ранее не использованные значения.
Пример: в настройках поля список возможных значений заполнен так:
строка 1
строка 2
строка 3
Затем, я перехожу в раздел добавления данных и создаю запись, в которой моё поле в качестве значения имеет "строка 2". Теперь, когда я захочу добавить данные ещё, у меня в списке не должно появляться "строка 2"
Для реализации задачи я пробовал писать php скрипт с sql-запросом на выборку ранее использованных значений, но ничего не получилось, т.к. теги {php} ... {/php} и <? ... ?> оказались неработоспособными.
Как лучше и возможно ли вообще реализовать данный механизм?
Заранее спасибо.


Сообщений в теме: 6
#1
Отправлено 10 Июль 2012 - 13:23
#2
Отправлено 10 Июль 2012 - 13:35
В каком именно шаблоне вы вносили изменения? Не совсем понял. Что касается данной задачи, то она невозможна на существующем поле типа "список".
#3
Отправлено 10 Июль 2012 - 14:22
Т.е. я не могу изменять содержимое поля ИД ( выпадающий select на картинке)?
см. ссылку http://pumpshooter.com/hNe0avCg
см. ссылку http://pumpshooter.com/hNe0avCg
Сообщение отредактировал Mr-Eugeniusz: 10 Июль 2012 - 14:26
#4
Отправлено 10 Июль 2012 - 14:55
Нет, такой функционал пока не предусмотрен. Но возможно, появится в будущем.
#5
Отправлено 10 Июль 2012 - 15:13
Слушайте, ну идиотизм же. Я как программист это говорю. Получается, что поле уникальное и выбрать для разных записей два одинаковых значения нельзя, но всё же они выпадают. Для чего? Сделайте пожалуйста. Кстати и сделать это не сложно.
if($field['type'] == 'unique') {
$used_items = SomeFrameworkSQL::fetchAll('SELECT DISTINCT('.$field['name'].') FROM `tbl` WHERE ...');
foreach($show_array as $key=>$val) {
if(in_array($val, $used_items)) {
unset($show_array[$key]);
}
}
}
if($field['type'] == 'unique') {
$used_items = SomeFrameworkSQL::fetchAll('SELECT DISTINCT('.$field['name'].') FROM `tbl` WHERE ...');
foreach($show_array as $key=>$val) {
if(in_array($val, $used_items)) {
unset($show_array[$key]);
}
}
}
Сообщение отредактировал Mr-Eugeniusz: 10 Июль 2012 - 15:15
#6
Отправлено 10 Июль 2012 - 15:24
Не понял, при чем тут уникальное поле? Я так понял, что вам необходим динамически изменяемый через вычисление список? Как я уже сказал, возможности добавлять такие вычисления у нас пока нет. Что касается приведенного примера, то он тоже спорный, кому-то это надо, кому-то нет. Возможно, включим в виде опции. Но пока хватает куда более важных и срочных задач.
#7
Отправлено 10 Июль 2012 - 16:28
динамически изменяемый он нужен был, т.к. пока нельзя стандартными средствами исключать ранее использованные значения.
Количество пользователей, читающих эту тему: 2
0 пользователей, 2 гостей, 0 анонимных