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、Nginx、Apache中禁止网页被iframe引用的方法
Oct 01 PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 PHP
php结合curl实现多线程抓取
Jul 09 PHP
composer.lock文件的作用
Feb 03 PHP
php简单实现sql防注入的方法
Apr 22 PHP
浅谈PHP中的
Apr 23 PHP
浅析php静态方法与非静态方法的用法区别
May 17 PHP
thinkPHP简单调用函数与类库的方法
Mar 15 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
PHP CURL与java http使用方法详解
Jan 26 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 PHP
laravel中Redis队列监听中断的分析
Sep 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
discuz Passport 通行证 整合笔记
2008/06/30 PHP
php目录操作函数之获取目录与文件的类型
2010/12/29 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
thinkPHP自定义类实现方法详解
2016/11/30 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
JS提交并解析后台返回的XML的代码
2008/11/03 Javascript
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
Javascript实现颜色rgb与16进制转换的方法
2015/04/18 Javascript
JavaScript实现的伸展收缩型菜单代码
2015/10/14 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
基于Proxy的小程序状态管理实现
2019/06/14 Javascript
基于Web Audio API实现音频可视化效果
2020/06/12 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
2020/06/22 Javascript
Vue中避免滥用this去读取data中数据
2021/03/02 Vue.js
[03:16]DOTA2完美大师赛主赛事首日集锦
2017/11/23 DOTA
python多线程用法实例详解
2015/01/15 Python
python显示生日是星期几的方法
2015/05/27 Python
Python制作简单的网页爬虫
2015/11/22 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
Django实现文件上传下载功能
2019/10/06 Python
python数据预处理 :样本分布不均的解决(过采样和欠采样)
2020/02/29 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
洲际酒店集团大中华区:IHG中国
2016/08/17 全球购物
美国大尺码女装零售商:TORRID
2016/10/01 全球购物
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
索引覆盖(Index Covering)查询含义
2012/02/18 面试题
自动化职业生涯规划书范文
2014/01/03 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
万能检讨书2000字
2014/10/17 职场文书
python模块与C和C++动态库相互调用实现过程示例
2021/11/02 Python