Coldfusion - Форма обновления - PullRequest
0 голосов
/ 16 июня 2020

Вы можете мне посоветовать, пожалуйста? как сделать рабочую форму, которая позволит вставлять и обновлять элементы? У меня есть одна форма, которая работает для вставки, но в тот момент, когда я хочу обновить <input> в этой форме, она возвращает ошибку со всеми данными, которые находятся в форме. Поэтому я хочу попросить вас помочь с обновлением.

enter image description here

Мой код:

Страница 1 Вставить часть (это работает)

<cfif isdefined("Form.Name")>

    <cfquery name"something" datasource="#something#>
    INSERT INTO table..
    Values (...)
    </cfquery>

</cfif>

Обновить часть

<cfif isDefined('url.action')>

  <cfquery datasource="Something" name="Something">

    Update table.. 
    SET Name= <cfqueryparam cfsqltype="cf_sql_varchar" value="#Form.Name#"> 
    Where Some_id = '#Form.ID#'

  </cfquery>
</cfif> 

Страница1 Форма

<table>
    <form action="path\Page1.cfm?action=update" method="post">

    <cfloop query="languageField">
      <input name="Name" value="#SomeQuery.Name#">
      <input type="Submit" value="Submit">
    </cfloop>

    </form>
</table>

Ответы [ 2 ]

5 голосов
/ 16 июня 2020

В вашем операторе обновления отсутствует # после переменной form.id. У вас также есть одинарные кавычки вокруг значения form.id, которое будет передавать число в виде строки. Вы также должны заключить все пользовательские данные в теги cfqueryparam для защиты от атак SQL Injection.

Where Some_id = '#Form.ID'

должно быть

Where Some_id = #Form.ID#

, но более правильным должно быть

Where Some_id = <cfqueryparam value="#Form.ID#" cfsqltype="cf_sql_bigint">
0 голосов
/ 18 июня 2020

Хорошо, у меня есть ответ.

Запрос на обновление должен иметь вид

<cfloop list="#form.id#" item="id">

  <cfquery datasource="Something" name="updateform">

    UPDATE table
      SET
      column_name = <cfqueryparam cfsqltype="cf_sql_varchar" value="#form['Edit_Name_' & id]#" />
      WHERE id = #id#

  </cfquery>
</cfloop>

И в форме:

    <input type="hidden" name="Name" value="#query.Name#">

<tr> 
  <td><input name="Edit_Name_#Name#" type="text" value="#query.Name#"></td>
</tr>
...