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 相关文章推荐
How do I change MySQL timezone?
Mar 26 PHP
php中文字符截取防乱码
Mar 28 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
解析PHP中数组元素升序、降序以及重新排序的函数
Jun 20 PHP
2014年最新推荐的10款 PHP 开发框架
Aug 01 PHP
thinkphp文件处理类Dir.class.php的用法分析
Dec 08 PHP
php实现转换ubb代码的方法
Jun 18 PHP
CodeIgniter配置之routes.php用法实例分析
Jan 19 PHP
PHP实现更改hosts文件的方法示例
Aug 08 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 PHP
Yii框架数据库查询、增加、删除操作示例
Oct 14 PHP
通过代码实例解析PHP session工作原理
Dec 11 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
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
PHP面向对象之事务脚本模式(详解)
2017/06/07 PHP
PHP常见过waf webshell以及最简单的检测方法
2019/05/21 PHP
JAVASCRIPT对象及属性
2007/02/13 Javascript
用javascript实现自定义标签
2007/05/08 Javascript
重写javascript中window.confirm的行为
2012/10/21 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
canvas实现刮刮卡效果
2017/03/14 Javascript
vue loadmore 组件滑动加载更多源码解析
2017/07/19 Javascript
认识less和webstrom的less配置方法
2017/08/02 Javascript
通过jquery toggleClass()属性制作文章段落更改背景颜色
2018/05/21 jQuery
利用原生JS实现data方法示例代码
2019/05/28 Javascript
构建Vue大型应用的10个最佳实践(小结)
2019/11/07 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
Python中字典的setdefault()方法教程
2017/02/07 Python
Python爬虫爬取一个网页上的图片地址实例代码
2018/01/16 Python
tensorflow 查看梯度方式
2020/02/04 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
美国著名童装品牌:OshKosh B’gosh
2016/08/05 全球购物
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
销售类求职信
2014/06/13 职场文书
铁人观后感
2015/06/16 职场文书
宾馆卫生管理制度
2015/08/06 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
七年级作文之下雨天
2019/12/23 职场文书
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers