图书馆占座系统(四)

———-第一次修改(2018.8.4 15:35)

emmmm,现在已经能够从html页面和php页面进行数据传输,
现在要解决的是前端的页面根据数据库信息进行变化

我先用赋值的方式(大佬教我的方法)让函数获得每一个座位的属性,结果发现不能链接php文件(或许可以,但是我不知道,哭)
因为代码被删除,就不贴过来了

后来我用了click的this方法,获取了点击的对象。
代码如下:

$(function()//建立一个函数
 {
$(".img").click(function(){

//创造一个对于class为img的对象的一个点击函数
var seat_num = $ (this).attr("name");//获取当前点击对象的name

这样,就可以获得点击的对象的name值,然后我把name值通过ajax异步传输传给了php文件,由php写给数据库,表明所占的位置的位置号,
再通过php返回是否写入数据库来进行下一步的操作

当成功写入数据时,php返回一个flag值,来让js执行下一步的操作

代码如下:

<?php
header("content-type:text/html;charset=utf-8"); 



$seat=$_GET['seat_num'];
//$flag=$_GET['flag'];

//var_dump($_GET);

//修改前连接数据库
$link = mysql_connect('localhost' , 'root','1528303964');
if(!$link){
    exit('数据库连接失败');
}
mysql_set_charset('utf8');//设置字符就
mysql_select_db('ceshi');

//确认座位//
$sql = "update ceshi.ceshi1 set seat='$seat' where Id=1";


$obj = mysql_query($sql);
if ($obj)//判断是否执行sql语句
{
    echo 1;
    $sql = "update ceshi.ceshi1 set flag1=1 where Id=1";//座位标号1
    $obj = mysql_query($sql);

}else
{
    echo 0;
    $sql = "update ceshi.ceshi1 set flag1=0 where Id=1";//座位标号0
    $obj = mysql_query($sql);
}
mysql_close($link);
?>

这段php的意思是先获得传入的数据即座位号,再学到数据库的seat下,
如果写入成功。则返回flag=1,并把flag值写到数据库,如果座位号写入失败,则返回0,同样也把此flag值写到数据库中。

然后,js就根据返回的flag是1还是0来进行操作,

代码如下:


                xmlhttp.onreadystatechange=function(){//onreadystatechange此函数意思为当服务器响应
                                                //已经做好被处理的准备是做出的响应
                        if (xmlhttp.readyState==4 && xmlhttp.status==200){//readystate的值为4或status为200时代表服务器可以与之通信


                                var flag1 = xmlhttp.responseText;

                                alert(flag1);

                                if(flag1){
                                    element=document.getElementsByName(seat_num);

                                        if(element[0].src.match("no")){

                                            alert('此座位未占');

                                            if(confirm('此座位未占,是否需要占座?')){

                                            element[0].src="yes.png";

                                            var flag_2=1;

第一步,先获取从php文件传回来的flag值,用if进行判断,若为1,
则执行占座代码,若为0。则提示占座失败。这样就完成了占座的过程,
然后后面要进行的是取消占座的过程,之前我一直在上面这段函里面执行代码,设置另一个flag_2;和座位号一起传到php文件中,确始终报错,找了一上午的bug一直没找出来,后来终于发现了当传输数据的语句发生作用是,flag_2根本就没有定义,因为我的flag_2是在获得座位号后的函数里面定义的,所以就根本无法传输、
所以我又内嵌了一个函数,代码如下:

function cheak(flagg){


            if (window.XMLHttpRequest){
                                                    // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
                    xmlhttp=new XMLHttpRequest();
                    }   
                    else {
                                                    // IE6, IE5 浏览器执行代码
                            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                         }

                            xmlhttp.onreadystatechange=function(){//onreadystatechange此函数意思为当服务器响应
                                                //已经做好被处理的准备是做出的响应
                        if (xmlhttp.readyState==4 && xmlhttp.status==200){//readystate的值为4或status为200时代表服务器可以与之通信


                                var flag_2;


                            if(flagg==1){
                                flagg=xmlhttp.responseText;
                                    if(flagg==0)
                                        {
                                            element[0].src="no.png";
                                            alert("取消成功");
                                        }
                                    else{
                                        alert("flag_2不等于0;取消占座失败")
                                    }
                                }
                            else{
                                alert("传输数据错误。取消占座失败")
                            }

                                            }
                                         }




                    xmlhttp.open("GET","一楼1.php?flag="+flagg,true);
                    xmlhttp.send();//请求方式为post才有用

        }

这段代码由以下代码调用

else if(element[0].src.match('yes')){

                                            if(confirm('此座位已被占,是否取消占座?(点击确定取消占座)')){


                                                cheak(flag1);

这段代码的意思是
当被点击的座位是被占着的,弹出一个窗口,点击确定返回1,点击取消返回0;
当确定取消占座后,执行下一个函数即上上个代码块
那个代码块的意思是,从调用函数的代码那获得当前flag值,
如果flag=1,则把这个flag值传入php文,如果不为1,则弹出取消占座失败的窗口、

此php文件代码如下

<?php
header("content-type:text/html;charset=utf-8"); 




$flag1=$_GET['flag'];

//var_dump($_GET);

//修改前连接数据库
$link = mysql_connect('localhost' , 'root','1528303964');
if(!$link){
    exit('数据库连接失败');
}
mysql_set_charset('utf8');//设置字符就
mysql_select_db('ceshi');

//确认座位//
$sql = "update ceshi.ceshi1 set flag1=0 where Id=1";



$obj = mysql_query($sql);





if ($obj)//判断是否执行sql语句
{
    echo 0;


}else
{
    echo 1;

}
mysql_close($link);
?>

这段代码的意思是先获取flag值,由于js中已经判定,所以此flag值一定等于1,所以通过sql语句把flag值更改为0;
当确定更改成功后。php文件返回flag=0的值
当php返回值后,js中的flagg就等于0;判断是否等于0来执行UI上的取消占座操作,否则弹出在取消占座失败

(注。。。。。此函数代码和php代码在编写过程中一次性通过,没有bug!!宛如天人!)

这就实现了占座和取消占座与数据库相关联的操作

发布了29 篇原创文章 · 获赞 33 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42568510/article/details/81412126