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的ob_start() 控制您的浏览器cache
Aug 03 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
解析dedecms空间迁移步骤详解
May 15 PHP
Linux环境下搭建php开发环境的操作步骤
Jun 17 PHP
php实现的支持imagemagick及gd库两种处理的缩略图生成类
Sep 23 PHP
php的curl封装类用法实例
Nov 07 PHP
PHP实现股票趋势图和柱形图
Feb 07 PHP
如何使用php等比例缩放图片
Oct 12 PHP
Zend Framework入门教程之Zend_Session会话操作详解
Dec 08 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
PHP判断是否是微信打开,浏览器打开的方法
Mar 14 PHP
PHP Include文件实例讲解
Feb 15 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
使用php4加速网络传输
2006/10/09 PHP
使用apache模块rewrite_module (转)
2007/02/14 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
python进程与线程小结实例分析
2018/11/11 PHP
JQuery live函数
2010/12/24 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
JS中批量给元素绑定事件过程中的相关问题使用闭包解决
2013/04/15 Javascript
使用JSLint提高JS代码质量方法分享
2013/12/16 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
js重写方法的简单实现
2016/07/10 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
[00:32]2018DOTA2亚洲邀请赛EG出场
2018/04/03 DOTA
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
python实现统计文本中单词出现的频率详解
2019/05/20 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
Django REST Swagger实现指定api参数
2020/07/07 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
python selenium 获取接口数据的实现
2020/12/07 Python
法定代表人资格证明书
2015/06/18 职场文书
婚宴来宾致辞
2015/07/28 职场文书
初三英语教学反思
2016/02/15 职场文书
2016年领导干部廉政承诺书
2016/03/24 职场文书
vue项目两种方式实现竖向表格的思路分析
2021/04/28 Vue.js
MySQL Server 层四个日志
2022/03/31 MySQL
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js