问题是这样的,我用Php写了一个表单,然后在提交的处理页面执行一条insert语句,但是我到数据看的时候发现每次插入的都是两条记录,郁闷了一个下午了,希望遇见过这类问题的大侠能帮忙解决一下。我的提交表单的文件如下所示:
<?php session_start();?>
<html>
<head>
<title>图书馆管理系统</title>
<link href="CSS/style.css" rel="stylesheet">
</head>
<script language="javascript">
function check(form){
if(form.barcode.value==""){
alert("请输入条形码1!");form.barcode.focus();return false;
}
if(form.bookName.value==""){
alert("请输入图书姓名!");form.bookName.focus();return false;
}
if(form.price.value==""){
alert("请输入图书定价!");form.price.focus();return false;
}
form.submit();
}
</script>
<body>
<table width="776" border="0" align="center" cellpadding="0" cellspacing="0" class="tableBorder">
  <tr>
    <td>
<?php include("navigation.php");?>
</td>
  </tr>
<td>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
<td valign="top" bgcolor="#FFFFFF"><table width="99%" height="510"  border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="tableBorder_gray">
  <tr>
<td height="510" align="center" valign="top" style="padding:5px;"><table width="98%" height="487"  border="0" cellpadding="0" cellspacing="0">
  <tr>
<td height="22" valign="top" class="word_orange">当前位置:图书档案管理 &gt; 添加图书信息 &gt;&gt;&gt;</td>
  </tr>
  <tr>
<td align="center" valign="top"><table width="100%" height="493"  border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td align="center" valign="top">
<form name="form1" method="post" action="book_ok.php">
<table width="600" height="432"  border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
      <tr>
        <td width="173" align="center">条&nbsp;形&nbsp;码:</td>
        <td width="427" height="39">
          <input name="barcode" type="text" id="barcode"></td>
      </tr>
      <tr>
        <td align="center">图书名称:</td>
        <td height="39"><input name="bookName" type="text" id="bookName" size="50"> * </td>
      </tr>
      <tr>
        <td align="center">图书类型:</td>
        <td>
<select name="typeId" class="wenbenkuang" id="typeId">
<?php 
        include("Conn/conn.php");
$sql=mysql_query("select * from tb_booktype");
$info=mysql_fetch_array($sql);
do{
?> 
        <option value="<?php echo $info[id];?>"><?php echo $info[typename];?></option>
<?php }while($info=mysql_fetch_array($sql));?> 
        </select>
</td>
      </tr>
      <tr>
        <td align="center">作&nbsp;&nbsp;者:</td>
        <td><input name="author" type="text" id="author" size="40"></td>
      </tr>
      <tr>
        <td align="center">译&nbsp;&nbsp;者:</td>
        <td><input name="translator" type="text" id="translator" size="40"></td>
      </tr>
      <tr>
        <td align="center">出&nbsp;版&nbsp;社:</td>
        <td>
<select name="isbn" class="wenbenkuang">
<?php
$sql2=mysql_query("select * from tb_publishing");
$info2=mysql_fetch_array($sql2);
do{
?> 
        <option value="<?php echo $info2[ISBN];?>"><?php echo $info2[pubname];?></option>
<?php }while($info2=mysql_fetch_array($sql2));?> 
        </select>
</td>
      </tr>
      <tr>
        <td align="center">价&nbsp;&nbsp;格:</td>
        <td><input name="price" type="text" id="price">(元)</td>
      </tr>
      <tr>
        <td align="center">页&nbsp;&nbsp;码:</td>
        <td><input name="page" type="text" id="page"></td>
      </tr>
      <tr>
        <td align="center">书&nbsp;&nbsp;架:</td>
        <td><select name="bookcaseid" class="wenbenkuang" id="bookcaseid">
<?php
$sql3=mysql_query("select * from tb_bookcase");
$info3=mysql_fetch_array($sql3);
do{
?> 
          <option value="<?php echo $info3[id];?>"><?php echo $info3[name];?></option>
<?php }while($info3=mysql_fetch_array($sql3));?> 
        </select>
          <input name="operator" type="hidden" id="operator" value="<?php echo $info3[name];?>"></td>
      </tr>
      <tr>
        <td align="center">&nbsp;</td>
        <td><input name="Submit" type="submit" class="btn_grey" value="保存"  onClick="return check(form1)">&nbsp;
<input name="Submit2" type="button" class="btn_grey" value="返回" onClick="history.back();"></td>
      </tr>
    </table>
</form>
</td>
  </tr>
</table></td>
      </tr>
    </table></td>
  </tr>
</table><?php include("copyright.php");?></td>
  </tr>
</table>
</td>
  </tr>
</table>
</body>
</html>
我的处理页面代码如下:<?php 
session_start();
include("conn/conn.php");
$operator=$_SESSION[admin_name];
$barcode=$_POST[barcode];
$bookName=$_POST[bookName];
$typeid=$_POST[typeId];
$author=$_POST[author];
$translator=$_POST[translator];
$isbn=$_POST[isbn];
$price=$_POST[price];
$page=$_POST[page];
$bookcase=$_POST[bookcaseid];
$inTime=date("Y-m-d");
$sql=mysql_query("insert into tb_bookinfo(barcode,bookName,typeid,author,translator,ISBN,price,page,bookcase,inTime,operator )values('$barcode','$bookName','$typeid','$author','$translator','$isbn','$price','$page','$bookcase','$inTime','$operator')");
header('location:book.php');  
echo "<script language='javascript'>alert('图书信息添加成功!');</script>";
?>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">谢谢各位了!

解决方案 »

  1.   

    javascript的check()中有一次提交。
    input type=submit 会有一次提交。
    而你的onclick事件的返回值并不会阻止<input type=submit />的提交
      

  2.   

    重复插入是浏览器的问题,可换个浏览器试试php 中可以这样处理
    session_start();
    $buf = md5(serialize($_POST));
    if(isset($_SESSION['buf']) && $_SESSION['buf'] == $buf) {
      exit;
    }
    $_SESSION['buf'] = $buf;
    //下面是你原来的代码
      

  3.   

    dream,如果按照你说的那我该怎么处理呢?
      

  4.   

    xuzuning,你所说的是把这段代码加到哪里,是数据库插入文件之前还是提交文件之前呢?
      

  5.   

    我的处理页面代码如下:<?php  
    session_start();
      

  6.   

    onclick改为onsubmit ,以及删掉check()的form.submit(),check()只负责验证数据
      

  7.   

    你在check方法里面多写了submit.验证成功后check()提交一次 本身的input type=submit 又提交一次,所以你数据是重复的。
      

  8.   

    非常感谢dream1206,我按照你的方法已经解决了这个问题!