2013-01-31 35 views
0

我正在将数据从查询输出到html表中进行表示。在表格的右下角我有一个“更新”按钮和一个“删除”按钮。更新html表中的特定行 - ColdFusion

我所试图做的是:

  • 当我按下更新按钮模式打开。在该模式中,我有一个表格,我想要预先定义当前行的值并能够编辑特定行
  • 当我按下一行上的删除按钮时,我希望该行被删除并重新加载页面

这是我的HTML表格,右边的最后两列是按钮

**Survey Name** **Category** **Weight** **Update** **Delete** 
Consultation Ambiance     20   Update Delete 
Consultation Consultation    40   Update Delete 
Consultation Follow Up    40   Update Delete 

这是生成表我的第一个查询

<cfquery name="categories" datasource="#dsn#"> 
     select s.name, s.id as surveyid, rc.categoryname, rc.id as categoryid, sc.cweight 
     from survey_categories sc 
     join surveys s on s.id = sc.surveyidfk 
     join rating_categories rc on rc.id = sc.categoryidfk 
     where sc.surveyidfk='#form.survey#' 
    </cfquery> 

这是我访问的形式当我按下“更新”

  • 这种形式围绕选择标签额外CFLOOP得到,我在的情况下,用户需要到数据库类别的休息改变类别。
  • 因此,举例来说,如果我按在我的表中的第二行中的更新按钮,这种形式应该在下拉菜单,在底部文本框
  • 一张小纸条,可以帮助的人数40Consultation输出表的第一个查询也会输出一个唯一的id(id,surveyName,Category,Weight)。那么到底更新查询会是这样的

    update categories set category='Example', weight='30' where id='345'

我不知道多少,这可以提供帮助。

<cfoutput> 
    <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button> 
     <h3 id="myModalLabel">Update</h3> 
     </div> 
     <div class="modal-body"> 
     <form name="update" action="updateSCpair.cfm" method="post"> 
      <input type="text" value="#categories.name#" class="input-xlarge" disabled> <br /> 
      <select name="categories"> 
       <cfloop query="ratingCat"> 
        <option value="#ratingCat.id#" >#ratingCat.categoryName#</option> 
       </cfloop> 
      </select> 
      <br /> 
      <input class="span3" type="number" placeholder="Enter Category Weight" required > 

     </div> 
     <div class="modal-footer"> 
     <button class="btn" data-dismiss="modal" aria-hidden="true">Close</button> 
     <button class="btn btn-primary">Save changes</button> 
     </form> 
    </div> 

    </cfoutput> 

UPDATE 为了使它更清楚,因为我觉得我写的太多了。我需要调用表单提交的模式。我将需要用表单替换当前的按钮,然后通过隐藏的变量传递所有数据。问题是这不适合我。我在这里找到了另一个例子,但它似乎没有工作。 EXAMPLE

+0

那什么不起作用?提交更新表单时,您应该能够使用呈现的表重新加载页面,并且假设更新查询成功,则查询的值应反映更新。 Re:删除操作,人们通常会将删除按钮/图标/以任何形式提交给处理页面,并将其删除。您也可以使用AJAX请求单击删除按钮来完成同样的事情。 – existdissolve

+0

好吧,当我按更新时,正在传递到弹出窗口的值并不反映我真正想要更新的值 – Geo

+0

请使用cfqueryparam,否则您将自己开放给SQL注入 – duncan

回答

3

我认为最简单的方法是在每一行的末尾有两种形式。你已经有了这些按钮。其余的可以是隐藏的领域。

您的更新表单将有一个目标属性来启动您的弹出窗口。由于您已经拥有查询中的值,因此您只需将它们作为隐藏字段提交给弹出窗口即可。

您的删除表单将提交到当前的coldfusion页面。在页面开始处,您可能会看到如下内容:

<cfif StructKeyExists(form, "DeleteMeOrSomethingLikeThat")> 
code to delete record 
</cfif> 

这会让您开始。如果你想稍后改进它,你可以。

最后,一次做一件事。

+0

我还没有启动删除按钮,它只是在那里。感谢您的帮助,虽然我会尝试您的方法。 – Geo

+0

删除按钮可能比更新更容易。 –