亲们,好久不见了,军哥可想死你们了!最近都比较忙吧,军哥亦是如此哦,首先忙于学习,不断让学习成为一种信仰,一种习惯;接着是忙于运动,生命在于生生不息嘛,军哥在这里表达的不是生命在于运动,否则成天运动的运动员都个个长寿了,而一动不动的乌龟就不会活很久了。其实生命真正的关键在于平衡,在于气血的流通,所以呐,军哥为了活络活络自己脆弱的不能再脆弱的筋骨,毅然而决然的加入到健身的的人群当中,通过近期的锻炼,效果还是很不错滴,精神面貌等有了很大的改良;还有就是“忙“于爱情,不得不感叹一声“众里寻她千百度,那人却在灯火阑珊处”,军哥单身了这么多年,这回连老天也看不下去了,终于让我寻觅到了一位”冤家“,改天介绍亲们认识哈,嘻嘻~~。
完了,完了,居然跑题了~~ 我们还是言归正传吧。
对于初学者学习php,其实做留言板是一个最好的实践项目。同样,学习CI亦是如此,把做留言板的整个流程弄清楚了,也就能够更好的深入学习其他复杂的项目。别小看一个留言板额,”麻雀虽小,五脏俱全“。注册、登录、验证码、回复、分类还有数据库的增删查改操作都会涉及到的。不过这一回嘛,暂时还没有这么齐全,只是制作了一个简单的留言板,包括了留言及留言回复以及分页等(通过Ajax技术实现),军哥在后面的分享当中还会再写一个功能齐全的留言板。代码示例 更多请访问军哥个人主页:一、先给大家看一下效果图(有图有真相这话可不是盖的哟):
1、初始效果2、留言验证效果3、留言成功效果4、点击回复留言效果5、点击更多效果二、模型(即Model)
留言表Model:
- class M_message extends CI_Model {
- //获取留言信息
- function get($num) {
- $data = '';
- $this->db->select('id,name,email,website,picture,content,posttime,show');
- $this->db->order_by('posttime','asc');
- $data = $this->db->get_where('message', array('show' =>
1),$num);
- return $data;
- }
- // 插入留言信息
- function insert() {
- $data = array(
- 'posttime' => time(),
- 'name' => $this->input->post('name'),
- 'content' => $this->input->post('content'),
- );
- $this->db->insert('message', $data);
- return $this->db->insert_id();
- }
- // 统计留言数量
- function count() {
- $data = '';
- $this->db->where('show', 1);
- $data = $this->db->count_all_results('message');
- return $data;
- }
- }
回复表Model:
- class M_reply extends CI_Model {
- //获取某一条留言的回复信息
- function get($postId) {
- $data = '';
- $this->db->select('id,postId,content,name,replyTime,show');
- $this->db->order_by('replyTime','desc');
- $data = $this->db->get_where('reply', array('show' =>
1,'postId'=> $postId));
- return $data;
- }
- // 插入留言信息
- function insert() {
- $data = array(
- 'postId' => $this->input->post('postId'),
- 'name' => $this->input->post('name'),
- 'content' => $this->input->post('content'),
- 'replyTime' => time(),
- );
- $this->db->insert('reply', $data);
- return $this->db->insert_id();
- }
- // 统计某一条留言的回复数量
- function count($postId) {
- $data = '';
- $this->db->where(array('show' => 1,'postId' =>
$postId));
- $data = $this->db->count_all_results('reply');
- return $data;
- }
- }
三、控制器(controllers)
- class message extends CI_Controller {
- // 构造函数
- function __construct() {
- parent::__construct();
- //配置文件获取应用根目录
- $this->base_url = $this->config->item("base_url");
- //加载留言表Model
- $this->load->model('M_message');
- //加载回复表Model
- $this->load->model('M_reply');
- }
- //显示留言表页
- function index() {
- $data['base_url'] = $this->base_url;
- $data['yourName'] = "JayJun";
- $data['megnumRow'] = $this->M_message->count();
- $this->load->view("message_index",$data);
- }
- //执行添加留言或回复操作
- function insert($type) {
- switch($type) {
- //执行添加留言操作
- case "message":
- if ($this->M_message->insert() > 0)
- {
- echo "yes";
- }
- else
- {
- echo "no";
- }
- break;
- //执行添加回复操作
- case "reply":
- if ($this->M_reply->insert() > 0)
- {
- echo "yes";
- }
- else
- {
- echo "no";
- }
- break;
- }
- }
- //Ajax加载留言和回复信息
- function receive($num){
- //获取留言信息
- $query = $this->M_message->get($num);
- $data['megnumRow'] = $this->M_message->count();
- //获取回复信息
- if($query->num_rows() > 0)
- {
- foreach($query->result() as $row)
- {
- //取回复记录
- $query1 = $this->M_reply->get($row->id);
- if($query1->num_rows() > 0)
- {
- foreach($query1->result() as $row1)
- {
- $row->reply_row[] = $row1;
- }
- }
- $row->num =
$this->M_reply->count($row->id);
- $data['meg_row'][] = $row;
- }
- }
- $data['base_url'] = $this->base_url;
- $this->load->view("message_receive",$data);
- }
- }
四、视图(views)
message_index.php:
-
-
- 在CI框架中,JQuery+Ajax实现一个简单的留言板例子
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(function(){
- //定义默认显示留言个数,这里初始化值为2
- var num = 2;
- //实现留言板验证
- $("#megform").Validform({
- btnSubmit:"#meg_sub",
- tiptype:2,
- });
- //触发留言提交事件
- $("#meg_sub").click(function(){
- //获取留言表单的名称和留言内容
- var name = $("#name").val();
- var content = $("#content").val();
- //ajax方式提交留言内容
- if(name != "" && content!=""){
- var ajax = new Ajax();
- ajax.post("",{name:name,content:content},function(data){
- if(data == "yes"){
- receive();
- }
- });
- }
- });
- //初始化留言和回复信息
- receive();
- //调用留言控制器的receive方法,获取所有留言信息
- function receive(){
- var ajax = new Ajax();
- ajax.get("/" +
num,function(data){
- $("#loadMore").html("Loading...");
- //设置留言内容
- $("#message_list").html(data);
- //点击更多留言后会增加3条留言个数
- num = num + 3;
- $("#loadMore").click(function(){
- receive();
- });
- $("#loadMore").attr('href','javascript:receive(' + num +
')');
- $("#loadMore").html("显示更多");
- //如果没有更多内容提示,则弹出提示框,并屏蔽点击事件
- var maxNum = + 3;
- if(num > maxNum && maxNum > 5){
- $('#TipModal').show();//显示提示框
- $("#loadMore").attr('href','javascript:void(0)');
- $("#loadMore").attr('title','点击隐藏更多显示');
- $("#loadMore").addClass('js_close');
- $("#loadMore").html("隐藏更多");
- num = 2;
- }
- //实现回复留言验证
- $(".replyform").Validform({
- btnSubmit:".reply_sub",
- tiptype:2,
- });
- });
- }
- //触发点击关闭提示框事件
- $('.js_close').live('click',function(){
- $('#TipModal').hide();
- });
- //触发回复点击事件
- $(".reply").live('click',function(){
- $(this).parent().next().slideToggle(100);
- });
- //触发回复提交事件
- $(".reply_sub").live('click',function(){
- //获取回复表单的姓名和内容以及所回复的留言ID
- var postId =
$(this).parent().siblings().children(".postId").val();
- var content =
$(this).parent().siblings().children(".content").val();
- var name = $(this).prev(".name").val();
- //ajax方式提交回复内容
- if(name != "" && content != ""){
- var ajax = new Ajax();
- ajax.post("",{postId:postId,name:name,content:content},function(data){
- if(data == "yes"){
- num = 2;
- receive();
- }
- });
- }
- });
- })
-
message_receive.php:
留言():
- 0){ $count=1;?>
-
-
-
-
- 楼
-
- content; ?>
-
-
- name;
?>
- | 发表于posttime);
?>
- [回复]
-
-
-
-
-
- num > 0){ ?>
-
-
回复(num; ?>):
- reply_row as
$items):?>
-
- content;
?>
-
- name; ?>
- | 发表于
- replyTime); ?>
-
-
-
-
-
-
-
-
-
-
-
-
还没有访客签写留言哦,您作为第一个访客留言吧!
-
五、应用
(1)、先下载附件,解压之后,拷贝到网站根目录下;
(2)、找到文件install.sql,建库建表;
(3)、修改配置文件CI_message/application/config/database.php,只需设置$db['default']['password'] ='你的数据库密码';
,大概第10行;
(4)、直接在浏览器中输入即可访问。
原文地址:
阅读(603) | 评论(0) | 转发(0) |