怎么才能使if语句控制不要出现未填项。(100分)

  • 主题发起人 主题发起人 xiaotianwangzi
  • 开始时间 开始时间
X

xiaotianwangzi

Unregistered / Unconfirmed
GUEST, unregistred user!
if语句是用来控制以下的语句不要出现哟未填项,但是好象没有在控制之中,请指点
i=zgjt.length()*zgyb.length()*sbjj.length()*yljj.length()*yhjb.length()*sfje.length();
String sql2=new String();
%><%
if(i!=0){
String ss=new String();
ss="select * from rs_ygzxx where zgbh='"+zgbh+"'";
ResultSet rs=hyg.executeQuery(ss);
int flag=1;
if(rs.next()){
flag=0;
}
rs.close();
if(flag==1){
sql2="insert into rs_ygzls(bmbh,bmmc,xh,zgbh,xm,zbsj,zbnf,zbyf,gwlb,ryjt,zgyb,sbjj,yljj,jb,sfje,yfje)values('"+bmbh+"','"+bmmc1+"','"+xh+"','"+zgbh+"','"+zgxm1+"','"+zbsj+"','"+zbnf+"','"+zbyf+"','"+gwlb+"','"+zgjt1+"','"+zgyb1+"','"+sbjj1+"','"+yljj1+"','"+yhjb1+"','"+sfje1+"','"+yfje1+"')";
sql="insert into rs_ygzxx(bmbh,bmmc,xh,zgbh,xm,zbsj,zbnf,zbyf,gwlb,ryjt,zgyb,sbjj,yljj,jb,sfje,yfje)values('"+bmbh+"','"+bmmc1+"','"+xh+"','"+zgbh+"','"+zgxm1+"','"+zbsj+"','"+zbnf+"','"+zbyf+"','"+gwlb+"','"+zgjt1+"','"+zgyb1+"','"+sbjj1+"','"+yljj1+"','"+yhjb1+"','"+sfje1+"','"+yfje1+"')";
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;User=sa;Password=rj;DatabaseName=mjgl001");
Statement stmt=conn.createStatement();
stmt.executeUpdate(sql2);
stmt.executeUpdate(sql);
// ResultSet rs=hhh.executeQuery(sql);
stmt.close();
conn.close();
%>
<h3><font ><%=zgxm1%>你好,工资设置成功</font></h3>
<br>
<br>
<div align="center">
<table width="80%" border="1" align="center" cellspacing="0" cellpadding="0">
<tr><td>部门编号:</td><td><%=bmbh%>
<td>部门名称:</td><td><%=bmmc1%></tr>
<tr><td>序号:</td><td><%=xh%>
<td>职工姓名:</td><td><%=zgxm1%></tr>
<tr><td>用户级别:</td><td><%=yhjb1%>
<td>岗位类别:</td><td><%=gwlb%></tr>
<tr><td>职工津贴:</td><td><%=zgjt1%>
<td>职工月补:</td><td><%=zgyb1%></tr>
<tr><td>社保基金:</td><td><%=sbjj1%>
<td>医疗基金:</td><td><%=yljj%></tr>
<tr><td>应发金额:</td><td><%=yfje1%>
<td>实发金额:</td><td><%=sfje1%></tr>
</table>
<p>
如果设置完成,请<a href="jxglxt.html">返回首页</a>
<br><a href="yggz.html">继续设置</a>
</div>
<%
}
else
{
%>
<div align="center">
<h3><font align="center">对不起,这个用户已经设置,请重新选择用户。</font></h3>
<br>
<font align="center"><a href="mmxg1.jsp">返回</a></font>
<%
}
}else
{
%>
<b>请检查是否有未填项</b>
<%
}
%>
</body>
</html>
 
因為後面有幾個else
可能會混掉。你可以把“請檢查是否有未填項”放在if(i=0)就作判斷。這樣再試試
 
这个检查表单中的元素是否已经填写的事用JavaScript做好啦,它最初就是为了这个原因产生的。
在form的onsubmit里面检查表单中必填元素是否已经填写合法,都合法之后再提交。
<script language='javascript' type='text/javascript'>
function emptyField(field){
if (typeof(field) = 'object' &amp;&amp;
field.value != 'undefined' &amp;&amp;
field.value != '') return true;
else
return false;
}
function checkOnSubmit(){
var frm =do
cument.form1;
if (emptyField(frm.UserName)) return false;
// 检查其他元素
return true;
}
</script>
<form name='form1' onsubmit='checkOnSubmit()'>
<input type='text' name='UserName'>
<!-- 其他表单元素 -->
</form>
 
一般来讲判断是否填项,应通过客户端脚本实现(Javascript),不应提交服务,如果那样做会增加服务器负担!速度又不快!建议用楼上的方法
 
同意Sterntaler的意见,开发WEB的规矩就是这样啊。
 
1.String sql2=new String();这样的写法是多余。
应该直接写String sql2;
就可以了。(Effective java 里有提到这个问题)
2.对字符串的判断,需要先判断是否为null,然后再判断length是否<0。
应该写成:
if(zgjt!=null &amp;&amp;
zgyb!=null &amp;&amp;
sbjj!=null &amp;&amp;
yljj!=null &amp;&amp;
yhjb!=null
&amp;&amp;
sfje!=null &amp;&amp;
zgjt.length()>0 &amp;&amp;
zgyb.length()>0 &amp;&amp;
sbjj.length()>0
&amp;&amp;
yljj.length()>0 &amp;&amp;
yhjb.length()>0 &amp;&amp;
sfje.length()>0){
//这样可以保证每个项都为空,而且 "&amp;&amp;" 的处理优先级是从左到右,
//假如第一个 zgjt!=null就是false的话, 后面的判断将不再进行,
//程序的执行效率也将提高
执行正常插入。
}
else
{
提醒信息没有填写完整。
}
to 楼上其他几位:
javascript在客户端是必须的,可以减少服务器的负担,
但是服务器端的判断也是必须的,否则别人绕过javascript的判断直接提交非法数据。
系统将出现不可预知的错误!!!
javascript只是第一个过滤非法数据的地方,但绝不能只有它一个检验。
只要稍微对http的数据提交有点了解的,都知道怎么绕过javascript而直接提交非法数据的。
 
楼上的:不得不佩服!想的周到!学习!
 
你可以在javascript中作一个检测呀!
 

Similar threads

后退
顶部