我要实现的是以上图片的功能
mysql的模块设计:
怎么设置修改一个表中的数据另一个表中相关的数据也更改了?
mysql语句:
UPDATE person_info SET person_info.name=information.name FROM person_info,information WHERE person_info .num=information.num
改良:在实际操作中是用不到那么多查询的,更多的是 名称 编号 机构 时间
时间区间查询的sql语句:
这个功能涉及到两张表
所有涉及数据库的无非就是sql语句的问题,增删改查
查询表中不重复的数据:
SELECT DISTINCT part FROM person_info
我的sql语句思路如下:
//根据名字查询+时间
SELECT number FROM person_info WHERE NAME=‘田江南’
SELECT * FROM yh WHERE TIME BETWEEN ‘2018-09-28 14:00:00’ AND ‘2018-09-28 18:00:00’ WHERE number=’’;
//根据number查询+时间
SELECT * FROM yh WHERE TIME BETWEEN ‘2018-09-28 14:00:00’ AND ‘2018-09-28 18:00:00’ WHERE number=’’;
//根据机构查询+时间
SELECT number FROM person_info WHERE part=‘公司’
SELECT * FROM yh WHERE TIME BETWEEN ‘2018-09-28 14:00:00’ AND ‘2018-09-28 18:00:00’ WHERE number=’’;
//根据名字+number查询
SELECT number FROM person_info WHERE NAME=‘田江南’
IF(number==所获取到的number是否一致){一致就执行下一句;不一致返回错误信息,名称与编号不一致}
SELECT * FROM yh WHERE TIME BETWEEN ‘2018-09-28 14:00:00’ AND ‘2018-09-28 18:00:00’ WHERE number=’’;
//根据名称和机构也是一样的
//根据机构和number也是一样的
jsp页面的设计:
1.在点击提交按钮的时候,如果时间是空的话就提示不可为空!
开始时间和结束时间都要填;
js代码如下
<script type="text/javascript">
function checktime() {
var stime=document.getElementById("stime").value;
var etime=document.getElementById("etime").value;
var submit=document.getElementById("submit");
if(stime!=null&&etime!=null&&stime!=""&&etime!=""){
submit.setAttribute("type","submit");
document.getElementById("error_info").innerHTML="";
}else{
submit.setAttribute("type","button");
document.getElementById("error_info").innerHTML="开始时间和结束时间不能为空";
}
}
</script>
相关jsp代码如下:
<span class="peo_left">开始时间:<input type="text" name="stime" id="stime" placeholder="年年年年-月月-日日 时时:分分:秒秒" /></span>
<span id="error_info" style="color:red;"></span>
<br>
<span class="peo_left">结束时间:<input type="text" name="etime" id="etime" placeholder="年年年年-月月-日日 时时:分分:秒秒" /></span>
<input type="button" value="查询" class="select" id="submit" onclick="checktime();"/>
2.选择部门的时候,就是查询表部门里面所有的名称;
在这个页面加载的时候就应该出现;
package cn.com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.com.lf.JdbcUtils;
public class All_Part extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//查询所有部门的名称
String sql="SELECT DISTINCT part FROM person_info" ;
ResultSet rs=JdbcUtils.select(sql, null);
List<String> list=new ArrayList<String>();
try {
while(rs.next()){
list.add(rs.getString(1));
}
request.setAttribute("alllist", list);
request.getRequestDispatcher("/SearchPosition.jsp").forward(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相关jsp代码
<span class="peo_left">所属机构:
<select>
<option>请选择</option>
<c:forEach items="${alllist}" var="i" varStatus="status">
<option>${i}</option>
</c:forEach>
</select>
</span>
历时6个小时终于结束了:
附上完整代码和页面图片:
jsp
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="utf-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>华金矿业-人员定位查询</title>
<!-- 首页 -->
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
<link rel="stylesheet" type="text/css" href="css/index.css">
<link rel="stylesheet" type="text/css" href="css/Personnel_definition.css">
<script type="text/javascript">
function hide(){
var id=document.getElementById("center_img");
var name=id.getAttribute("name");
var left=document.getElementById("center-left");
if(name=="block"){
left.setAttribute("style", "display:none;");
id.setAttribute("name", "none");
}if(name=="none"){
left.setAttribute("style", "display:block;");
id.setAttribute("name", "block");
}
}
function display(a){
var elements=[];
//获得所有的li标签
var list=document.getElementsByTagName("li");
var len=list.length;//获得长度
//把class=sub-menu的li都放在集合里面
for(var i=0;i<len;i++){
if(list[i].className== "sub-menu"){
elements[elements.length]=list[i];
}
}
/*把所有的隐藏 */
for(var i=0;i<elements.length;i++){
//获得下面的ul
var ul=elements[i].childNodes[3];
/* 设置属性为隐藏 */
ul.setAttribute("style","display:none");
/* 点击当前元素的Ul设置可见 */
}
/* 对所有的input背景颜色设置 */
var tree=document.getElementsByName("tree");
for(var i=0;i<tree.length;i++){
tree[i].setAttribute("style", "background-color:#E1F1FD;");
}
var input=document.getElementById(a);
input.setAttribute("style", "background-color:#5094D6;");
var ula=input.parentNode;
var lla=ula.childNodes;
for(var i=0;i<lla.length;i++){
if(lla[i].nodeName=='UL'){
lla[i].setAttribute("style","display:block");
}
}
}
/*获取当前的日期和时间 */
function tm(){
var today = new Date();
var year=today.getFullYear();
var month=today.getMonth()+1;
var day=today.getDay();
var tm=year+"年"+month+"月"+day+"日"+" "+today.getHours() + ":"
+ today.getMinutes() + ":" + today.getSeconds(); ;
var rq=document.getElementById("rq");
rq.innerHTML=tm;
}
</script>
<script type="text/javascript">
function checktime() {
var stime=document.getElementById("stime").value;
var etime=document.getElementById("etime").value;
var submit=document.getElementById("submit");
if(stime!=null&&etime!=null&&stime!=""&&etime!=""){
submit.setAttribute("type","submit");
document.getElementById("error_info").innerHTML="";
}else{
submit.setAttribute("type","button");
document.getElementById("error_info").innerHTML="开始时间和结束时间不能为空";
}
}
</script>
</head>
<body onload="tm();">
<!-- 上 -->
<div id="up">
<div id="up_left">
<ul>
<li style="font-size:12px;">铜陵华金矿业有限责任公司</li>
<li>井下综合监管系统</li>
</ul>
</div>
<table id="up_right">
<tr>
<td class="prompt">您好!<%=request.getParameter("username") %></td>
<td class="prompt">[华金矿业]:</td>
<td class="prompt" id="rq"></td>
</tr>
<tr>
<td class="prompt">密码</td>
<td class="prompt">桌面</td>
<td class="prompt">注销</td>
</tr>
</table>
</div>
<div style="width:102%;height: 50px;background-color: #4891C6;position: relative;margin-top: -14px;margin-left: -7px;"></div>
<!--中 -->
<div id="centers">
<div id="center-left">
<input type="button" value="功能菜单" class="view">
<ul id="all">
<!-- 第一个菜单 -->
<li class="sub-menu">
<input type="button" value="图形展现" class="button" name="tree" id="jpg" onclick="display(this.id);">
<ul style="display: none;">
<li><a href="total_picture.jsp">实时总图</a></li>
<li><a href="role_position.jsp" >轨迹定位</a></li>
</ul>
</li>
<!-- 第二个菜单 -->
<li class="sub-menu">
<input type="button" value="人员定位" class="button" name="tree" id="people" onclick="display(this.id);">
<ul style="display: none;">
<li>井下人员状况</li>
<li>LED通知管理</li>
<li>LED显示管理</li>
<li>大屏幕输出</li>
<li>人员定位搜索</li>
<li>人员考勤搜索</li>
<li>调度统计</li>
</ul>
</li>
<!-- 第三个菜单 -->
<li class="sub-menu">
<input type="button" value="环境监测" class="button" name="tree" id="supervise" onclick="display(this.id);">
<ul style="display: none;">
<li>环境测试总图</li>
<li>环境监测数据查询</li>
<li>环境报警数据查询</li>
</ul>
</li>
<!-- 第四个菜单 -->
<li class="sub-menu">
<input type="button" value="查询统计" class="button" name="tree" id="select" onclick="display(this.id);">
<ul style="display: none;">
<li>人员报警查询</li>
<li>超时人员查询</li>
<li>设备工作状况</li>
<li>设备工作状态查询</li>
</ul>
</li>
<!-- 第五个菜单 -->
<li class="sub-menu">
<input type="button" value="基础信息管理" class="button" name="tree" id="information" onclick="display(this.id);">
<ul style="display: none;">
<li>基站定义</li>
<li>采集基站定义</li>
<li>采集设备定义</li>
<li><a href="/Socket/Personnel_definition">人员定义</a></li>
<li>工种定义</li>
<li>职务定义</li>
<li>带班领导定义</li>
</ul>
</li>
<!-- 第六个菜单 -->
<li class="sub-menu">
<input type="button" value="系统管理" class="button" name="tree" id="system" onclick="display(this.id)">
<ul style="display: none;">
<li>机构定义</li>
<li>用户定义</li>
</ul>
</li>
</ul>
<!--隐藏下面的具体字节 -->
</div>
<div id="center-right">
<!-- 人员信息界面-->
<form action="/Socket/SearchPosition" method="post">
<div id="peo_head">人员信息管理</div>
<span class="peo_left">人员名称:<input type="text" name="name"/></span>
<span class="peo_left" style="margin-left: 117px;">人员编号:<input type="text" name="number"/></span>
<br>
<span class="peo_left">所属机构:
<select id="tjn" >
<c:forEach items="${alllist}" var="i" varStatus="status">
<option value=${status.index }>${i}</option>
</c:forEach>
</select>
</span><input style="display: none;" name="part" id="part"/><br>
<span class="peo_left">开始时间:<input type="text" name="stime" id="stime" placeholder="年年年年-月月-日日 时时:分分:秒秒" /></span>
<span id="error_info" style="color:red;"></span>
<br>
<span class="peo_left">结束时间:<input type="text" name="etime" id="etime" placeholder="年年年年-月月-日日 时时:分分:秒秒" /></span>
<span id="button">
<input type="button" value="查询" class="select" id="submit" onclick="checktime();"/>
<input type="reset" value="重置" class="select"/>
<input type="button" value="人员报表" class="select"/>
</span>
</form>
<br>
<div id="peo_info">
<table style="width: 99%;">
<tr><td>人员编号</td><td>人员名称</td><td>所属部门</td><td>所处位置</td><td>进入时间</td></tr>
<c:forEach items="${list}" var="i" varStatus="status">
<c:if test="${status.index % 2 == 0}">
<tr style="background-color: white"><td class="list_p">${i.a}</td><td class="list_p">${i.d}</td><td class="list_p">${i.e}</td><td class="list_p">${i.b}</td><td class="list_p">${i.c}</td></tr>
</c:if>
<c:if test="${status.index % 2 == 1}">
<tr style="background-color: #f2f7fa"><td class="list_p">${i.a}</td><td class="list_p">${i.d}</td><td class="list_p">${i.e}</td><td class="list_p">${i.b}</td><td class="list_p">${i.c}</td></tr>
</c:if>
</c:forEach>
</table>
<span style="color:red;"><%=request.getAttribute("error_xx") %></span>
</div>
</div>
<!-- 遍历数据库里面的集合-->
</div>
<!--下 -->
<div id="bottom">
诚信安天下-------铜陵力凡有限责任公司
</div>
</body>
<script type="text/javascript">
var my=document.getElementById("tjn");
//1:拿到select对象:
//2:拿到选中项的索引:
var index=my.selectedIndex ; // selectedIndex代表的是你所选中项的index
//3:拿到选中项options的value:
var ss=my.options[index].text;
document.getElementById("part").value=ss;
</script>
</html>
servlet代码:
package cn.com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.com.gj.Leader;
import cn.com.gj.StringFive;
import cn.com.lf.JdbcUtils;
public class SearchPosition extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//1.获取前台jsp页面所有的查询条件的值
//名称
String name=request.getParameter("name");
name = URLEncoder.encode(name, "ISO-8859-1");
name = URLDecoder.decode(name, "UTF-8");
//编号
String number=request.getParameter("number");
number = URLEncoder.encode(number, "ISO-8859-1");
number = URLDecoder.decode(number, "UTF-8");
//部门
String part=request.getParameter("part");
part = URLEncoder.encode(part, "ISO-8859-1");
part = URLDecoder.decode(part, "UTF-8");
//开始时间
String stime=request.getParameter("stime");
stime = URLEncoder.encode(stime, "ISO-8859-1");
stime = URLDecoder.decode(stime, "UTF-8");
//结束时间
String etime=request.getParameter("etime");
etime = URLEncoder.encode(etime, "ISO-8859-1");
etime = URLDecoder.decode(etime, "UTF-8");
String sql = null;
String sz []=new String [2];
//1.根据名字查询+时间
if(part==null||part==""){
if(name!=null&&number==null||name!=null&&number==""||name!=null&&number==null||name!=null&&number==""){
sql="SELECT * FROM yh WHERE TIME BETWEEN ? AND ? and number in (SELECT number FROM person_info WHERE NAME='"+name+"')";
sz[0]=stime;
sz[1]=etime;
}
//2.根据number查询+时间
if(name==null&&number!=null&&name==null&&number!=""&&name==null&&number!=null&&name==null&&number!=""){
sql="SELECT * FROM yh WHERE TIME BETWEEN ? AND ? WHERE number='"+number+"'";
sz[0]=stime;
sz[1]=etime;
}
//根据名字+number查询
if(name!=null&&number!=null&&name!=null&&number!=""&&name!=""&&number!=""&&name!=""&&number!=null){
sql="SELECT * FROM yh WHERE TIME BETWEEN ? AND ? and number in (SELECT number FROM person_info WHERE NAME='"+name+"' and number='"+part+"')";
sz[0]=stime;
sz[1]=etime;
}
}
//根据机构查询+时间
if(name==null||name==""){
if(part!=null&&number==null||part!=null&&number==""||part!=null&&number==""||part!=null&&number==""){
sql="SELECT * FROM yh WHERE TIME BETWEEN ? AND ? and number in (SELECT number FROM person_info WHERE part='"+part+"')";
sz[0]=stime;
sz[1]=etime;
}
//根据机构和number也是一样的
if(part!=null&&number!=null&&part!=null&&number!=""&&part!=""&&number!=null&&part!=""&&number!=""){
sql="SELECT * FROM yh WHERE TIME BETWEEN ? AND ? and number in (SELECT number FROM person_info WHERE part='"+part+"' and number='"+number+"')";
sz[0]=stime;
sz[1]=etime;
}
}
//根据名称和机构也是一样的
if(numbernull||number""){
if(part!=null&&name!=null&&part!=null&&name!=""&&part!=null&&name!=null&&part!=null&&name!=""){
sql=“SELECT * FROM yh WHERE TIME BETWEEN ? AND ? and number in (SELECT number FROM person_info WHERE part=’”+part+"’ and name=’"+name+"’)";
sz[0]=stime;
sz[1]=etime;
}
}
List list=new ArrayList() ;
ResultSet rs=JdbcUtils.select(sql, sz);
int m=0;
try {
while(rs.next()){
m++;
String num= rs.getString(1) ;
String bs= rs.getString(2) ;
String time= rs.getString(8) ;
String sqls="select * from person_info where number='"+num+"'";
ResultSet rs2=JdbcUtils.select(sqls, null);
String names=null;
String parts=null;
if(rs2.next()){
names= rs2.getString(1) ;
parts= rs2.getString(3) ;
}
StringFive sf=new StringFive(num, bs, time, names, parts);
list.add(sf);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(m>0){
//查询所有部门的名称
String sqls="SELECT DISTINCT part FROM person_info" ;
ResultSet rss=JdbcUtils.select(sqls, null);
List<String> lists=new ArrayList<String>();
try {
while(rss.next()){
lists.add(rss.getString(1));
}
request.setAttribute("alllist", lists);
request.setAttribute("list", list);
request.getRequestDispatcher("/SearchPosition.jsp").forward(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else{
//没有符合条件的结果
//查询所有部门的名称
response.sendRedirect("/Socket/All_Part");
}
}
查询数据库中数据显示在前台select-option标签中:
package cn.com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.com.lf.JdbcUtils;
public class All_Part extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//查询所有部门的名称
String sql="SELECT DISTINCT part FROM person_info" ;
ResultSet rs=JdbcUtils.select(sql, null);
List<String> list=new ArrayList<String>();
try {
while(rs.next()){
list.add(rs.getString(1));
}
request.setAttribute("alllist", list);
request.getRequestDispatcher("/SearchPosition.jsp").forward(request, response);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
封装信息类信息:
package cn.com.gj;
public class StringFive {
private String a;
private String b;
private String c;
private String d;
private String e;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public String getC() {
return c;
}
public void setC(String c) {
this.c = c;
}
public String getD() {
return d;
}
public void setD(String d) {
this.d = d;
}
public String getE() {
return e;
}
public void setE(String e) {
this.e = e;
}
public StringFive(String a, String b, String c, String d, String e) {
super();
this.a = a;
this.b = b;
this.c = c;
this.d = d;
this.e = e;
}
}