Проверка отсутствия ввода в динамических полях - PullRequest
0 голосов
/ 21 октября 2010

По сути, у меня есть форма, которая генерирует определенное количество «типов публикаций» в зависимости от ввода «отделов», прежде чем кто-то заполняет эту форму.(Типы публикаций, относящиеся к конкретным отделам, которые распознаются.) Есть пара полей, которые идут с каждым типом публикации ... (это те же поля, поэтому у каждого типа будет ... скажем, 3 поля ..) У меня естьцикл, который читает эти данные и помещает их в базу данных.Однако, если одно из полей не заполнено, значение для этого конкретного поля полностью пропускается, что исключает ввод данных.

Пример: пользователь имеет три поля, и эти три поля повторяются три раза.Пользователь заполняет три в первом ряду, два во втором и еще три в третьем.Итак:

  • Массив первого поля: 1, 1, 1
  • Массив второго поля: 1, 1
  • Массив третьего поля: 1, 1, 1

Мне нужно найти способ пометить это пустое поле во втором массиве полей, чтобы оно появилось в списке.Я мог бы установить значения по умолчанию для полей, но кто-то мог легко удалить эти данные, и в полях имени / заголовка было бы странно иметь «Нет» или что-то в этом роде ...

Любые идеи?

Редактировать: фрагмент кода (Примечание: я вырезал все несущественные элементы стиля) ...

<cfoutput query = "getType_PUB">
Publications: #rName# <br />
<input type = "hidden" name = "scholarActivities" value = "#rName#" />
<input type="text" name="inpress09"  size = "8"/><br />
<input type="text" name="published09" size = "8"/><br /> 
<input type="text" name="published08" size = "8"/><br />
<input type="text" name="published07" size = "8"/><br />
</cfoutput>

<cfoutput><input type = "hidden" name = "recordcountPub" value = "#getType_PUB.recordcount#" /></cfoutput>


//////////////DB/////////////

<cfif #form.recordcountPUB# EQ 1>
<cfquery name = "insertSActivities" datasource="cas_evaluation">
  INSERT INTO scholar_publications (faculty, scholarActivities, submit09, inpress09, published09, published08, published07)
  VALUES ( '#form.name#', '#form.scholarActivities#', '#form.submit09#', '#form.inpress09#', '#form.published09#', '#form.published08#', '#form.published07#')
  </cfquery>
<cfelse>
<cfloop from="1" to="#form.recordcountPUB#" index="i">
  <cfquery name = "insertSActivities" datasource="cas_evaluation">
  INSERT INTO scholar_publications (faculty, scholarActivities, submit09, inpress09, published09, published08, published07)
  VALUES ( '#form.name#', '#ListGetAt(form.scholarActivities, i, ',')#', '#ListGetAt(form.submit09, i, ',')#', '#ListGetAt(form.inpress09, i, ',')#', '#ListGetAt(form.published09, i, ',')#', '#ListGetAt(form.published08, i, ',')#', '#ListGetAt(form.published07, i, ',')#')
  </cfquery>
</cfloop>
</cfif>

Ответы [ 2 ]

2 голосов
/ 22 октября 2010

(чтобы уточнить мои комментарии ..) Безопаснее создавать уникальные имена полей.В противном случае ваш код INSERT может сломаться, если пользователь введет запятую в одном из полей формы.Поскольку вы уже используете цикл запросов, вы можете добавить # currentRow # к каждому набору полей, чтобы сделать имена уникальными

<cfoutput query = "getType_PUB">
    Publications: #rName# <br />
   <input name="scholarActivities#CurrentRow#" ... />
   <input name="inpress09#CurrentRow#" ... />
   <input name="published09#CurrentRow#" ... />
</cfoutput>

<cfoutput>
   <input name="recordcountPub" value="#getType_PUB.recordcount#" .. />
</cfoutput>

На вашей странице действий просто зациклите и извлеките значения с помощью записи массива.Нет необходимости в дополнительном CFIF.Вы по-прежнему можете использовать CFPARAM или structKeyExists для обработки любых полей, которые могут не существовать (например, флажки или переключатели).

<cfloop from="1" to="#form.recordcountPUB#" index="i">
   <!--- extract the values ...--->
   <cfset scholarActivities = FORM["scholarActivities"& i]>
   <cfset submit09 = FORM["submit09"& i]>
   ... 
  <cfquery ....>
        Do the INSERT 
  </cfquery>
</cfloop>
1 голос
/ 21 октября 2010

Какие это типы полей?Флажки?Если это так, вы можете установить значения по умолчанию на странице действий со значением 0 или другим значением, которое указывает на отсутствие ответа.Затем проверьте это значение без ответа и пропустите.

Или это значение передается как пустое, и ваш код цикла просто не добавляет его в список / массив?

Пример быстрого кода от васпомогите людям дать вам лучшее направление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...