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 相关文章推荐
拼音码表的生成
Oct 09 PHP
用PHP+MySql编写聊天室
Oct 09 PHP
简单的页面缓冲技术
Oct 09 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
php数组函数序列之array_keys() - 获取数组键名
Oct 30 PHP
php遍历类中包含的所有元素的方法
May 12 PHP
PHP实现的QQ空间g_tk加密算法
Jul 09 PHP
PHP中递归的实现实例详解
Nov 14 PHP
python进程与线程小结实例分析
Nov 11 PHP
PHP实现简易计算器功能
Aug 28 PHP
tp5框架内使用tp3.2分页的方法分析
May 05 PHP
php curl发送请求实例方法
Aug 01 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
PHP7.0安装笔记整理
2015/08/28 PHP
实现WordPress主题侧边栏切换功能的PHP脚本详解
2015/12/14 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
javascript 触发HTML元素绑定的函数
2010/09/11 Javascript
js实现日历可获得指定日期周数及星期几示例分享(js获取星期几)
2014/03/14 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
jQuery滚动条美化插件nicescroll简单用法示例
2018/04/18 jQuery
Angular服务Request异步请求的实例讲解
2018/08/13 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
vue-router传参用法详解
2019/01/19 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
JS代码优化的8点建议
2020/02/04 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
Python计算三角函数之asin()方法的使用
2015/05/15 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
对python中大文件的导入与导出方法详解
2018/12/28 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
高清屏中使用Canvas绘图出现模糊的问题及解决方法
2019/06/03 HTML / CSS
英国内衣连锁店:Boux Avenue
2018/01/24 全球购物
会计专业大学生职业生涯规划范文
2014/01/11 职场文书
2014年保卫工作总结
2014/12/05 职场文书
天堂的孩子观后感
2015/06/11 职场文书
2015年基层党建工作汇报材料
2015/06/25 职场文书
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
win10清理dns缓存
2022/04/19 数码科技