この記事を読む前に、「PHP Access MySql データベース - 初級」および「PHP Access MySql データベース - 中級 Smarty テクノロジー」を読むことをお勧めします。
前回の記事では、データベースを読み取ってデータを表示できるプログラムを開発し、プログラムは適切なインターフェイスと論理的分離を実現しました。ただし、このプログラムではデータベースの追加、削除、変更はサポートされていません。したがって、これらの機能をここに追加します。データが追加、削除、または変更されるたびに、AJAX を通じてリクエストがバックグラウンドに送信され、バックグラウンドから返された結果に基づいてページの表示が調整されます。このアプローチにより、サーバーの負荷を軽減できます。
以下は AJAX の簡単な紹介と、その後の完全な例です:
AJAX は、Web サーバー ソフトウェアから独立したブラウザー テクノロジーです。これは新しいプログラミング言語ではなく、より優れた、より高速で、よりインタラクティブな Web アプリケーションを作成するためのテクノロジーです。 AJAX を介して、JavaScript の XMLHttpRequest オブジェクトを使用してサーバーと直接通信できます。これにより、ページをリロードせずに Web サーバーとデータを交換できるようになります。同時に、AJAX はブラウザと Web サーバーの間で非同期データ送信 (HTTP リクエスト) を使用するため、Web ページはページ全体ではなく少量の情報をサーバーに要求できます。 AJAX マニュアルには http://api.jquery.com/category/ajax/
からアクセスできます。以下は、このシリーズの中で最も包括的なプログラムです。テスト データベースの t_student テーブルからデータを読み取り、それを表示します。また、t_student テーブルに対する AJAX の追加、削除、変更操作もサポートしています。インターフェース機能としては、マウスの移動に合わせて表の奇数行と偶数行の色が変わり、プログラムがより美しくなります。
プログラムは、smarty2.php、smarty2.html、smarty2_head.php、smarty2.js、smarty2.cssと、新しく追加されたinsert.php、delete.php、update.phpの8つのファイルに分かれています。
1. Smarty2_head.php ファイル
データベース関連の定数と変数配列を定義します。ここではデータベース名、ユーザー名とパスワード、テーブル名などを定義します。
// 投稿者 MoreWindows( http://blog.csdn.net/MoreWindows )
// By MoreWindows( http://blog.csdn.net/MoreWindows )
header("Content-Type: text/html; charset=utf-8");
require('../../smart_libs/Smarty.class.php');
require_once('smarty2_head.php');
date_default_timezone_set("PRC");
//mysql_connect
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASS) または die("接続に失敗しました" . mysql_error());
mysql_select_db(DB_DATABASENAME, $conn);
//数
$sql = sprintf("select count(*) from %s", DB_TABLENAME);
$result = mysql_query($sql, $conn);
if ($result)
{
$dbcount = mysql_fetch_row($result);
$tpl_db_count = $dbcount[0];
}
その他
{
die("クエリが失敗しました");
}
$tpl_db_tablename = DB_TABLENAME;
$tpl_db_coltitle = $dbcolarray;
//表中の内容
$tpl_db_rows = 配列();
$sql = sprintf("%s から %s を選択", implode(",",$dbcolarray), DB_TABLENAME);
$result = mysql_query($sql, $conn);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))//等价$row=mysql_fetch_assoc($result)
$tpl_db_rows[] = $row;
mysql_free_result($result);
mysql_close($conn);
$tpl = 新しい Smarty;
$tpl->assign('db_tablename', $tpl_db_tablename);
$tpl->assign('db_count', $tpl_db_count);
$tpl->assign('db_coltitle', $tpl_db_coltitle);
$tpl->assign('db_rows', $tpl_db_rows);
$tpl->display('smarty2.html');
?>
// 投稿者 MoreWindows( http://blog.csdn.net/MoreWindows )
header("Content-Type: text/html; charset=utf-8");
require('../../smart_libs/Smarty.class.php');
require_once('smarty2_head.php');
date_default_timezone_set("中国");
//mysql_connect
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASS) または die("接続に失敗しました" . mysql_error());
mysql_select_db(DB_DATABASENAME, $conn);
//数
$sql = sprintf("select count(*) from %s", DB_TABLENAME);
$result = mysql_query($sql, $conn);
if ($result)
{
$dbcount = mysql_fetch_row($result);
$tpl_db_count = $dbcount[0];
}
それ以外
{
die("クエリが失敗しました");
}
$tpl_db_tablename = DB_TABLENAME;
$tpl_db_coltitle = $dbcolarray;
//表中の内容
$tpl_db_rows = array();
$sql = sprintf("select %s from %s", implode(",",$dbcolarray), DB_TABLENAME);
$result = mysql_query($sql, $conn);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))//等价$row=mysql_fetch_assoc($result)
$tpl_db_rows[] = $row;
mysql_free_result($result);
mysql_close($conn);
$tpl = 新しい Smarty;
$tpl->assign('db_tablename', $tpl_db_tablename);
$tpl->assign('db_count', $tpl_db_count);
$tpl->assign('db_coltitle', $tpl_db_coltitle);
$tpl->assign('db_rows', $tpl_db_rows);
$tpl->display('smarty2.html');
?>
3.smarty2.htmlファイル
{$col} | 操作 |
---|---|
{$val} | |
{$col} | 操作 |
---|---|
{$val} |
マウスがテーブルの上を通過したときに行の色が変わる効果を新たに追加しました
//テーブルの最初の列で指定された ID に等しい行を検索します
関数 SearchIdInTable(tablerow, findid)
{
ヴァーリ
var tablerownum = tablerow.length
for (i = 1; i
i を返します。
-1 を返します。
}
// CSS を使用して奇数行と偶数行の色を制御します
関数 SetTableRowColor()
{
$("#Table tr:odd").css("背景色", "#e6e6fa");
$("#Table tr:even").css("背景色", "#fff0fa");
$("#テーブル tr:odd").hover(
Function(){$(this).css("背景色", "オレンジ");},
Function(){$(this).css("背景色", "#e6e6fa");}
);
$("#テーブル tr:even").hover(
Function(){$(this).css("背景色", "オレンジ");},
Function(){$(this).css("背景色", "#fff0fa");}
);
}
//編集ボタンへの応答
関数 editFun(id, 名前, 年齢)
{
$("#editdiv").show();
$("#addiv").hide();
$("#editdiv_id").val(id);
$("#editdiv_name").val(名前);
$("#editdiv_age").val(年齢)
}
//追加ボタンへの応答
関数 addFun()
{
$("#editdiv").hide();
$("#addiv").show();
}
//レコード数が増えます
関数 IncTableRowCount()
{
var tc = $("#tableRowCount");
tc.html(parseInt(tc.html()) + 1);
}
//レコード数の削減
関数 DecTableRowCount()
{
var tc = $("#tableRowCount");
tc.html(parseInt(tc.html()) - 1);
}
//行を追加します
関数 addRowInTable(id, 名前, 年齢)
{
//新しい行を追加します
var appendstr = "
$("#editdiv_id").val(id);
$("#editdiv_name").val(name);
$("#editdiv_age").val(年齢);
}
//追加ボタンへの応答
関数addFun()
{
$("#editdiv").hide();
$("#addiv").show();
}
//レコード数を増やす
関数 IncTableRowCount()
{
var tc = $("#tableRowCount");
tc.html(parseInt(tc.html()) + 1);
}
//レコード数が減ります
関数 DecTableRowCount()
{
var tc = $("#tableRowCount");
tc.html(parseInt(tc.html()) - 1);
}
//行を追加します
関数 addRowInTable(id, 名前, 年齢)
{
//新しい行を追加します
var appendstr = "
{
alert("名前と年齢を入力してください!");
戻ります;
}
//サーバーに送信して返される入力データのid
$.post("insert.php", {名前:名前, 年齢:年齢}, function(data){
if (データ == "f")
{
alert("日付の挿入に失敗しました");
}
それ以外
{
addRowInTable(データ, 名前, 年齢);
SetTableRowColor();
$("#addiv").hide();
}
});
}
関数 deleteFun(id)
{
if (confirm("确认删除?"))
{
//サーバーに送信
$.post("delete.php", {id:id}, function(data){
if (データ == "f")
{
alert("日付の削除に失敗しました");
}
それ以外
{
deleteRowInTable(id);
}
});
}
}
関数updataFun()
{
var id = $("#editdiv_id").val();
変数名 = $("#editdiv_name").val();
var age = $("#editdiv_age").val();
//サーバーに送信します
$.post("updata.php", {id:id, name:name, age:年齢}, function(data){
if (データ == "f")
{
alert("日付の更新に失敗しました");
}
それ以外
{
updataRowInTable(id, 名前, 年齢);
}
});
}
$(document).ready(function()
{
SetTableRowColor();
UpdataTableRowCount();
});
5.smarty2.cssファイル
@charset "utf-8";
h1
{
赤色;
テキスト整列:中央;
}
テーブル th
{
背景色:#7cfc00;
}
@charset "utf-8";
h1
{
色:赤;
text-align:center;
}
テーブルです
{
背景色:#7cfc00;
}
新しく追加されたinsert.php
データを受信パケットに入れると、新しい受信パケットの ID が返され、失敗した場合は "f" が返されます。
クリップボードへのプレーンコピーを表示print? require_once 'smarty2_head.php';クリップボードへのプレーンコピーを表示print?
require_once 'smarty2_head.php';
//mysql_connect
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASS) または die("接続に失敗しました" . mysql_error());
mysql_select_db(DB_DATABASENAME, $conn);
//パラメータ
$id = $_POST['id'];
//データベース内の行を削除
$sql = sprintf("id=%d の %s から削除", DB_TABLENAME, $id);
$result = mysql_query($sql, $conn);
mysql_close($conn);
if ($result)
エコー「t」;
その他
エコー「f」;
?>
require_once 'smarty2_head.php';
//mysql_connect
$conn = mysql_connect(DB_HOST, DB_USER, DB_PASS) または die("接続に失敗しました" . mysql_error());
mysql_select_db(DB_DATABASENAME, $conn);
//パラメータ
$id = $_POST['id'];
//dbの行を削除
$sql = sprintf("id=%d の %s から削除", DB_TABLENAME, $id);
$result = mysql_query($sql, $conn);
mysql_close($conn);
if ($result)
エコー「t」;
それ以外
エコー「f」;
?>
新しく追加されたupdata.php
id 変更データベース内の一行確認に基づいて、成功した場合は "f" が返され、失敗した場合は "t" が返されます。
require_once 'smarty2_head.php';
抜粋 MoreWindows
http://www.bkjia.com/PHPjc/478475.html