效果状态:通过点击锁定状态实现状态锁定与不锁定之间的切换

1.主程序:01.php导入smarty和mysql类,取得数据导入列表模板

<?php
    include './include/Mysql.class.php';
    include './libs/Smarty.class.php';
    $db=new Mysql;
    $smarty=new Smarty;
    $lists=$db->getALL('users');
    $smarty->assign('lists',$lists);
    $smarty->display('list.html');
?>

2.列表模板采用smarty遍历模板数据并显示,其中调用ajax改变锁定状态

<!DOCTYPE html>
<html>
<head>
    <meta charset=utf-8>
    <title>用户权限展示表</title>
</head>
<body>
        <table align="center" border="1" width="500">
            <center><h2>用户权限表</h2></center>
            <tr>
                <th>uid</th><th>用户名</th><th>密码</th><th>锁定状态</th><th>角色</th>
            </tr>    
            {foreach $lists as $list}
                <tr align="center">
                    <td>{$list.uid}</td>
                    <td>{$list.username}</td>
                    <td>{$list.password}</td>
                    {if $list.is_lock==1}
                        <td><a href="javascript:lock(0,{$list.uid});">锁定</a></td>
                        {else}
                        <td><a href="javascript:lock(1,{$list.uid})";>取消锁定</a></td>    
                    {/if}        
                    {if $list.role==1}
                            <td>管理员</td>
                    {else}
                            <td>编辑者</td>        
                    {/if}
                </tr>        
            {/foreach}    
        </table>    
</body>
        <script type="text/javascript">
            function lock(lock,uid){
                    //创建ajax对象
                    var xhr=new XMLHttpRequest();

//打开一个链接
                    xhr.open('get','02.php?is_lock='+lock+"&uid="+uid);
                    //发送ajax请求
                    xhr.send(null);
                    //设置回调、监听函数
                    xhr.onreadystatechange=function(){
                        //如果ajax状态码响应正常且网络正常,获取响应文本
                        if(xhr.readyState==4&&xhr.status==200){
                            if(xhr.responseText){
                                window.location.reload();
                            }else{
                                alert("切换状态失败!");
                            }

}
                    }
                }
        </script>
</html>

3.ajax响应脚本,接收ajax通过get方式传递过来的数据更改数据库内容并响应文本传回js脚本

<?php
    include './include/Mysql.class.php';
    $lock=$_GET['is_lock'];
    $uid=$_GET['uid'];

$db=new Mysql;
    $result=$db->update('users',"is_lock=$lock","uid=$uid");
    if($result){
        echo true;
    }else{
        echo false;
    }
?>

ajax结合mysql数据库和smarty实现局部数据状态的刷新的更多相关文章

  1. PHP、jQuery、AJAX和MySQL 数据库实例

    index.html页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  2. 利用PHP实现登录与注册功能以及使用PHP读取mysql数据库——以表格形式显示数据

    登录界面 <body><form action="login1.php" method="post"><div>用户名:&l ...

  3. 如何用 ajax 连接mysql数据库,并且获取从中返回的数据。ajax获取从mysql返回的数据。responseXML分别输出不同数据的方法。

    开讲前,先说下网上,大部分的关于这方面的博文或者其他什么的,就我自己的感觉,第一说得不详细,第二语言不能很好的被初学者了解. 我这篇博文的标题之所以用了三句,是为了方便其他人好查找: 这里介绍的方法有 ...

  4. 也说php从mysql数据库通过服务器端json返回数据出现乱码问题

    我最近需要用js和json与mysql数据库做一个两级联动的下拉菜单,发现当从数据库中返回的是中文时客户端会出现乱码问题,经过在百度上查找终于找到了解决办法如下: while($row=$MySqlc ...

  5. MySQL数据库导入或者同步大量数据时数据丢失解决方案

    相信大家都经常遇到这样的情况,我们在编码的过程中经常需要在调试代码的时候切换到本地的数据库上做修改调试,如果当测试数据库的数据在几十万或者上百万数据的时候,我们无论是通过恢复备份/导入SQL的方式来把 ...

  6. 通过java代码往mysql数据库中写入日期相关数据少13个小时

    通过show variables like '%time_zone%'; 查看时区: CST 时区 名为 CST 的时区是一个很混乱的时区,有四种含义: 美国中部时间 Central Standard ...

  7. Delphi7连接MySql数据库-DBGrid控件显示数据

    一个简单的Delphi7小程序,使用MySql数据库做简单查询,用DBGrid控件显示结果,实现过程如下: (1)在MySql中新建demouser表,插入记录用于测试. (2)在Delphi7中新建 ...

  8. mysql数据库通过二进制 -【恢复数据记录】

    1.修改配置文件 vi /etc/my.cnf log-bin = binlog systemctl restart mysqld mysql -uroot -p123456 mysql> sh ...

  9. 使用JDBC在MySQL数据库中快速批量插入数据

    使用JDBC连接MySQL数据库进行数据插入的时候,特别是大批量数据连续插入(10W+),如何提高效率呢? 在JDBC编程接口中Statement 有两个方法特别值得注意: void addBatch ...

随机推荐

  1. eclipse开发scrapy爬虫工程,附爬虫临门级教程

    写在前面 自学爬虫入门之后感觉应该将自己的学习过程整理一下,也为了留个纪念吧. scrapy环境的配置还请自行百度,其实也不难(仅针对windows系统,centos配置了两天,直到现在都没整明白) ...

  2. python基础应用---列表应用

    列表:列表用[]来表示 names = ['wang', 'yuan', 'yang', 'china', 'french', 'wang'] #列表增加 names.append('zhang') ...

  3. jade-if-else-unless-case

    if else - var lession = ['node','jade'] if lession if lession.length > 2 p 1 #{lession.join(', ') ...

  4. Codeforces 567C - Geometric Progression - [map维护]

    题目链接:https://codeforces.com/problemset/problem/567/C 题意: 给出长度为 $n$ 的序列 $a[1:n]$,给出公比 $k$,要求你个给出该序列中, ...

  5. Java字节码方法表与属性表深度剖析

    方法表: 在上一次咱们已经分析到了字段信息了,如下: 紧接着就是方法相关的信息了: 而它展开之后的结构为: 所以往后数2个字节,看一下方法的总数: 3个方法,可咱们只定义了两个方法呀: 因为编译器会为 ...

  6. 数组方法push() pop() shift() unshift() splice() sort() reverse() contact()浅拷贝 slice()原数组拷贝

    push() pop() shift() unshift() splice() sort() reverse() 参考资料:https://wangdoc.com/javascript/stdlib/ ...

  7. [2019HDU多校第一场][HDU 6584][G. Meteor]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6584 题目大意:求所有满足\(0<\frac{p}{q}\leq1, gcd(p,q)=1,p\ ...

  8. C#中一些常用的方法使用

    一.string.Empty string.Empty就相当于 "" ,一般用于字符串的初始化 , 比如: string a; Console.WriteLine(a);//这里会 ...

  9. [AH2017/HNOI2017]抛硬币(扩展lucas)

    推式子+exlucas. 题意: 小 A 和小 B 是一对好朋友,两个人同时抛 b 次硬币,如果小 A 的正面朝上的次数大于小 B 正面朝上的次数,则小 A 获胜. 小 A 决定在小 B 没注意的时候 ...

  10. Codeforces Round #599 (Div. 2) A,B1,B2,C 【待补 D】

    排序+暴力 #include<bits/stdc++.h> using namespace std; #define int long long #define N 1005000 int ...