Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ColdFusion中创建作为按钮的结构_Coldfusion_Structure - Fatal编程技术网

在ColdFusion中创建作为按钮的结构

在ColdFusion中创建作为按钮的结构,coldfusion,structure,Coldfusion,Structure,首先,我真的不知道如何命名这个问题,所以我道歉,如果它是模糊的。我正在尝试使用ColdFusion创建一个购物清单,但遇到了一些障碍。我希望在已创建的项目旁边显示“删除”按钮。我几乎所有的东西都在工作,但我对ColdFusion中的结构理解不够,无法理解我做错了什么。它与React.js中的组件类似吗?我遇到一个问题,说变量按钮没有定义。我假设这是因为structkeyExists无法识别单个按钮。为什么它只适用于表单而不适用于按钮 这是我的密码: <cfif structKeyExist

首先,我真的不知道如何命名这个问题,所以我道歉,如果它是模糊的。我正在尝试使用ColdFusion创建一个购物清单,但遇到了一些障碍。我希望在已创建的项目旁边显示“删除”按钮。我几乎所有的东西都在工作,但我对ColdFusion中的结构理解不够,无法理解我做错了什么。它与React.js中的组件类似吗?我遇到一个问题,说变量按钮没有定义。我假设这是因为structkeyExists无法识别单个按钮。为什么它只适用于表单而不适用于按钮

这是我的密码:

<cfif structKeyExists(form, "submitButt")>
  <cfquery datasource="ESC-ADD-TECH">
     INSERT INTO Main(itemDesc) VALUES('#itemDesc#')
  </cfquery>
</cfif>

<cfif structKeyExists(button, "delete_butt")>
  <cfquery datasource="ESC-ADD-TECH">
    INSERT INTO Main(itemDesc) VALUES('#itemDesc#')
  </cfquery>
</cfif>


<cfquery datasource="ESC-ADD-TECH" name="items">
        DELETE FROM Main
        WHERE itemDesc = '#itemDesc#'
</cfquery>

<body>
    <div id="myDIV" class="header">
        <h2>My Shopping List</h2>
        <form method="POST">
        <input type="text" name="itemDesc" placeholder="Title...">
        <input name="submitButt" type="submit" class="addBtn">
        </form>
    </div>

    <cfoutput query="items">
     <li>#items.itemDesc#  <button class="delete" name="delete_butt">x</button></li>
    </cfoutput>

</body>
有没有一种方法可以用一个结构来完成我在这里要做的事情?我最好在javascript中创建按钮,并尝试创建一个布尔语句结构,然后让javascript重写该值?有点像是在黑暗中拍摄,但我会感谢任何人的帮助


谢谢大家

所以提交表单时不会出现按钮结构。 首先要记住的是,ColdFusion结构只是一个键/值对的集合,类似于JavaScript对象,除非设置了值,否则将是未定义的

在您的情况下,表单结构的存在是因为您正在使用输入[type=submit]将页面提交回自身。对于ColdFusion页面,它将创建一个表单结构,其中包含提交表单中每个命名输入的键,其值从这些元素的值属性中提取

如果您试图使用表单结构来处理删除项目,最好使用单选按钮/复选框来选择要删除的项目,并使用提交按钮的值属性设置要执行的操作

以您的代码为例:

<cfparam name="form.action" type="string" default="none">
<cfswitch expression="#form.action#">
    <cfcase value="insert">
        <!---Your insert query goes here--->
    </cfcase>
    <cfcase value="delete">
        <!---Your delete query goes here--->
    </cfcase>
    <cfdefaultcase></cfdefaultcase>
</cfswitch>

<!---Your select query--->

<body>
    <form method="post" action="#">
        <div id="myDIV" class="header">
            <h2>My Shopping List</h2>
            <input type="text" name="itemDesc" placeholder="Title...">
            <button type="submit" name="action" value="insert">Submit</button>
        </div>
        <ul>
            <cfoutput query="items">
                <li>#items.itemDesc#  
                    <input type="radio" name="delDesc" value="#items.itemDesc#"/>
                </li>
            </cfoutput>
        </ul>
        <button type="submit" name="action" value="delete">Delete</button>
    </form>
</body>

在这种情况下,插入值时将使用form.itemDesc,删除项时将使用form.delDesc。

我想知道是否可以用您应该使用的表单标记来包装按钮,而不是将变量转储到cfquery块中。这为SQL注入打开了大门,特别是当这些变量没有限定作用域时。ColdFusion有一个用于使用scopes@Rain1超级嫉妒你有一个非常棒的用户名。雨是最好的用户名。非常感谢你提供的信息。这只是为了测试,但我很感激你的建议。我会把它作为我笔记的一部分。再次感谢!谢谢,那是我的真名。或者,当学习ColdFusion时,cfscript等价物是非常宝贵的。开发时,将所有内容转储到屏幕并进行检查。在这种情况下,你可以看看发生了什么。ColdFusion是一种不一致的语言,文档稀少,规则怪异。不要相信它,看它在做什么同意cfqueryparam。好的代码从不在查询中使用原始客户机值。哇!回答得很好。谢谢你,这是非常有用的信息!你有没有关于ColdFusion的文档可以帮助我避免问一些基本的问题?另外,使用switch-case语句而不是if-else有什么真正的好处吗?纯粹出于好奇。不幸的是,没有,在Adobe网站之外很难找到好的ColdFusion文档。我对这门语言的了解大多来自于反复试验:与其他人所说的话相呼应,cfdump对于了解页面中发生了什么是非常宝贵的-编辑-尽可能使用switch vs if elseif语句;在这种情况下,这并没有多大区别,如果有的话,这实际上是一个个人偏好。