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学习笔记之二 php入门知识
Jan 12 PHP
让你成为更出色的PHP开发者的10个技巧
Feb 25 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
Aug 01 PHP
制作安全性高的PHP网站的几个实用要点
Dec 30 PHP
php读取flash文件高宽帧数背景颜色的方法
Jan 06 PHP
php实现通用的信用卡验证类
Mar 24 PHP
PHP记录搜索引擎蜘蛛访问网站足迹的方法
Apr 15 PHP
使用PHP实现微信摇一摇周边红包
Jan 04 PHP
PHP 中提示undefined index如何解决(多种方法)
Mar 16 PHP
PHP笛卡尔积实现算法示例
Jul 30 PHP
在PHP中输出JS语句以及乱码问题的解决方案
Feb 13 PHP
PHP count_chars()函数讲解
Feb 14 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
PHP 批量删除 sql语句
2009/06/05 PHP
phpQuery让php处理html代码像jQuery一样方便
2015/01/06 PHP
使用URL传输SESSION信息
2015/07/14 PHP
php+ajax无刷新上传图片实例代码
2015/11/17 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
php中数组最简单的使用方法
2020/12/27 PHP
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
js里取容器大小、定位、距离等属性搜集整理
2013/08/19 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
JavaScript 面向对象与原型
2015/04/10 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
浅析在javascript中创建对象的各种模式
2016/05/06 Javascript
关于js中的鼠标事件总结
2017/07/11 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
JavaScript中toLocaleString()和toString()的区别实例分析
2018/08/14 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
封装 axios+promise通用请求函数操作
2020/08/11 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
[14:03]2017DOTA2亚洲邀请赛开幕式:12神兵演绎水墨中华
2017/04/01 DOTA
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
python实现邮件自动发送
2019/08/10 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
最新茶叶店创业计划书
2014/01/14 职场文书
前厅收银主管岗位职责
2014/02/04 职场文书
医学专业应届生的自我评价
2014/02/28 职场文书
贸易跟单员英文求职信
2014/04/19 职场文书
党的群众路线教育实践活动调研报告
2014/11/03 职场文书
公司处罚决定书
2015/06/24 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android
python基础之类属性和实例属性
2021/10/24 Python