如何根据jsp中的输入type=radio标记来选择数据库表
How to choose database table according to input type=radio tag in jsp?
我在mysql数据库中有两个表,一个是给学生的,一个给老师的。两个表都有相同的列。
下面的代码只将数据插入到教师的表格中。如果用户选择了教师的单选按钮,则注册数据应存储在教师表中。如果用户选择了学生的收音机,则注册数据应存储在学生的表中。
单选按钮不起选择数据库表的作用,它只在mysql学生表中插入数据,或者我选择教师单选按钮
在此处输入图像描述
String gender = request.getParameter("gender");
if (gender != null) {
String table = gender.equals("teacher") ? "teacher2" : "student";
// replace dots with your values
String query = "INSERT INTO " + table + "(firstname,lastname,username,password,confirmpassword,email,month,day,year,gender) VALUES ('"+name+"','"+abc+"','"+cde+"','"+pass+"','"+confpass+"','"+emails+"','"+months+"','"+day+"','"+year+"','"+gender+"')";
st.executeUpdate(query);
} // Here is also error but it insert data in table of only student.
问题也在这里
st.executeUpdate(query);
index.jsp
<form method="GET " action="statement2.jsp" autocomplete="on">
<input type="radio" name="gender" value="teacher" checked/> Teacher
<input type="radio" name="gender" value="Student"/>Student
<input type="submit" value="Login" />
<input type="button" onclick="location.href='reg.jsp';" value="Sign Up" />
</form>
语句2.jsp
<%
String name=request.getParameter("first");
String abc=request.getParameter("last");
String cde=request.getParameter("user");
String pass=request.getParameter("password");
String confpass=request.getParameter("confirmpass");
String emails=request.getParameter("email");
String months=request.getParameter("month");
String day=request.getParameter("day");
String year=request.getParameter("year");
String gender = request.getParameter("gender");
if (gender != null) {
String table = gender.equals("teacher") ? "teacher2" : "student";
// replace dots with your values
String query = "INSERT INTO " + table + "(firstname,lastname,username,password,confirmpassword,email,month,day,year,gender) VALUES ('"+name+"','"+abc+"','"+cde+"','"+pass+"','"+confpass+"','"+emails+"','"+months+"','"+day+"','"+year+"','"+gender+"')";
st.executeUpdate(query);} // problem is here
%>
reg.jsp
<form method="GET" action="statement2.jsp" autocomplete="on">
<h1> Sign up </h1>
<p>
<label for="firstnamesignup" class="fname" data-icon="u">First Name:</label>
<input id="firstnamesignup" name="first" required="required" type="text" placeholder="First" />
</p>
<p>
<label for="lastnamesignup" class="lname" data-icon="u">Last Name:</label>
<input id="lastnamesignup" name="last" required="required" type="text" placeholder="Last" />
</p>
<p>
<label for="usernamesignup" class="uname" data-icon="u">Username:</label>
<input id="usernamesignup" name="user" required="required" type="text" placeholder="Username" />
</p>
<p>
<label for="passwordsignup" class="youpasswd" data-icon="p">Password:</label>
<input id="passwordsignup" name="password" required="required" type="password" placeholder="Password"/>
</p>
<p>
<label for="passwordsignup_confirm" class="password" data-icon="p">Confirm Password:</label>
<input id="passwordsignup_confirm" name="confirmpass" required="required" type="password" placeholder="Password"/>
</p>
<p>
<label for="emailsignup" class="youmail" data-icon="e" >Email:</label>
<input id="emailsignup" name="email" required="required" type="email" placeholder="example@domain.com"/>
</p>
<p>
<label>Date of Birth:</label>
<select name="month" onChange="changeDate(this.options[selectedIndex].value);">
<option value="na">Month</option>
<option value="1">January</option>
<option value="2">February</option>
<option value="3">March</option>
<option value="4">April</option>
<option value="5">May</option>
<option value="6">June</option>
<option value="7">July</option>
<option value="8">August</option>
<option value="9">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
<select name="day" id="day">
<option value="na">Day</option>
</select>
<select name="year" id="year">
<option value="na">Year</option>
</select>
<script language="JavaScript" type="text/javascript">
function changeDate(i){
var e = document.getElementById('day');
while(e.length>0)
e.remove(e.length-1);
var j=-1;
if(i=="na")
k=0;
else if(i==2)
k=28;
else if(i==4||i==6||i==9||i==11)
k=30;
else
k=31;
while(j++<k){
var s=document.createElement('option');
var e=document.getElementById('day');
if(j==0){
s.text="Day";
s.value="na";
try{
e.add(s,null);}
catch(ex){
e.add(s);}}
else{
s.text=j;
s.value=j;
try{
e.add(s,null);}
catch(ex){
e.add(s);}}}}
y = 1998;
while (y-->1908){
var s = document.createElement('option');
var e = document.getElementById('year');
s.text=y;
s.value=y;
try{
e.add(s,null);}
catch(ex){
e.add(s);}}
</script>
</p>
<p>
<label>Gender:</label>
<select name="Gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select>
</p>
<p class="signin button">
<input type="submit" value="Register"/>
</p>
</form>
db conn.jsp
<%@page import="com.mysql.jdbc.Connection"%>
<%@page import="com.mysql.jdbc.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.DriverManager"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Hello World!</h1>
<%@ page import ="java.sql.*" %>
<%
Connection c1 = null;
Statement st = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");
c1 = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/teacher","root", "abcde");
System.out.println("Couldn't find the driver!");
System.out.println("Couldn't connect: print out a stack trace and exit.");
System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected.");
st = (Statement) c1.createStatement();
System.out.println("Statement Created Successfully");
{
System.out.println("We got an exception while creating a statement:" + "that probably means we're no longer connected.");
}
if (c1!= null) {
System. out.println("Hooray! We connected to the database!");
} else {
System.out.println("We should never get here.");
}}
%>
首先是一些最佳实践:
- 当您想在服务器上创建/更新数据时,请使用表单方法=POST
- 使用PreparedStatement进行INSERT/UPDATE,而不是语句
现在,回到单选按钮的问题:发送要存储在表中的数据的页面是reg.jsp,它在提交时调用statement2.jsp。reg.jsp中没有name="gender"的单选按钮,实际上在index.jsp中。
你有两个选择:
- 您将单选按钮的选定值传递给reg.jsp;在这里,您在表单中使用了一个隐藏字段,通过这种方式传递给statement2.jsp
- 您可以在reg.jsp中添加单选按钮
首先,对于这个场景,您不需要具有相同列的多个表。只需将一个表和当前所有列一起使用,并创建一个名为user_type
的附加column
。user_type
column
的值应该是teacher
或student
,这取决于您从用户端获得的输入。将查询更改为以下
INSERT INTO new_table_name
(firstname,lastname,username,password,confirmpassword,email,month,day,year,gender,user_type)
VALUES ('"+name+"','"+abc+"','"+cde+"','"+pass+"','"+confpass+"',
'"+emails+"','"+months+"','"+day+"','"+year+"','"+gender+"','"+USER_TYPE_SELECTED+"')";
相关文章:
- 下拉选择可自动更改第二个下拉选择
- 如何使用jQuery选择下拉列表的值
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 按照选项卡索引的顺序循环一个jQuery选择
- 在动态创建的元素上获取对特定选择器的引用
- AngularJS-在JSON选择器中使用变量名
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 获取选择框的状态
- d3基于用户选择动态更新节点
- 提交后保留下拉选择的值
- JQuery对动态创建的对象进行选择
- 无法在Ionic select中预先选择最后一个选项
- 使用CSS或js,使用动态选择器选择任意li的下一个元素
- jQuery自动完成阻止选择后聚焦
- 使用此选项选择父类内部的类
- 使用jquery检查是否选择了radio不满足条件
- 当使用bootstrap Radio而没有预先选择选项时,即使没有选择,也会检查第一个选项的结果
- 在Radio Select(收音机选择)上,显示不同的复选框选择
- 如何根据jsp中的输入type=radio标记来选择数据库表