Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

Smarty 结合ajax 无刷新留言本实例解析

Posted on 2007-08-08 04:52  analyzer  阅读(1472)  评论(5编辑  收藏  举报

前言:相信诸位新手朋友在学会了基本的PHP 后都会问自己一个问题,我已经不会做留言本,
简单的 CMS  了,那下一步该学习些什么呢?没错!当你掌握了基本的PHP 知识后,确实应该逐步
向更高级的应用发展,smarty 和ajax 技术必然是你不能错过的。当然,另外一个重点就是适应PHP
的发展,从传统的面向过程编程,逐渐转向为面向对象编程,也就是传说中的OOP 哦!嗯,我就以
一个简单的smarty 结合ajax 技术构建的留言本实例来介绍下如何在自己的项目中应用它们,当然,
你也许会说:“做个留言本还需要这么复杂吗?”呵呵,这个例子的重点是通过一个简单的例子在向
大家介绍下PHP 中的高级应用,大家不用考虑实际的可行性。大家接着往下看,相信不会让你失望
的。

Smarty 及 ajax 简介

    我们在讲这个例子之前首先要简单了解下什么是 smarty 及 ajax。

    smarty  是模板引擎,它可以利用现成的模板来生成页面,有人就要说啦:“直接在 html  里面写
不就可以了,还那么麻烦干吗?”对,对于小型项目,你完全可以这么做!且应该这么做,不然就
违背了PHP 简单快速的优势了,但是对于大中型项目利用模板技术可以分离美工和程序,这样极大
地提高了开发效率也易于维护,所以大家都应该掌握模板引擎技术,模板引擎有很多,这里选择目
前最流行地 smarty 来讲解。

    Ajax――目前炒地最火热的技术,既异步javascript 和xml,使用ajax 的最大好处是用户的请求
和服务器的响应可以异步执行这样就可以不刷新网页就可以更新网页内容,所有返回的结果通过 js
代码整理显示,使用 ajax 可以增强客户端表现力,减轻服务器负担,所以这个技术我们作为web 2.0
时代的PHPer 还是有必要学习滴~~关于 smarty 及 ajax 的详细内容请参考手册及相关书籍,这里就
不便多说了,好了,好了,赶紧进入正题吧,到底这个例子是怎样完成的呢?不要着急,请跟着我
一步一步来^_^

运行环境及前期准备

    大家可以去  smarty  的官网下载smarty,安装非常简单,我们所需要的,只是解压后的lib 文件
夹,拷贝它到的你的站点目录,再增加这样几个文件夹,请看下面这个目录结构:
 


说明下,inc  是我保存自己的页面会用到的一些包含文件的文件夹,还有 templates_c  文件夹的
属性一定要设置成可写,不然编译后的文件写不进去,程序就运行不来了,程序执行成功,你会发
现这个文件下会多了个文件名非常奇怪的文件,没错那就是模板编译后的文件。

    接下来,我们还要建立需要的数据表。在mysql 中新建个数据库叫testdb,整理用utf8_general_ci               ,
里面只有一个表:bookinfo,来看下结构:
 

具体实现过程

    终于到了最关键的部分,来看看我们是怎样实现的,先看看我们的模板代码,这里我省略了CSS
部分,不过这并不影响大家理解: 



    我们将这个文件保存成index.tpl 文件,tpl 是smarty 默认的模板文件后缀,有时候为了美工方便
也写成.html 后缀。看了这个我们大概就能看出网页的基本样子,我们先不必管他是怎样通过  smarty
输出的,来看看首页的这个文件:

    Smarty 使用起来很容易,我们要做的就是先包含它的类文件,再生成实例,然后调用方法,替
换模板内容,最后输出模板,就是这么简单,具体的大家还是要多实践。看到包含的dbclass.php 文
件吗?这就是我们要用到 OO           的地方,接下来我们谈谈如何用 OO            的方法编写数据库操作。看下
dbclass.php 的代码,它为于inc 文件夹下:

    这个类有什么特点呢?首先介绍下__construct()是构造函数,啥是构造函数?通俗点讲就是类被
实例化后就自动执行的函数,__destruct ()是啥?是析构函数,它的作用就是在没有任何方法指向这
个对象时,便自动销毁对象,里面一般包含一些收尾的操作,比如关闭文件,关闭数据库连接之类
的方 法,看到这你是不是明白一些了?没错!在类实例化的时候自动执行带有数据库连接方法的构
造函数,在实例销毁的时候执行关闭数据库连接的析构函数,对于一些 基本数据操作我们只要new
一个$db  对象,然后$db->query()...是不是很方便,当然,这只是一个简单的例子,你还可以继续扩
展。来 看看  config.inc.php 里面是什么,它也位于inc 文件夹下:

大家自己的应用中,还要以自己的数据库配置为准。很容易对不对,感兴趣就接着看吧^_^接下
来到了介绍ajax 的时候,这里我们用一个基本的开发框架来实现,关于ajax 的知识建议大家看看网
上非常流行的电子教程《ajax 开发简略》,好的,看看框架代码吧,它位于inc 文件夹下,文件名:
ajax.js


   
这样我们点“发布”按钮,数据就会交由服务器异步处理,通过JS 来组织异步更新,在发过留
言后你马上就能看见你的留言而不是传统的等待页面跳转,那么数据传到哪里处理呢?看这里:


    嗯,先通过smarty 显示初始页面,再插入数据,在将更新后的数据通过JS 组织显示,AJAX 看
来真的不错哦!大体就介绍完了,不知道大家想过没有,加个  iframe                    可以改成什么?对!无刷新聊
天室,发挥你的能力,实现一个看看。这个例子用到了OO,AJAX,SMARTY,东西还是蛮多滴,
最后附上演示效果图,希望大家喜欢,当然也别忘了支持我哦~~

运行效果

                                   初始页面

                                   发送留言


我要啦免费统计