Ajax+PHP 边学边练之四 表单
2015-01-24信息快讯网
通过上一篇文章已经了解到如何利用Ajax和PHP对数据库进行数据读取,这样可以动态的获取到数据库的最新数据。本篇则继续介绍通过表单(Form)向数据库中写入数据。
谈到Form就涉及到一个发送请求方式问题(GET和POST),对于GET和POST的使用和区别在本文就不详细说明了,一般对于Web开发由于POST传值为隐式且传输数据量较大所以比较常用。在本例中对functions.js进行下修改,将创建XMLHttp对象程序创建为一个函数processajax。 
function processajax (serverPage, obj, getOrPost, str){ 
//将创建XMLHttpRequest对象写到getxmlhttp()函数中,并获取该对象 
xmlhttp = getxmlhttp (); 
//GET方式(和前面几篇一样) 
if (getOrPost == "get"){ 
xmlhttp.open("GET", serverPage); 
xmlhttp.onreadystatechange = function(){ 
if (xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
obj.innerHTML = xmlhttp.responseText; 
} 
} 
xmlhttp.send(null); 
} 
//POST方式 
else{ 
//第三个true参数将打开异步功能 
xmlhttp.open("POST", serverPage, true); 
//创建POST请求 
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=GB2312"); 
xmlhttp.onreadystatechange = function() { 
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
obj.innerHTML = xmlhttp.responseText; 
} 
} 
//表单(Form)传值 
xmlhttp.send(str); 
} 
} 
 在下图中当点击“Submit”按钮后会激发submitform函数(functions.js),在该函数中会通过getformvalues函数检查Form内容是否都填写完毕,否则提示哪项未填写。当检查通过后会调用process_task.php程序,它会将Form值写入数据库。
submitform 函数:
 
function submitform (theform, serverPage, objID, valfunc){ 
var file = serverPage; 
//检查Form值 
var str = getformvalues(theform,valfunc); 
//Form全部填写 
if (aok == true){ 
obj = document.getElementById(objID); 
//运行Ajax进行传值 
processajax(serverPage, obj, "post", str); 
} 
} 
 getformvalues 函数:
 
function getformvalues (fobj, valfunc){ 
var str = ""; 
aok = true; 
var val;     
//遍历Form中所有对象 
for(var i = 0; i < fobj.elements.length; i++){ 
if(valfunc){ 
if (aok == true){ 
val = valfunc (fobj.elements[i].value,fobj.elements[i].name); 
if (val == false){ 
aok = false; 
} 
} 
} 
str += fobj.elements[i].name + "=" + escape(fobj.elements[i].value) + "&"; 
} 
//将Form值以String形式返回 
return str; 
} 
 process_task.php 程序:
 
<?php 
require_once ("dbconnector.php"); 
opendatabase(); 
//对数据预处理 
$yourname = strip_tags (mysql_real_escape_string ($_POST['yourname'])); 
$yourtask = strip_tags (mysql_real_escape_string ($_POST['yourtask'])); 
$thedate = strip_tags (mysql_real_escape_string ($_POST['thedate'])); 
//创建Insert语句 
$myquery = "INSERT INTO task (name, thedate, description) VALUES ('$yourname','$thedate','$yourtask')"; 
//执行SQL语句 
if (!mysql_query ($myquery)){ 
header ("Location: theform.php?message=There was a problem with the entry."); 
exit; 
} 
//返回成功信息 
header ("Location: theform.php?message=Success"); 
?> 
源代码下载
PHP 获取远程网页内容的代码(fopen,curl已测)
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
php写的简易聊天室代码
php结合表单实现一些简单功能的例子
PHP中对用户身份认证实现两种方法
用PHP的超级变量$_POST获取HTML表单(HTML Form) 数据
用PHP的超级变量$_GET获取HTML表单(Form) 数据
php中通过Ajax如何实现异步文件上传的代码实例
PHP中限制IP段访问、禁止IP提交表单的代码
php表单提交问题的解决方法
Discuz Uchome ajaxpost小技巧
php的ajax框架xajax入门与试用介绍
ajax实现无刷新分页(php)
基于asp+ajax和数据库驱动的二级联动菜单
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
PHP Session变量不能传送到下一页的解决方法
完美解决PHP中文乱码
php google或baidu分页代码
php 接口类与抽象类的实际作用
Ajax PHP 边学边练 之三 数据库
Ajax+PHP 边学边练 之二 实例
ajax php 实现写入数据库
PHP 开源AJAX框架14种
PHP form 表单传参明细研究
php 多个submit提交表单 处理方法
AspNetAjaxPager,Asp.Net通用无刷新Ajax分页控件,支持多样式多数据绑定
php 表单数据的获取代码
php 表单验证实现代码
防止MySQL注入或HTML表单滥用的PHP程序