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 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
PHP 输出简单动态WAP页面
Jun 09 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
php利用cookie实现访问次数统计代码
May 19 PHP
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
php中实现简单的ACL 完结篇
Sep 07 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
Jul 02 PHP
php通过ksort()函数给关联数组按照键排序的方法
Mar 18 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
使用Codeigniter重写insert的方法(推荐)
Mar 23 PHP
php分页查询mysql结果的base64处理方法示例
May 18 PHP
PHP+Ajax实现的检测用户名功能简单示例
Feb 12 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
德生PL330的评价与改造
2021/03/02 无线电
生成静态页面的PHP类
2006/07/15 PHP
一个可查询所有表的“通用”查询分页类
2006/10/09 PHP
PHP 事务处理数据实现代码
2010/05/13 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
php批量添加数据与批量更新数据的实现方法
2014/12/16 PHP
Laravel 5框架学习之表单验证
2015/04/08 PHP
PHP导入导出Excel代码
2015/07/07 PHP
php 无限级分类 获取顶级分类ID
2016/03/13 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
仿新浪微博登陆邮箱提示效果的js代码
2013/08/02 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
ECMAScript6块级作用域及新变量声明(let)
2015/06/12 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
基于JavaScript实现瀑布流效果(循环渐近)
2016/01/27 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
Vue cli 引入第三方JS和CSS的常用方法分享
2018/01/20 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
解决Layui中templet中a的onclick参数传递的问题
2019/09/20 Javascript
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
Python操作MongoDb数据库流程详解
2020/03/05 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
CSS3哪些新特性值得称赞
2016/03/02 HTML / CSS
如何进行有效的自我评价
2013/09/27 职场文书
渔夫的故事教学反思
2014/02/14 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
写给老师的感谢信
2015/01/20 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
2016年端午节寄语
2015/12/04 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
基于Python实现射击小游戏的制作
2022/04/06 Python