ホームページ  >  記事  >  バックエンド開発  >  Smarty と Ajax を組み合わせて非更新ゲストブックを実装する example_PHP チュートリアル

Smarty と Ajax を組み合わせて非更新ゲストブックを実装する example_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:58:07752ブラウズ

タイトルを読んだ後は、ゲストブック、非常に基本的な内容だと思われるかもしれません。 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"
;
?>
 




<{$title}>





<{*这里显示留言内容*}>
<{section name=loop loop=$bookinfo}><{*循环显示留言*}>
用户名:<{$bookinfo[loop].username}> 内容:<{$bookinfo[loop].comment}>


<{/section}>



  
   
      
      
   
   
      
      
   
  
用户名:
留言内容:

  
  




模板中的内容在<{}>中的一会会被PHP替换掉,这就实现了美工和程序员的分工,不错吧有关Smarty的内容还请参考手册,这里就不便多说。来看下页面是怎么输出模板的吧:

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{ http_request=new ActiveXobject("Microsoft.XMLHttp"); }catch(e){}
}
}
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>";
echo
'ユーザー名: '
.$rows['ユーザー名'].' コンテンツ: '.$rows [ 'コメント'].'

'; }

//echo $ar r;
?>

それでは、最初にデータを挿入して、更新されたデータを JS で整理して表示した後、AJAX は非常に優れています。基本的には以上です。iframe を追加することで何が変わるか考えたことはありますか?チャット ルームを更新する必要はありません。自分の能力を使って外観を実現します。この例では、OO、AJAX、SMARTY を使用しています。皆さんに気に入っていただければ幸いです。転載する場合は、著作権を明記してください。最後に、これが効果画像です~~~~

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/317700.html技術記事タイトルを読んだ後は、ゲストブック、非常に基本的な内容だと思われるかもしれません。 Smarty の使い方がわからない人はいませんか?心配しないでください、私が表現したいのはプログラミングのアイデアや構造であって…ではありません
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。