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 相关文章推荐
用Socket发送电子邮件(利用需要验证的SMTP服务器)
Oct 09 PHP
PHP中查询SQL Server或Sybase时TEXT字段被截断的解决方法
Mar 10 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
php发送post请求函数分享
Mar 06 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
Apr 25 PHP
WordPress主题制作之模板文件的引入方法
Dec 28 PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 PHP
php获取指定数量随机字符串的方法
Feb 06 PHP
PHP实现的简单适配器模式示例
Jun 22 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
Oct 06 PHP
实例分析PHP中PHPMailer发邮件
Dec 13 PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 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安全配置
2006/10/09 PHP
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
Yii视图CGridView列表用法实例分析
2016/07/12 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
2017/06/07 PHP
php-app开发接口加密详解
2018/04/18 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
jquery对表单操作2
2011/04/06 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
自己写的Javascript计算时间差函数
2013/10/28 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
js实现随机点名
2021/01/19 Javascript
详解js创建对象的几种方式和对象方法
2021/03/01 Javascript
python实现文件分组复制到不同目录的例子
2014/06/04 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
美国购买和销售礼品卡平台:Raise
2017/01/13 全球购物
中科软笔试题和面试题
2014/10/07 面试题
电子专业推荐信范文
2013/11/18 职场文书
高级方案规划工程师岗位职责
2013/11/29 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
环境保护与污染治理求职信
2014/07/16 职场文书
2014年煤矿工作总结
2014/11/24 职场文书
公司年会主持词范文!
2019/05/07 职场文书
提升Nginx性能的一些建议
2021/03/31 Servers
maven依赖的version声明控制方式
2022/01/18 Java/Android