>백엔드 개발 >PHP 튜토리얼 >새로 고치지 않는 방명록 예제를 구현하기 위해 Ajax와 결합된 Smarty

새로 고치지 않는 방명록 예제를 구현하기 위해 Ajax와 결합된 Smarty

WBOY
WBOY원래의
2016-07-29 08:35:55916검색

看了标题你也许要说,留言本,很基本的东东啊!谁不会啊,还要用Smarty,这不找累吗?别急,我要表达的是一种编程的思想和结构,而不是证明我做的东西多有意义,通过它相信对初学者学习Smarty和ajax有些启发。原本用ajax做的,可惜始终调试不成功,只好用手写JS来弄了,不过不要紧,还是有一定价值的。站点结构大家下了源代码自己看,代码不长,应该不会看烦^_^,听我慢慢道来。
     现在都PHP5了OO(面向对象)很流行了都,这里也不错过,首先来看下我们用OO来实现数据库操作和连接:
[php]
/**************************
页面:dbclass.php
作者:辉老大
功能:定义数据库操作类
**************************/
php
/**************************
页面:dbclass.php
作者:辉老大
功能:定义数据库操作类
**************************/
class db
{
//创建构造函数,作用:数据库连接并选择相应数据库
public function __construct
(){
require(
'config.inc.php'
);
mysql_connect($dbhost,$dbuser,$dbpassword) or die("error!"
);
mysql_query("SET NAMES 'GBK'"
);
mysql_select_db($dbname
);
}
//执行SQL语句函数
public function query($sql
){
return
mysql_query($sql
);
}
//取得结果集数组函数
public function loop_query($result
){
return
mysql_fetch_array($result
);
}
//创建析构函数,作用:关闭数据库连接
public function __destruct
(){
return
mysql_close
();
}
}
?> 
这个类有什么特点呢?首先介绍下__construct()是构造函数,啥是构造函数?通俗点讲就是类被实例化后就自动执行的函数,__destruct()是啥?是析构函数,它的作用就是在没有任何方法指向这个对象时,便自动销毁对象,里面一般包含一些收尾的操作,比如关闭文件,关闭数据库连接之类的方法,看到这你是不是明白一些了?没错!在类实例化的时候自动执行带有数据库连接方法的构造函数,在实例销毁的时候执行关闭数据库连接的析构函数,对于一些基本数据操作我们只要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}>











< ;/tr>
사용자 이름: name="username" type="text">
메시지 내용:

php
/*****************************************
제목:Ajax 게시판과 결합된 Smarty
작성자:leehui1983(Hui Boss)
페이지명:index.php
종료일:2006-12-17
********** *** ******************************/
require('./libs/Smarty . class.php');
//스마트 클래스 라이브러리 포함
require('. / inc/dbclass.php');
//데이터베이스작업 클래스
$db < 포함 🎜>= new db();
//데이터베이스 작업 인스턴스 생성
$smarty = new Smarty();
//smarty 객체 인스턴스화
$smarty->template_dir = "./templates"; //설정템플릿디렉토리
$smarty->compile_dir = "./templates_c";
//컴파일 디렉토리 설정
$smarty ->캐싱 = 거짓
/ /캐시 방식 설정 /****************************************** *************
좌우 경계문자, 기본값은 {} 이지만, 실제 애플리케이션에서는 자바스크립트
와 충돌하기 쉬우므로 설정하는 것을 권장 <{}>
*********************************************** ******/
 
$smarty->left_delimiter "< {"
; 🎜>
"}>"
; $smarty->할당
(
'title'
,'Smarty와 ajax를 결합하여 간단한 메시지 게시판 만들기');//템플릿 내용 바꾸기 //초기 페이지설정 Smarty가 표시하는 메시지 내용 $rt
=$db
->
쿼리
("id desc로 bookinfo 주문에서 * 선택"); while($rs=$db
->
loop_query
($rt )){ $array []=array("사용자 이름"
=>
$ rs
['사용자 이름' ],"댓글"=>$ rs['댓글' ]); } $smarty ->
할당(

"bookinfo"
,$array ); unset ($array);
//배열 변수 삭제
$smarty->디스플레이
(
"index.tpl"
);//컴파일 및 표시 위치 ./templates ?> 아래의 index.tpl 템플릿에는 많은 내용이 있습니다. 페이지 예시에 있는 댓글은 스마티 매뉴얼
을 참고하세요. 너무 쉽습니다! ! 하하~~그럼 Ajax를 소개할 시간입니다. 여기서는 기본 개발 프레임워크를 사용하여 구현합니다. Ajax에 대한 지식을 얻으려면 매우 인기 있는 온라인 전자 튜토리얼인 Ajax Development Brief를 살펴보는 것이 좋습니다. var 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.>//요청 방법, URL, 다음 실행 여부를 결정합니다. 코드를 동기적으로
http_request.open("GET",url,true);
http_request.send(null);
}
//반환된 정보를 처리하는 함수
function processrequest() {
if (http_request.readyState==4){//객체 상태 확인
if(http_request.status==200){//정보가 성공적으로 반환되었으므로 정보 처리를 시작하세요
문서 .getElementById(reobj).innerHTML=http_request .responseText;
}
else{//페이지가 정상이 아닙니다
Alert("요청하신 페이지가 정상이 아닙니다! ");
}
}
}
function send(obj){
var f=document.book;
var 사용자 이름=f.username.value;
var comment=f.comment.value;
if(username==""||comment==""){
document.getElementById(obj).innerHTML="입력해 주세요. 완전히 !";
return false;
}
else{
send_request('checkbookinfo.php?username=' 사용자 이름 '&comment=' comment);
reobj=obj;
}
}
이런 방식으로 '게시' 버튼을 클릭하면 데이터가 서버에 의해 비동기적으로 처리되고 비동기 업데이트가 JS를 통해 구성됩니다. 전통적으로 페이지가 이동할 때까지 기다리는 대신 메시지를 즉시 볼 수 있습니다. 그러면 처리를 위해 데이터가 어디로 전송되나요? php
🎜>/*****************************************제목 : Ajax 게시판과 결합된 Smarty 예 글쓴이:leehui1983(Hui Boss) 페이지명:checkbookinfo.php 종료일:2006-12-17
**************** *** **************************/
헤더
(

"콘텐츠 유형: 텍스트/ html;charset= GBK"

);
//한자 깨짐 방지를 위한 인코딩 출력 include('./ inc/dbclass.php'
);
//데이터베이스 작업 클래스 포함 $db= new
db();
//데이터베이스 운영 인스턴스 생성 $ sql=
"bookinfo 값에 삽입(0,'".
$comment."', '".$username."')"; $db->
쿼리(
$sql ); $querysql=
"id desc로 bookinfo 주문에서 * 선택"
; $result=
$db->
쿼리 ($querysql); while($rows=
$db->
loop_query($result)){ //실시간 업데이트를 위해 메시지 목록 인쇄 //$arr.="사용자 이름: {$rows['username']} 콘텐츠: {$rows[ 'comment']}

"; echo '사용자 이름: '
.$rows
['사용자 이름'].' 콘텐츠: '.$rows['댓글'].'

'; } //echo $arr;?>

글쎄요, 데이터를 먼저 넣고 패스하세요. JS Organizational 디스플레이를 통해 업데이트된 데이터, AJAX가 정말 좋아 보입니다! 기본적으로는 소개입니다. iframe을 추가하면 무엇을 바꿀 수 있는지 생각해 보셨나요? 새로 고침 채팅방이 없습니다. 외모를 달성하는 능력을 사용하십시오. 이 예제는 OO, AJAX, SMARTY를 많이 사용합니다. 이 기사를 PHP Magazine에 제출하기로 결정했습니다. 감사합니다. 마지막으로
렌더링입니다~~~~
위에서는 관련 내용을 포함하여 새로 고침되지 않는 방명록을 구현하기 위해 Ajax와 결합된 Smarty의 예를 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.