Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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
Sql 经典ASP提交多值复选框选择,然后与其他表项一起显示选择_Sql_Vbscript_Asp Classic - Fatal编程技术网

Sql 经典ASP提交多值复选框选择,然后与其他表项一起显示选择

Sql 经典ASP提交多值复选框选择,然后与其他表项一起显示选择,sql,vbscript,asp-classic,Sql,Vbscript,Asp Classic,我在网上找遍了,找不到这个谜的答案 我仍然在使用VBSCRIPT Classic ASP,我在SQL中有两个表,作业和任务 工作表 身份证件 塔西德 任务表 身份证件 任务名 我基本上有一个表单,其中可以创建一个新作业,用户可以使用复选框从任务表中选择一个或多个任务。假设用户检查任务1和3。然后,此表单提交所选任务,然后将其插入到Jobs表内的TaskID字段中,其值类似于“1,3” 然后,我使用这段代码来解析值,这非常有效,我可能会添加: values = rsQuery("TaskID")

我在网上找遍了,找不到这个谜的答案

我仍然在使用VBSCRIPT Classic ASP,我在SQL中有两个表,作业和任务

工作表 身份证件 塔西德

任务表 身份证件 任务名

我基本上有一个表单,其中可以创建一个新作业,用户可以使用复选框从任务表中选择一个或多个任务。假设用户检查任务1和3。然后,此表单提交所选任务,然后将其插入到Jobs表内的TaskID字段中,其值类似于“1,3”

然后,我使用这段代码来解析值,这非常有效,我可能会添加:

values = rsQuery("TaskID")
selections = Split(values, ",")
For i = 0 To UBound(selections)

<option selected value='Response.Write rsQuery.Fields("TaskID")'>Response.Write rsTasks.Fields("TaskName"))
Next
这将为我提供所选的项目,但我真正想要的是将此列表与未从任务表中选中的其他任务混合在一起,而不复制它们。使用数组是否可能有所帮助?如果是这样,我完全不知道如何在这个场景中使用它


有什么想法吗?提前谢谢你

在记录集中获取任务。在记录集中循环以显示任务,并在Jobs.TaskID中检查ID。如果该值存在,则将其显示为选中状态

e、 g


请注意,逗号分隔值的格式可能为1,3或1,3,即逗号后的空格。您需要相应地修改代码来处理这个问题。

我很困惑。你希望它看起来怎么样?是否尝试更改用于检索数据的查询或用于显示数据的vbscript代码?另外,为什么要有一个多值字段?作业表中的TaskID应该只有一个值?如果用户选择两个任务,则应插入两条记录,每个任务一条记录。表单中只有一个字段捕获TaskID。“我的表单”为与作业关联的任务提供了多个复选框。如果用户选择一个或多个任务,该值将作为逗号分隔的值存储在字段中。我不希望将多行写入jobs表,因为只有一个job。上面的示例“1,3”在向jobs表写入和从jobs表中提取时都可以正常工作。我想要一个复选框的结果页面,其中包含tasks表中所有任务的列表,但显示存储在jobs表中的选中任务。谢谢你的回复。这真是太有魅力了!我知道这对你来说很容易,但这通常是我忽略的最简单的解决方案。你的一行代码让一切变得不同如果instr、&sTaskID&、&rsTasksID&、>0,那么谢谢!好的,关于用空格存储值,您是对的。我试图调整代码以包含空格,但似乎无法使其正常工作。我也试着去研究instr调用的工作原理,但我有点迷茫。如何修改代码以处理值为1,3而不是1,3?我尝试了sTaskID=ReplacesTaskID,,但没有帮助。请尝试此…如果instr、&sTaskID&、&rsTasksID&、>0,谢谢,但我需要重新考虑此问题。taskid数量众多,并且instr不会将一位数字的ID与四位数字的ID(即)等同对待。。1、3045事实上,如果该值为3045、3046、3047,则出于某种原因,还将检查3048和3049。也许我应该将jobID和与之相关的所有任务一起写到另一个表中。
sTaskID = rsQuery("TaskID")  ' this will have value from jobs table, say 1,3

set rsTasks = server.createobject("adodb.recordset")
ssql = "select * from tasks"
rsTasks.open ssql, <your connection>,....

do while not rsTasks.EOF
    if instr("," & sTaskID & ",", "," & rsTasks("ID") & ",") > 0 then
    ' Enclose the strings within commas, otherwise if the tasks selected has 10, then task ID 1 will show up as checked as well because the string 1 will be found within 10
        bChecked = " checked"
    end if

    %>
    <input type="checkbox" value="<%=rsTasks("ID")%>" <%=bChecked%>><%=rsTasks("TaskName")%>
    <%
    rsTasks.moveNext
loop