PHP+Mysql+jQuery实现发布微博程序(PHP篇)
在PHP+Mysql+jQuery实现发布微博程序(jQuery篇) 中,我讲解了如何用jQuery实现输入表单的实时字数统计和Ajax提交数据到后台的功能。本文将重要介绍后台是如何处理前台提交的数据,并返回结果的。
先还是要说明本例的流程:
1、前端用户输入内容,并对输入的内容字数进行实时统计。
2、用户提交数据,jQuery实现通过Ajax向后台发送数据。
3、后台PHP接收提交表单的数据,并对数据进行必要的安全过滤。
4、后台PHP连接Mysql数据库,并将提交过来的表单数据写入到相应的数据表中。
5、后台向返回成功结果数据内容,并通过Ajax将返回的数据内容插入到前端页面中。
上述1、2步在前篇文章: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="data: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>
至此,本例从前端交互到后台处理程序,全部完成,有兴趣的同学最好亲自动手,才能从中学到乐趣。
本文原地址:http://www.daimajiayuan.com/sitejs-17820-1.html
转载于:https://www.cnblogs.com/sitejs/p/3459931.html
PHP+Mysql+jQuery实现发布微博程序(PHP篇)相关推荐
- php表单数据提交到本业,PHP_PHP+Mysql+jQuery实现发布微博程序 php篇,先还是要说明本例的业务流程 - phpStudy...
PHP+Mysql+jQuery实现发布微博程序 php篇 先还是要说明本例的业务流程: 1.前端用户输入内容,并对输入的内容字数进行实时统计. 2.用户提交数据,jQuery实现通过Ajax向后台发 ...
- PHP+Mysql+jQuery实现发布微博程序--PHP篇
在上一篇文章中,我讲解了如何用jQuery实现输入表单的实时字数统计和Ajax提交数据到后台的功能.本文将重要介绍后台是如何处理前台提交的数据,并返回结果的. 查看演示 先还是要说明本例的业务流程: ...
- php mysql 开发微博_3款php+mysql国产微博程序推荐
PageCookery Microblog v0.8.1 PageCookery Microblog是一款基于php/mysql的单用户微博客程序(国产),功能强大,界面简洁,特别是集成了音乐墙.照片 ...
- jQuery实现模拟微博发布框
jQuery实现模拟微博发布框 刚开始界面 1.输入内容,点击发布按钮,添加到下面. 2.输入内容,按下回车键,同样可以添加内容 3.点击删除,删除该条信息. 效果展示 所有代码 <!DOCTY ...
- php mysql redis mq_PHP基于Redis消息队列实现发布微博的方法
本文实例讲述了PHP基于Redis消息队列实现发布微博的方法.分享给大家供大家参考,具体如下: phpRedisAdmin :github地址 图形化管理界面 git clone [url]http ...
- Redis消息队列发布微博
一些基于用户创造内容的应用中(SNS,微博),很容易出现一秒钟上万个用户同时发布消息的情况.这个时候,很容易出现MySQL的"too many connections"的情况,增大 ...
- Redis应用——使用消息队列发布微博
在一些用户创造内容的应用中(如:SNS.微博),可能出现1秒有上万个用户同时发布消息的情况,此时如果只只用MySQL数据库,很可能出现"too many connections"的 ...
- 微博源码/微博程序代码
以Twitter为代表的微博客是今年非常火的社交网络,在国内的发展也在上半年一度非常迅猛,虽然现在大多数微博客都因为种种原因无法访问,但这并没有降低人们对微博客的热情,实际上,自己动手搭建一个类似Tw ...
- 【JQUBAR1.1】jQuery 插件发布
[JQUBAR1.1]jQuery 插件发布 JQUBAR1.1 简介 2010-11-22在博客园发布了柱状图JQUBar1.0 jQuery 插件.现将该插件升级为1.1版本. 1.1版本修复了部 ...
- mysql1.8找回密码_PHP+Mysql+jQuery找回密码
通常所说的密码找回功能不是真的能把忘记的密码找回,因为我们的密码是加密保存的,一般开发者会在验证用户信息后通过程序生成一个新密码或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密 ...
最新文章
- mysql killed进程不结束_php和mysql连接方式(短 长 池)
- 女儿情:对于一段音乐进行频率频谱分析
- Confluence 6 启用远程 API
- 输变电设备物联网节点设备无线组网协议_U-Link 物联网(工业互联网)服务平台
- 蓝桥杯 基础练习 2n皇后
- fatal error LNK1103: debugging information corrupt; recompile module
- ibatis(2)ibatis是什么
- python中缩进在程序中_python代码缩进
- 买了一块烂砖头(《ADO.NET技术内幕》)- 以及今天看砖头的一些感想(技术感想)...
- 这位勇士,你别去读博了:搞机器学习要PhD何用?
- 学生免费获取PyCharm专业版
- 2014年奇虎360研发类笔试题 乔布简历
- vue-router升级3.0.0以上版本导致Uncaught(in promise) navigation guard报错问题
- python人民币美元汇率双向兑换计算
- linux查看pcie网卡命令,kudzu命令查看及设置网卡等硬件信息
- php ziparchive 损坏,通过ZipArchive php获取损坏或空拉链
- Hanselminutes播客55-MonoRail作为替代ASP.NET
- 第一只python小爬虫
- 沟通修炼 I型沟通-U型沟通
- 信息安全技术 工业控制系统安全控制应用指南