2011-08-17 2 views
1

미리 도움을 주셔서 감사합니다!Coldfusion - 동적 양식 필드 업데이트

내 응용 프로그램을 사용하면 동적 질문을 만들 수 있습니다. 여기에는 질문과 관련된 동적 대답 수가 n 개 있습니다.

사용자가이를 작성할 수있는 페이지가 완성되어 완벽하게 작성됩니다.

업데이트 할 수있는 가장 효율적인 방법을 고수했습니다. 일반적으로 업데이트하는 동안 필드/관계를 삭제하고 다시 작성합니다. 이 애플리케이션에서는 옵션을 사용할 수 없습니다. 일단 답변을 입력하면보고 용도로 보존해야하기 때문입니다.

업데이트 중에 새로운 대답을 인식하고 그 대답을 삽입해야합니다. 이전 답변을 전혀 업데이트하지 않습니다.

도움이 필요하신 분께 도움을 청하십시오!

답변

1

이런 일이 생기기 위해 일반적으로 ID를 포함하는 업데이트 할 각 필드 옆에 숨겨진 필드가 있습니다. 필드의 일치하는 ID가 "0"이면 새 항목이고 이미 존재하는 항목이므로 업데이트해야합니다. 따라서 FORM 구조를 반복 할 때 0이 아닌 ID에 대한 업데이트를 실행하고 나머지는 삽입합니다.

0

저는 Dan과 비슷한 접근 방식을 사용했지만 필드 이름 자체에 ID를 포함 시켰습니다. 예를 들어 세 개의 응답 필드가 있는데 그 중 하나가 새로운 경우 이름은 'Answer210', 'Answer211'및 'Answer0'일 수 있습니다.

양식을 처리 할 때 각 필드를 반복하여 텍스트 뒤의 숫자를 가져올 수 있습니다 - '대답'- 그리고 그에 따라 데이터를 처리하십시오. 당신이하는 일은 다음과 같습니다.

<cfoutput> 
<cfif isDefined("form.FIELDNAMES")> 

    <cfloop index="x" list = "#form.fieldnames#"> 
     <cfif findNoCase('answer',x) NEQ 0> 
      <cfset varInteger = replaceNoCase(x,'Answer','')> 
      <cfif varInteger EQ 0> 
       Insert Answer text: #form[x]# with ID of #varInteger#<br /> 
      <cfelse> 
       Update Answer text: #form[x]# with ID of #varInteger#<br /> 
      </cfif>  
     </cfif> 
    </cfloop> 

</cfif> 
</cfoutput> 

처리 방법은 여러 가지 방법으로 처리 할 수 ​​있습니다 ... 이것은 개념 증명입니다.