说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

插入数据到数据库!

编辑:说三道四文库 发布时间:2018-07-19 08:02
HTML文档下载 WORD文档下载 PDF文档下载
我用dwmx做了一个网页将表单中的input的value插入数据到特定的数据库,但数据库的主键是不能为空的。我想做的效果是:在插入数据时,如果主键相对的那个input是空的,那么会弹出一个警告,提示不能为空并返回;如果不是空的,则没有任何警告,顺利添加。请问各位大虾,我该怎样写html代码,或者javascript的代码?谢谢!!
我的问题的关键是,在利用dwmx自带的插入数据库的服务器行为后,在点击按钮后,如果input的value为空值,那么它会自动提示你出错,你就不能插入数据。所以,我想在判断主键的input是否为空时,能绕过dwmx的插入行为的execute()函数,即先判断是否为空,再进行插入操作。谢谢!
使用javascript
if (form1.表单名.value==null)
{
 alert("Error!");
 return;
}
这个我试过,根本就不会执行,它绕不过execute(),预览的话,也是会提示出错,不会出现alert。
为什么把input的值做为主键,建议不要用!

为什么不会执行?是不是没有写执行语句,如果没写的话就肯定绕过去了.把你的Javascript和那个input和form的代码贴上来看看就清楚了.
这是对应数据库中主键的input,它是一个textfield
     <input name="region" type="text" id="region">
这是form的代码:
<form action="<%=MM_editAction%>" method="POST" name="heritaged" id="heritaged">
这是添加数据到数据库的代码:
if (String(Request("MM_insert")) == "heritaged") {
 
  var MM_editConnection = MM_db_STRING;
  var MM_editTable  = "dbo.HeritageD";(数据库名)
  var MM_editRedirectUrl = "index.asp";(插入成功后链接的网页)
  var MM_fieldsStr = "region|value|name|value|belong|value|climate|value|transport|value|p1|value|p2|value|p3|value|p4|value|p5|value";
  
var MM_columnsStr = "REGION|none,none,NULL|NAME|',none,''|BELONG|',none,''|CLIMATE|',none,''|TRANSPORT|',none,''|P1|',none,''|P2|',none,''|P3|',none,''|P4|',none,''|P5|',none,''";
  (相应的列名)
  // create the MM_fields and MM_columns arrays
  var MM_fields = MM_fieldsStr.split("|");
  var MM_columns = MM_columnsStr.split("|");
  
  // set the form values
  for (var i=0; i+1 < MM_fields.length; i+=2) {
    MM_fields[i+1] = String(Request.Form(MM_fields[i]));
  }

  // append the query string to the redirect URL
  if (MM_editRedirectUrl && Request.QueryString && Request.QueryString.Count > 0) {
    MM_editRedirectUrl += ((MM_editRedirectUrl.indexOf('?') == -1)?"?":"&") + Request.QueryString;
  }
}


// *** Insert Record: construct a sql insert statement and execute it

if (String(Request("MM_insert")) != "undefined") {

  // create the sql insert statement
  var MM_tableValues = "", MM_dbValues = "";
  for (var i=0; i+1 < MM_fields.length; i+=2) {
    var formVal = MM_fields[i+1];
    var MM_typesArray = MM_columns[i+1].split(",");
    var delim =    (MM_typesArray[0] != "none") ? MM_typesArray[0] : "";
    var altVal =   (MM_typesArray[1] != "none") ? MM_typesArray[1] : "";
    var emptyVal = (MM_typesArray[2] != "none") ? MM_typesArray[2] : "";
    if (formVal == "" || formVal == "undefined") {
      formVal = emptyVal;
    } else {
      if (altVal != "") {
        formVal = altVal;
      } else if (delim == "'") { // escape quotes
        formVal = "'" + formVal.replace(/'/g,"''") + "'";
      } else {
        formVal = delim + formVal + delim;
      }
    }
    MM_tableValues += ((i != 0) ? "," : "") + MM_columns[i];
    MM_dbValues += ((i != 0) ? "," : "") + formVal;
  }
  MM_editQuery = "insert into " + MM_editTable + " (" + MM_tableValues + ") values (" + MM_dbValues + ")";

  if (!MM_abortEdit) {
    // execute the insert
    var MM_editCmd = Server.CreateObject('ADODB.Command');
    MM_editCmd.ActiveConnection = MM_editConnection;
    MM_editCmd.CommandText = MM_editQuery; 
MM_editCmd.Execute(); 
    MM_editCmd.ActiveConnection.Close();

    if (MM_editRedirectUrl) {
      Response.Redirect(MM_editRedirectUrl);
    }
  }

}

我用的是dwmx自带的服务器行为中的插入记录选项,在执行时,它直接运行了execute the insert中的MM_editCmd.Execute()命令,请问qisanyou,如果要加入Java script应该加在哪里?还有,如果不把input的值作为主键,那么在添加数据到数据库时,主键的添加应该用什么对象来对应会比较好?谢谢!
不好意思,我也看不懂DW的代码.你试试下面的代码吧

既然有form,input就肯定有submit吧?这样的javascript代码可以随便放在页面的什么地方,只要不拆开来就行,这样如果没有值就会弹出一个框来,一定要输入值,当然这只是在客户端的,你也可以用ASP在服务端写,虽然更正规些不过会耗服务端资源.

<script language="JavaScript">
<!--
function check(heritaged){
    with(heritaged){
      if (region.value=="") {
        alert('请输入值');
        region.focus();
        return(false);
      }
    }
}
//-->
</script>
<form action="<%=MM_editAction%>" method="POST" name="heritaged" id="heritaged" onsubmit="return check(heritaged);">
<input name="region" type="text" id="region"><br>
<input type="submit" value="POST">
</form>
这个方案可以,问题已经解决了,qisanyou,多谢!!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘