
缓存更新就是把原来的缓存是删掉,保持当前数据和数据库一致。您可以这样 *** 作:把tp中的缓存信息删了就行了,~allinonephp文件 ~rutimephp文件 Runtime/Cache文件夹下的所有文件 Runtime/Data文件夹下的所有文件删除就行了
一般将前台页面搜索结果中,不喜欢的内容(链接),删除掉,因为整个网站的编程框架式thinkphp,运用js中的ajax对页面进行响应,调用后台php接口,实现前台和后台数据库的同时更新
首先我们需要做的就是在前台页面中添加一个文本“删除”,可以这么添加:
代码如下:
<a href="javascript:void(0);" id= "<php>echo $val[id]</php>" class="delete" >删除</a>
上面的html代码的意思:就是给删除添加一个href,这个href是个js函数,类似于超链接的作用,当然对于我这样的新手在刚开始的时候会有疑惑,我们平时的超链接不是这样的,网页中很多的javascript:void(0),那程序怎么知道用户点击删除后,会响应其真正对应的js函数呢?别急,这就是为什么会为删除添加id以及class这样的标签,相信我把js中的代码公布出来以后你就会明白了,代码如下:
jQuery("list adelete")click(function(){
if(confirm("你确定要删除吗?")){
var _this=this;
var id = jQuery(_this)attr("id");
jQueryajax({
url : '/Search/indexphp/Jason/delete',
data : {'id':id},
dataType : 'json',
success : function(data){
var del = datadel;
if(del == 1){//删除成功
jQuery("#"+id)parents("list")remove();
}else{//删除失败
alert("删除失败");
}
}
});
}
});
大家看函数的头部:jQuery("list adelete")click(),jQuery后面的标签是很重要的,这就保证了jquery很准确的响应页面中用户点击的“位置”,添加的事件为click(),在click里添加响应事件的代码:var id = jQuery(_this)attr("id");获取a对应的id,因为这个id是我们删除数据库时用到的链接id,当然这种直接明文的方式不好,在这里只是介绍整个响应过程。调用ajax,实现异步的运行整个过程。我们设置了js接受的是json串,这里的方式应该有很多种吧,我没有去尝试,大家要是有兴趣可以自行尝试一下。/Search/indexphp/Jason/delete这句话就是js去请求php的接口,php接口对用的代码如下:
注意ajax在求php接口时的路径,也就是delete函数必须放在JasonActionclassphp中,此例子是必须这样的:
代码如下:
public function delete(){
if($this->isGet()){
$userId = session("uid");//用户登录
if(!empty($userId)){
$a = M('');
$id = $this->_get('id');
$result=$a->where("id=$id")->delete();//删除
if($result > 0){
$arr = array("del"=>'1');
}else{
$arr = array("del"=>'0');
}
$json_str = json_encode($arr);
echo $json_str;//返回给js
}
}
}
相信大家对上面的代码不会陌生吧,整个过程都是thinkphp框架内部配置完毕的
var del = datadel;这句是接受php代码返回来的json串中del这个key的value,进而在前台进行页面更新和响应
复制代码代码如下:
if(del == 1){//删除成功
jQuery("#"+id)parents("list")remove();//这句话就是后台删除成功后,直接在前台对响应的div进行删除,这样性能就会很快,无需进行后台数据的重新提取至前台页面中,
}else{//删除失败
alert("删除失败");
}
整个响应的过程就是这样,至于效果优化,是优化和细化方面的问题,后来,身边的同事又告诉我前台移除响应链接的另一个动态效果:
即将:
代码如下:
jQuery("#"+id)parents("list")remove();
替换为:
代码如下:
jQuery("#"+id)parents("list")slideUp("slow", function(){
jQuery(this)remove();
});
先找到configphp文件,如图:
然后打开配置文件并在其中配置数据库的信息,如下代码:
<phpreturn array(
//'配置项'=>'配置值'
'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => '127001', // 服务器地址
'DB_NAME' => 'tpshow', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => 'root', // 密码
'DB_PORT' => '3306', // 端口
'DB_PREFIX' => 'tp_' // 数据库表前缀
);
然后在应用的Home的Controller中,如下图的文件
<phpnamespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$db = M("show"); // 实例化show对象
$data = $db->find();//读取一条数据
dump($data);//打印数据
}
}
008 数据库的数据查询
本节课我们来了解一下数据库的数据查询方式,单数据、数据集和其它查询。
一单数据查询
1 Db::table()中table必须指定完整数据表(包括前缀);
2 如果希望只查询一条数据,可以使用find()方法,需指定where条件;
Db::table('tp_user')->where('id', 27)->find()
3 Db::getLastSql()方法,可以得到最近一条SQL查询的原生语句;
SELECT FROM `tp_user` LIMIT 1
4 没有查询到任何值,则返回null;
5 使用findOrFail()方法同样可以查询一条数据,在没有数据时抛出一个异常;
Db::table('tp_user')->where('id', 1)->findOrFail()
6 使用findOrEmpty()方法也可以查询一条数据,但在没有数据时返回一个空数组;
7 Db::table('tp_user')->where('id', 1)->findOrEmpty();
二数据集查询
1 想要获取多列数据,可以使用select()方法;
Db::table('tp_user')->select(); SELECT FROM `tp_user`
2 多列数据在查询不到任何数据时返回空数组,使用selectOrFail()抛出异常; Db::table('tp_user')->where('id', 1)->selectOrFail();
3 在select()方法后再使用toArray()方法,可以将数据集对象转化为数组;
4 当在数据库配置文件中设置了前缀,那么我们可以使用name()方法忽略前缀; Db::name('user')->select();
三其它查询
1 通过value()方法,可以查询指定字段的值(单个),没有数据返回null;
Db::name('user')->where('id', 27)->value('username');
$user = Db::table('tp_user')->select()->toArray(); dump($user);
2 通过colunm()方法,可以查询指定列的值(多个),没有数据返回空数组; Db::name('user')->column('username');
3 可以指定id作为列值的索引;
4 如果处理的数据量巨大,成百上千那种,一次性读取有可能会导致内存开销过大;
5 为了避免内存处理太多数据出错,可以使用chunk()方法分批处理数据;
6 比如,每次只处理100条,处理完毕后,再读取100条继续处理;
7 可以利用游标查询功能,可以大幅度减少海量数据的内存开销,它利用了PHP生成器特性。每次查询只读一行,然后再读取时,自动定位到下一行继续读取;
Db::name('user')->column('username', 'id');
Db::table('tp_user')->chunk(3, function($users) { foreach ($users as $user) {
dump($user);
}
echo 1; });
$cursor = Db::table('tp_user')->cursor(); foreach($cursor as $user){
dump($user);
}
可用一个变量接收更新的返回值
$save_num=$User->where('id=5')->save($data);
然后再对$save_num的值进行判断
以上就是关于我们用thinkphp框架做项目,其中有一项要求点击‘缓存更新’按钮后,更新缓存信息。请问我应该怎么做呢全部的内容,包括:我们用thinkphp框架做项目,其中有一项要求点击‘缓存更新’按钮后,更新缓存信息。请问我应该怎么做呢、thinkphp怎样获取ajax请求数据、php框架thinkphp3.2怎么读取数据库内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)