вставить в таблицу, зацикливая структуру - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь вставить в код, но он вставляет значение в каждую строку, а не значение вопроса в вопросе и значение ответа в ответе:

<cfset StructDelete(structform,'title')>
<cfset StructDelete(structform,'mode')>
<cfset StructDelete(structform,'formsubmission')>
<cfset StructDelete(structform,'file_upload')>
<cfset StructDelete(structform,'czContainer_czMore_txtCount')>
<CFSET StructDelete(structform,'action')>
<CFLOOP collection="#structform#" index="whichPair">
    <cfset Questions = "question" & structform[whichPair]>
    <cfset answer = "answer" & structform[whichpair]>
    <cfquery name="insertData" datasource="aas">
        insert into faqsquestions(question,answer,createdon,faqID) 
        values(<cfqueryparam cfsqltype="cf_sql_varchar" value="#Right(questions, Len(questions)-8)#">,
        <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#Right(answer, Len(answer)-8)#">,
        <cfqueryparam cfsqltype="cf_sql_date" value="#CreateODBCDate(now())#">,
        <cfqueryparam cfsqltype="cf_sql_integer" value="#getLastID#">)
    </cfquery>
</CFLOOP>
  • Может кто-нибудь сказать, кто яделая неправильно здесь, я знаю, что я использую вопрос в качестве статического значения только внутри цикла как cfset и делаю право удалить эту переменную вопроса, которая не имеет смысла, но я буду удалять ее, когда я закончу исправлять мои вопросы и ответы по кодуВот так:

http://prntscr.com/lntu2l

1 Ответ

0 голосов
/ 28 ноября 2018

Это неправильный тип цикла для того, что вы пытаетесь сделать.Причина в том, что структурный цикл повторяется один раз - для каждого поля .Когда вам нужно выполнить цикл один раз - для каждой пары полей.

Простой способ - добавить в форму скрытое поле, содержащее общее количество пар.

<input type="hidden" name="NumberOfQuestions" value="#TheTotalNumberHere#">

Затем используйте общее число с петлями from и to.На каждой итерации извлекайте текущее значение полей вопросов и ответов и используйте их в своем запросе:

<cfloop from="1" to="#FORM.NumberOfQuestions#" index="pairNum">
    <cfset question = FORM["question"& pairNum]>  
    <cfset answer = FORM["answer"& pairNum]>  

    <cfquery ...>
        INSERT INTO faqsQuestions(question,answer,createdon,faqID) 
        VALUES (
            <cfqueryparam cfsqltype="cf_sql_varchar" value="#question#">
            ,  <cfqueryparam cfsqltype="cf_sql_longvarchar" value="#answer#">
            ,  <cfqueryparam cfsqltype="cf_sql_date" value="#now()#">
            ,  <cfqueryparam cfsqltype="cf_sql_integer" value="#getLastID#">
        )
    </cfquery>
</cfloop>
...