Intereting Posts
Что-то не так с вложенными представлениями в MySQL Какой был бы самый быстрый и / или самый простой способ сделать это? Недостаточно привилегий при создании таблиц в Oracle SQL Developer SQL Scheduling – выбор всех номеров, доступных для заданного диапазона дат Как использовать одиночные кавычки в строке формата Eval Дата заказа (dd-mm-yyyy) в SQL с помощью Google BigQuery Написание одного запроса для mutliple запросов с тем же условием, когда условие та же таблица Проверьте, какие идентификаторы из набора не существуют в таблице Запрос SQL для получения значения, которое встречается более одного раза Ошибка SQL Logic & Cross Apply Query «IndexOutOfBoundsException» из-за нулевых значений? возможно ли применить запрос в спящем режиме, который использует две базы данных? Почему нельзя использовать скомпилированную инструкцию Insert в Slick возвращать строки с определенным тегом Могу ли я использовать COUNT () и DISTINCT вместе?

Создание динамической формы, но как выполнить запрос?

Я создал динамическую форму, которая позволяет вам изменять количество полей ввода, в которых вы нуждаетесь. Это связано с тем, что у них может быть 15 членов группы и 15 полей, или одна полоса может иметь 2. Единственная проблема, которую я имею, – это при отправке формы, каждый вход называется «memberName1», «membername2» и т. Д. используя jQuery. Как я могу запустить проверку во время / перед запуском запроса, чтобы увидеть, заполнены ли эти поля, и должны ли они вводить свои значения в базу данных? Благодарю.

ИЗМЕНИТЬ 1:

Я думал о чем-то вроде кода ниже. Но мне нужно запустить цикл, чтобы подсчитать все текущие поля, где имя memberName , а затем число. Вместо того, чтобы останавливаться на первом пустом поле, пропустите их все. Если значение пустое, ничего не делайте. Если у него есть значение, вставьте его в таблицу.

 <cfquery datasource="exampledatasource" name="insertbandmembers"> Insert Into members(members_name) Values (memberName#i#) </cfquery> 

Использует цикл статического числа, но прерывается, как только число в последовательности не передается. Вы также можете подсчитать количество полей в jQuery и передать их вместе с отправкой формы

 <cfquery datasource="exampledatasource" name="insertbandmembers"> INSERT Into members(members_name) VALUES <cfloop index="i" from="1" to="15"> <cfif structKeyExists(form, 'memberName#i#') AND len(form['memberName#i#'])> <cfif i neq 1>, </cfif> ( <cfqueryparam cfsqltype="cf_sql_varchar" value="#form['memberName#i#']#"> ) <cfelse> <cfbreak> </cfif> </cfloop> </cfquery> 

Я бы сделал что-то вроде этого:

 <cfloop list="#form.fieldnames#" index="ThisElement"> <cfif left(ThisElement, 10) is "memberName"> <cfset ThisValue = form[ThisElement]> <cfif len(ThisValue)> <cfquery name="AddRecord"> Insert Into members(members_name) Values ( <cfqueryparam cfsqltype="cf_sql_varchar" value="#ThisValue#"> ) </cfquery> </cfif> <!--- len(thisvalue) ---> </cfif> <!--- left(ThisElement, 10) is "memberName" ---> </cfloop> 

(Это началось, чтобы быть комментарием, но он слишком длинный.)

Есть разные способы приблизиться к нему. Мое предпочтение таково, что упоминается в комментариях Тревис . В основном, jquery хранит общее количество членов в скрытом поле формы. Затем используйте это значение для прокрутки полей-членов, проверки значений и вставки по мере необходимости.

Вы можете легко адаптировать пример Дэн или Джеймкинна для этого. Заметьте, что они используют <cfqueryparam> для защиты от SQL-инъекции? Кроме того, поскольку это связанные вставки, вы хотите обернуть все это внутри одного <cftransaction> . Это гарантирует, что вставки обрабатываются на одном устройстве. Либо они все преуспевают, либо все они терпят неудачу – вместе.

  <cfparam name="form.totalFields" default="0" > <cfloop from="1" to="#val(form.totalFields)#" index="x"> <!--- extract current name ---> <cfset memberName = trim(FORM["memberName"& x])> <!--- insert NON-empty values ---> <cfif len(memberName)> <cfquery datasource="exampledatasource" name="insertbandmembers"> INSERT INTO members ( members_name ) VALUES ( <cfqueryparam value="#memberName#" cfsqltype="cf_sql_varchar"> ) </cfquery> </cfif> </cfloop>