前の記事を通じて、Ajax と PHP を使用してデータベースからデータを読み取り、データベースから最新のデータを動的に取得する方法を学びました。この記事では引き続き、フォームを使用したデータベースへのデータの書き込みについて紹介します。
フォームに関しては、リクエスト メソッド (GET と POST) の送信の問題が関係します。GET と POST の使用方法と違いについては、この記事では詳しく説明しません。一般に、Web 開発では、POST 値の送信が行われます。暗黙的であり、送信されるデータ量が大きいため、より一般的に使用されます。この例では、functions.js を次のように変更し、XMLHttp オブジェクト プログラムを関数 processajax として作成します。
クリップボードにコピー引用コンテンツ:
[www.bkjia.com]
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{
// 3 番目の true パラメータは、非同期関数
xmlhttp.open(" ",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;
}
}
//値を渡すフォーム
xmlhttp.send(str);
}
下の図では、「送信」ボタンをクリックするとsubmitform関数(functions.js)がトリガーされ、この関数ではgetformvalues関数を使用してフォームの内容が入力されているかどうかを確認します。それ以外の場合は、どの項目が入力されていないのかを尋ねるメッセージが表示されます。チェックに合格すると、process_task.php プログラムが呼び出され、Form 値がデータベースに書き込まれます。
送信フォーム機能:
クリップボードにコピー
引用コンテンツ: [www.bkjia.com]
function submitform (theform,serverPage, objID, valfunc){
var file = serverPage; //フォームの値を確認します
var str = getformvalues(theform,valfunc)
//すべてのフォームに入力します
if (aok == true) ){
obj = document.getElementById(objID);
//Ajax を実行して値を転送する
processajax(serverPage, obj, "post", str);
getformvalues 関数:
function getformvalues (fobj, valfunc) {
var str = "";
aok = true;
//Form 内のすべてのオブジェクトを走査します
for(var i = 0; 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 + "= +scape(fobj.elements[i].value) + "&";フォームの値を文字列として返します
return str;
process_task.php プログラム:
クリップボードにコピー引用コンテンツ:
[www.bkjia.com]
require_once ("dbconnector.php");
opendatabase();
//データの前処理
$yourname =trip_tags (mysql_real_escape_string ($_POST['yourname'])); $_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=ありましたエントリに問題があります。");
exit;
}
//成功メッセージを返す
header ("Location: theform.php?message=Success");
?>
ソースコード:Sample5.rar
著者のブログ: http://www.cnblogs.com/gnielee/
http://www.bkjia.com/PHPjc/364425.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/364425.html技術記事前回の記事では、Ajax と PHP を使用してデータベースからデータを読み取り、データベースから最新のデータを動的に取得する方法を学習しました。この記事ではフォームの紹介を続けていきます(...
)