Cfloop возвращает только значения для первого и последнего значений списка

#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> .