PHP+Mysql+jQuery实现发布微博程序 php篇


Posted in PHP onOctober 15, 2015

先还是要说明本例的业务流程:
1、前端用户输入内容,并对输入的内容字数进行实时统计。
2、用户提交数据,jQuery实现通过Ajax向后台发送数据。
3、后台PHP接收提交表单的数据,并对数据进行必要的安全过滤。
4、后台PHP连接Mysql数据库,并将提交过来的表单数据写入到相应的数据表中。
5、后台向返回成功结果数据内容,并通过Ajax将返回的数据内容插入到前端页面中。
上述1、2步在前篇文章:jQuery篇已讲解了,本文将完成剩余的散步。

效果图:

PHP+Mysql+jQuery实现发布微博程序 php篇

数据表
首先我们要准备一个数据表,表结构如下:

CREATE TABLE `say` ( 
 `id` int(11) NOT NULL auto_increment, 
 `userid` int(11) NOT NULL default '0', 
 `content` varchar(200) NOT NULL, 
 `addtime` int(10) NOT NULL, 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

注意,本例中将时间字段:addtime的类型设置为int,是为了后续的时间处理方便,在很多应用中(如Discuz论坛)都是将时间类型转成数字型。
时间轴处理函数和格式化输出列表函数:
时间轴处理函数,就是把时间转换成我们看到的诸如“5分钟前”,“昨天 10:21”等形式,代码如下:

/*时间转换函数*/ 
function tranTime($time) { 
 $rtime = date("m-d H:i",$time); 
 $htime = date("H:i",$time); 
 $time = time() - $time; 
 
 if ($time < 60) { 
  $str = '刚刚'; 
 } 
 elseif ($time < 60 * 60) { 
  $min = floor($time/60); 
  $str = $min.'分钟前'; 
 } 
 elseif ($time < 60 * 60 * 24) { 
  $h = floor($time/(60*60)); 
  $str = $h.'小时前 '.$htime; 
 } 
 elseif ($time < 60 * 60 * 24 * 3) { 
  $d = floor($time/(60*60*24)); 
  if($d==1) 
   $str = '昨天 '.$rtime; 
  else 
   $str = '前天 '.$rtime; 
 } 
 else { 
  $str = $rtime; 
 } 
 return $str; 
}

格式化输出函数是将得到的用户信息和发布内容及时间按照一定的格式输出到前端页面的函数,代码如下:

function formatSay($say,$dt,$uid){ 
 $say=htmlspecialchars(stripslashes($say)); 
 
 return' 
 <div class="saylist"><a href="#"><img src="images/'.$uid.'.jpg" width="50" height="50" 
 alt="demo" /></a> 
 <div class="saytxt"> 
 <p><strong><a href="#">demo_'.$uid.'</a></strong> '. 
preg_replace('/((?:http|https|ftp):\/\/(?:[A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+): 
?(\d+)?\/?[^\s\"\']+)/i','<a href="$1" rel="nofollow" target="blank">$1</a>',$say).' 
 </p><div class="date">'.tranTime($dt).'</div> 
 </div> 
 <div class="clear"></div> 
 </div>'; 
}

将以上两个函数都放入function.php中,准备随时被调用。
submit.php处理表单数据
在之前文章中,我们知道jQuery将前端获得的数据以POST方式,通过Ajax提交给了后台的submit.php。那么submit就是要完成后续的所有一摊子任务。请看代码:

require_once('connect.php'); //数据库连接文件 
require_once('function.php'); //函数调用文件 
 
$txt=stripslashes($_POST['saytxt']); //获取提交的数据 
$txt=mysql_real_escape_string(strip_tags($txt),$link); //过滤HTML标签,并转义特殊字符 
if(mb_strlen($txt)<1 || mb_strlen($txt)>140) 
 die("0"); //判断输入字符数是否符合要求 
$time=time(); //获取当前时间 
$userid=rand(0,4); 
//插入数据到数据表中 
$query=mysql_query("insert into say(userid,content,addtime)values('$userid','$txt','$time')"); 
if(mysql_affected_rows($link)!=1) 
 die("0"); 
echo formatSay($txt,$time,$userid); //调用函数输出结果

注意,本例中为了演示,将用户ID(userid)进行随机处理,实际的应用是获取当前用户的ID。另外数据库连接文件,大家可以自己写一个,在我提供的下载的DEMO里也有这个文件。
最后要回到前端页面index.php来。index.php主要除了提供输入的入口,还要承接后台处理返回的结果,并且要将数据库里已有的数据显示出来。代码如下:

<?php 
define('INCLUDE_CHECK',1); 
require_once('connect.php'); 
require_once('function.php'); 
 
$query=mysql_query("select * from say order by id desc limit 0,10"); 
while ($row=mysql_fetch_array($query)) { 
 $sayList.=formatSay($row[content],$row[addtime],$row[userid]); 
} 
?> 
<form id="myform" action="say.php" method="post"> 
 <h3><span class="counter">140</span>说说你正在做什么...</h3> 
 <textarea name="saytxt" id="saytxt" class="input" tabindex="1" rows="2" cols="40"></textarea> 
 <p> 
 <input type="submit" class="sub_btn" value="提 交" disabled="disabled" /> 
 <span id="msg"></span> 
 </p> 
</form> 
<div class="clear"></div> 
<div id="saywrap"> 
<?php echo $sayList;?> 
</div>

以上就是本文的全部内容,希望对大家的学习有所帮助。

PHP 相关文章推荐
php模拟ping命令(php exec函数的使用方法)
Oct 25 PHP
php获取域名的google收录示例
Mar 24 PHP
使用php方法curl抓取AJAX异步内容思路分析及代码分享
Aug 25 PHP
php使用pdo连接并查询sql数据库的方法
Dec 24 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
举例详解PHP脚本的测试方法
Aug 05 PHP
php使用文本统计访问量的方法
May 12 PHP
注意!PHP 7中不要做的10件事
Sep 18 PHP
基于thinkPHP框架实现留言板的方法
Oct 17 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
10个php函数实用却不常见
Oct 13 #PHP
PHP实现连接设备、通讯和发送命令的方法
Oct 13 #PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 #PHP
JavaScript与HTML结合的基本使用方法整理
Oct 12 #PHP
apache和PHP如何整合在一起
Oct 12 #PHP
php实现Mysql简易操作类
Oct 11 #PHP
php实现微信公众平台账号自定义菜单类
Oct 11 #PHP
You might like
Zend的MVC机制使用分析(一)
2013/05/02 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
YII CLinkPager分页类扩展增加显示共多少页
2016/01/29 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
Javascript实现的分页函数
2007/02/07 Javascript
jQuery中文入门指南,翻译加实例,jQuery的起点教程
2007/02/09 Javascript
改版了网上的一个js操作userdata
2007/04/27 Javascript
一些实用的jQuery代码片段收集
2011/07/12 Javascript
JQueryEasyUI Layout布局框架的使用
2013/04/08 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
jquery中show()、hide()和toggle()用法实例
2015/01/15 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
在python的WEB框架Flask中使用多个配置文件的解决方法
2014/04/18 Python
Python多线程编程简单介绍
2015/04/13 Python
Python解析树及树的遍历
2016/02/03 Python
python实现猜数字小游戏
2020/03/24 Python
Python中GIL的使用详解
2018/10/03 Python
python判断自身是否正在运行的方法
2019/08/08 Python
python绘制动态曲线教程
2020/02/24 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
Python requests接口测试实现代码
2020/09/08 Python
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
优秀村官事迹材料
2014/01/10 职场文书
高中地理教学反思
2014/01/29 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
《母鸡》教学反思
2014/02/25 职场文书
《石榴》教学反思
2014/03/02 职场文书
初三学习计划书范文
2014/04/30 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
2016年党建工作简报
2015/11/26 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS