タイトルを読んだ後は、ゲストブック、非常に基本的な内容だと思われるかもしれません。 Smarty の使い方がわからない人はいませんか?心配しないでください。私が表現したいのはプログラミングのアイデアと構造であり、私がやっていることの意味を証明することではなく、初心者が Smarty と ajax を学ぶきっかけになると信じています。当初は ajax で実行していましたが、残念ながらデバッグが成功しなかったため、JS を手書きで実行する必要がありました。しかし、それは問題ではありません。それでもある程度の価値はあります。ソースコードをダウンロードして、サイトの構造をご自身で読んでください。コードは長くないので、ゆっくり説明してください。
PHP5 が利用可能になった現在、OO (オブジェクト指向) は非常に人気があるので、ここではお見逃しなく。まず、OO を使用してデータベース操作と接続を実装する方法を見てみましょう。
[php]
< ?php
/***************************
ページ: dbclass.php
作成者: Hui Boss
機能: データベース操作クラスの定義
****** ******************* ***
//コンストラクター、関数の作成: データベース接続と対応するデータベースの選択 public function
__construct(){
require(
' config.inc.php'
); mysql_connect($ dbhost
,$dbuser
,$dbpassword) または die() 「エラーです!」
); ("SET NAMES 'GBK'"
); //SQL文関数を実行 public function query($sq l return /結果を取得する配列関数を設定 public 関数 loop_query( L $ result$) { Return
Mysql_fetch_array ( $ Result);
関数 d__Destruct
() { 戻り値Mysql_Close () }} ? ; このクラスの特徴は何ですか?まず、__construct() がコンストラクター関数であることを紹介します。コンストラクター関数とは何ですか?平たく言えば、クラスがインスタンス化された後に自動的に実行される関数です。これは、オブジェクトを指すメソッドがない場合に、そのオブジェクトを自動的に破棄する機能です。これには、通常、ファイルを閉じる、データベース接続を閉じるなどのいくつかの終了操作が含まれています。 ?それは正しい!在类实例化的时候自动执行带有数据库连接方法的构造函数,在实例销毁的时候执行关闭数据库连接的析构函数,对于一些基本数据操作我们只要new一个$db对象,然后$db->query()...是不是很方便,当然,这只是一个简单的例子,你还可以继续扩展。来看看 config.inc.php里面是什么:
很容易对不对,感兴趣就接着看吧^_^,来看下模板文件:
php
/*************************
页面:config.inc.php
作者:辉老大
功能:数据库参数变量设定
$dbhost:主机名
$dbuser:连接帐户
$dbpassword:连接密码
$dbname:数据库名
*************************/
$dbhost = "localhost";
$dbuser = "root";
$dbpassword = "7529639";
$dbname = "testdb";
?>
<{/section}>
php '
/******************************************
タイトル:Smarty と Ajax 掲示板を組み合わせた
著者:leehui1983(Hui Boss)
ページ名:index.php
終了日:2006-12-17
************************ * ****************/
require('./libs/Smarty.class.php'); //smarty クラス ライブラリが含まれています
require('./inc/dbclass.php');//
$db=新しい db();//データベース操作インスタンスを生成
$smarty = new Smarty();//smartyオブジェクトをインスタンス化する
$スマート ->template_dir = "./templates";//templateディレクトリ
$smarty-> compile_dir = " 。 /templates_c"; //コンパイルディレクトリを設定します
$smarty->キャッシュ = false; //キャッシュ方法を設定します /* ************************************************* * ** 左右の境界文字、デフォルトは {} ですが、実際のアプリケーションでは JavaScript
と競合しやすいため、<{}> に設定することをお勧めします。
************************************************ ** ****/
$smarty->left_delimiter = "<{"
$smarty-> right_delimiter = "}>";
); //初期のページを設定 Smartyによって表示されるメッセージコンテンツ$rt= $db->query(
"select * from bookinfo order by id desc"
); while($rs=$db-> loop_query($rt
)){ $array[]=array("ユーザー名"=>$rs) ['ユーザー名'],
"コメント"=&g t; $rs['コメント']); } $smarty-> ;割り当てる("bookinfo", $array
); unset ($array);//配列変数を破棄 $スマート-> ;display(
"index.t pl"); // ./templatesの下にあるindex.tplテンプレートをコンパイルして表示します
?> まだありますページの例についてはたくさんのコメントがあります。Smarty マニュアルを参照してください これはとても簡単です! !あはは~~~~それでは、ajax を紹介します。ここでは、基本的な開発フレームワークを使用して ajax を実装します。ajax についての知識については、非常に人気のあるオンラインの電子チュートリアル Ajax Development Briefvar http_request=false を参照することをお勧めします。 ; function send_request(url){//初期化、処理関数、リクエストを送信する関数を指定します http_request=false;//XMLHttpRequest オブジェクトの初期化を開始しますif(window.XMLHttpRequest){//Mozilla ブラウザ http_request=new XMLHttpRequest( ); if(http_request.overrideMimeType){//MIME カテゴリを設定 http_request.overrideMimeType("text/xml"); }
}else if(window.ActiveXObject){///IE ブラウザ try{ http_request= new ActiveXObject("Msxml2.XMLHttp"); }catch(e){
try{
}
}
if(!http_request ) {//例外、オブジェクト インスタンスの作成に失敗しました
window.alert("XMLHttp オブジェクトの作成に失敗しました!");
return false;
}
http_request.onreadystatechange=processrequest;
//リクエストメソッド、URL、次のコードを同期的に実行するかどうかを決定します
http_request.open("GET",url,true);
http_request .send (null);
}
//返された情報を処理する関数
function processrequest(){
if(http_request.readyState==4){// オブジェクトのステータスを決定する
if(http_request.status==200) {//情報が正常に返されました。情報の処理を開始します
document.getElementById(reobj).innerHTML=http_request.responseText;
}
else{//ページは正常ではありません
alert("リクエストしたページは正常ではありません!") ;
}
}
}
function send(obj){
var f=document.book;
var username=f.username.value;
var comment=f.comment.value;
if(username=="" ||comment== ""){
document.getElementById(obj).innerHTML="すべて入力してください。";
return false;
}
else{
send_request('checkbookinfo.php?username='+username+'&comment='+comment);
reobj=obj;
}
}
この方法「公開」ボタンをクリックすると、データはサーバーによって非同期に処理され、メッセージを送信した後、従来のページにジャンプするのではなく、すぐにメッセージを確認できるようになります。では、データはどこに転送されて処理されるのでしょうか? ここを見てください:
php
/****************************************** タイトル: Smarty と Ajax 掲示板の組み合わせの例著者:leehui1983(フイボス) ページ名:checkbookinfo.php
終了日:2006-12-17
************************** * **************/
header
() Content-type: text/html;charset= GBK");//中国語の文字化けを回避するための出力エンコーディング include(
'./inc/dbclass.php'); //データベース操作クラスを含む $db
=new db();//データベース操作インスタンスを生成 $sql
= 」を書籍情報に挿入value(0,'". $comment."','".$ユーザー名."')"; $db
->que ry( $sql); $querysql
="select * from bookinfo order by id desc" ; $結果
=$db-> ;query($querysql); while($rows
=$db -> loop_query ($result)) {//リアルタイム更新のためにメッセージリストを印刷します //$arr.="ユーザー名: {$rows['username']} コンテンツ: {$rows['comment']}< p>";
'ユーザー名: '.$rows['ユーザー名'].' コンテンツ: '.$rows [ 'コメント'].'
//echo $ar r; ?>
それでは、最初にデータを挿入して、更新されたデータを JS で整理して表示した後、AJAX は非常に優れています。基本的には以上です。iframe を追加することで何が変わるか考えたことはありますか?チャット ルームを更新する必要はありません。自分の能力を使って外観を実現します。この例では、OO、AJAX、SMARTY を使用しています。皆さんに気に入っていただければ幸いです。転載する場合は、著作権を明記してください。最後に、これが