#coldfusion #cfloop
Вопрос:
Короче говоря, я работаю над приложением, в котором CRUD выполняется с базой данных MySQL. Все работает отлично, за исключением части обновления. У меня есть HTML-форма, которую пользователь отправляет в базу данных, и отдельная страница, на которой определенная запись (событие) возвращается в форму и заполняет входные данные. Все остальные входы работают правильно, но мой блок флажков работает с трудом.
Каждый входной тег флажка имеет этот связанный код ColdFusion (cfloop, cfif). Цикл определяет, включено ли значение в список, возвращаемый из базы данных, и отображает «Проверено», если верно:
<!--Each input has a cfloop and cfif tag to determine checked checkboxes-->
<input
type="checkbox"
id="alumni_relations"
value="Alumni Relations"
name="cboxes"
<cfloop index="foundRecord.event_type" list="#foundRecord.event_type#" delimiters=",">
<cfoutput>
<cfif #foundRecord.event_type# EQ "Alumni Relations">Checked</cfif>
</cfoutput>
</cfloop>
>
<label for="alumni_relations">Alumni Relations</label>
<br>
Это отлично работает! Но по какой-либо причине он возвращает «Проверено» только для первого и последнего элемента в списке (например, список: Отношения с выпускниками,Легкая атлетика,Общество менеджмента,Колледжи вернут «Проверено» только для отношений с выпускниками и легкой атлетики) Вот фотография этого:
Флажок Пример Изображения
Я думаю, что это должно что-то сделать с индексом, но я просмотрел документацию по cfloop и просто не понимаю этого. Любой, у кого есть какая-либо помощь/совет, будет очень признателен!
Комментарии:
1. просто предложение, но, вероятно, было бы проще просто выполнить поиск по списку с помощью listfind или listcontains, чем перебирать его. Но понимание того, почему цикл не работает, может быть поучительным.
2. @KevinB Это хорошая идея, моя единственная задержка в том, что есть 9 возможных флажков, и 1-9 можно было бы проверить. Поэтому, если бы я сделал поиск списка или список, я должен был бы иметь оператор OR для 1-9, так как возвращаемый индекс теоретически может находиться в любой позиции в списке. Имеет ли это смысл?
3. если возвращаемое значение не равно 0, то вы знаете, что оно есть в списке, и поэтому его следует проверить, верно?
4. Просто замените
<cfloop>....</cfloop>
на<cfif foundRecord.event_type.listFind("Alumni Relations")>Checked</cfif>
5. Проблема с вашим кодом может быть связана с областью охвата. То есть ваши
index
list
атрибуты и для вас<cfloop>
обоих используют одну и ту же переменную. Если вы хотите сохранить код как есть, вы можете изменить его наindex="i"
и<cfif i EQ "Alumni Relations">Checked</cfif>
.