java - 无法使用 while 循环提交表单

标签 java mysql database forms jsp

这是我的代码,它从数据库检索信息并将其显示在带有添加按钮的表中,该按钮将用于提交(添加到 Collection 夹)到另一个新表,其中包含该行值和用户的 ID 下面的代码正确显示所有记录在表中,每一行都包含在带有按钮的表单中,因此当我单击特定行按钮时,仅应将该行的值传递到目标页面,但对于每一行,只有第一个记录值正在传递。 .

<%pst = con.prepareStatement("select * from reg_faculty");
        res = pst.executeQuery();
        while(res.next()) {
            String uname = res.getString(1);
            String id = res.getString(2);
            String branch = res.getString(5);
            String subject = res.getString(4);
            %>
            <tr><td align="center"><b><%=uname%></b></td><td align="center"><b><%=branch%></b></td>
            <td align="center"><b><%=subject%></b></td>
            <input type="hidden" name="fac_id" value="<%=id%>">
<input type="hidden" name="std_id" value="<%=ht%>">
            <input type="hidden" name="fac_name" value="<%=uname%>">
            <td align="center"><img src="viewimagef.jsp?id=<%=id%>&type=<%="faculty"%> " alt="" width="100" height="60" /></td>
            <td align="center"><input type="submit"  value="Add"/></td>
            </tr>

            <%
        }
        %>

目标页面,所选行值应传递到数据库,但对于所选的任何行,第一个记录值将传递

String std_id1=request.getParameter("std_id");
String fac_id2=request.getParameter("fac_id");
String name=request.getParameter("fac_name");
try{
    pst=con.prepareStatement("select * from fav_faculty where std_id=? AND fac_id=?");
    pst.setString(1, std_id1);
    pst.setString(2, fac_id2);
    res=pst.executeQuery();
    boolean exists = false;
    if(res.next()){
        out.println("Faculty Already exist in your List");
        out.println("Faculty: "+fac_id2+"  Student Id: "+std_id1+"  Name:  "+name);
    }else{
        pst=con.prepareStatement("insert into fav_faculty values(?,?)");
        pst.setString(1, std_id1);
        pst.setString(2,fac_id2);
        int j=pst.executeUpdate();
        if(j>0){
            out.println("You successfully added "+name+" to your Faculty List");
        }
    }
}catch (Exception e) {
    out.println("Unable To Add");
}

最佳答案

问题出在您正在使用的提交按钮中,提交按钮属于整个表单,工作场景是将提交按钮的值更改为教员 ID,但为所有提交按钮保留相同的名称。 另一个可能更好的解决方案是添加一个复选框而不是提交按钮。

      <tr><td align="center"><b><%=uname%></b></td><td align="center"><b><%=branch%></b></td>
            <td align="center"><b><%=subject%></b></td>
            <input type="hidden" name="fac_id" value="<%=id%>">
<input type="hidden" name="std_id" value="<%=ht%>">
            <input type="hidden" name="fac_name" value="<%=uname%>">
            <td align="center"><img src="viewimagef.jsp?id=<%=id%>&type=<%="faculty"%> " alt="" width="100" height="60" /></td>
         <td align="center"><input type="ckeckbox"  name="fac_id" value="<%=id%>">
            </tr>
%><%--  end of the while loop  --%>
<input type="submit" value="add all">

并在目标页面

String allSelectedFacultyIds[]= request.getParameterValues("fac_id");
for (int i=0;i<allSelectedFacultyIds.length;i++)
{ 
pst=con.prepareStatement("select * from reg_faculty where id="+allSelectedFacultyIds[i]);
     //now you have the name, id, ... so the rest of your code should apply with minor changes


}

关于java - 无法使用 while 循环提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30963306/

相关文章:

java - 连接 3 个或更多表会产生重复的元组

python - 将数据库数据导入 Joomla

php - 可以替代MySQL吗?

java - 异常,表未映射

database - Flutter:共享偏好或速度范围模型

java - 将值放在 ConcurrentHashMap 中是否是原子的?

java - 使用 int、do-while 和 if 创建菜单系统

java - 在 macOS Catalina 上打开 PhpStorm 后崩溃

java - 如何使 Jersey 2 客户端在重定向时处理 cookie

Java 加载非 JAR 扩展名的文件