本次实例我们结合session、ajax、json前后台数据处理、分页技术做一个租房信息系统

一共有五个界面:包括

管理员和用户的登录界面

登录界面的后台

<?php
session_start();
$uid=$_POST["uid"];
$pwd=$_POST["pwd"];
$db = new MySQLi("localhost","root","","z_0705");
!mysqli_connect_error() or die("数据库连接错误");
$db->query("set names utf8");//设置编码格式
$sql = "select * from user_admin";
$res = $db->query($sql);//执行语句
$arr = $res->fetch_all();//返回结果集
//var_dump($arr);
//登陆成功判断
//遍历结果集 根据前台传过来的信息进行判断
$tag=0;
$user="";
$uname="";
foreach ($arr as $k1=>$v1){
if($uid==$v1[0]&&$pwd==$v1[1]){//如果用户名和密码都与后台数据库对应
$tag=1;//tag的值为1
$user=$uid;
$uname=$v1[2];
$_SESSION["uname"]=$uname;//获取登陆者姓名
break;
} }
//登录成功判断
if ($tag==1){//如果tag值为1,则表示登录成功
if($user=="1001"){
echo $uname.'登录成功';//提示登录成功
header('Refresh: 1;url=../html/admin-index.html');
//在1秒后并将登录者的id信息以get的方式传送并跳转到主页
}
else{
echo $uname.'登录成功';//提示登录成功
header('Refresh: 1;url=../html/index.html');
//在1秒后并将登录者的id信息以get的方式传送并跳转到主页
}
}
if ($tag==0){
echo $uname.'登录失败';
header('Refresh: 1;url=../html/login.html');
}

管理员信息管理页面

管理员信息管理js代码

// JavaScript Document
$(function(){//页面加载完成
ajaxFun();//调用ajax方法获取后台数据 })
/*连接后台数据库获取数据*/
function ajaxFun(){
$.ajax({
url:"../dell/admin-index.php",//连接后台的地址
type:"post",//定义数据的传输方式
data:{type:"getData"},//向后台发送的数据
success:function(data){//连接成功后接收后台的数据
var arr=eval(data);
//console.log(arr);
addHtml(arr);
}
});
} function addHtml(arr){//向网页内部添加内容的方法
var str=``;
for(var i in arr){
str+=`<tr>
<td>
<button data="`+arr[i][0]+`" class="layui-btn layui-btn-normal" onClick="change(this)">修改</button><button data="`+arr[i][0]+`" class="layui-btn layui-btn-danger" onClick="del(this)">删除<button>
</td>
<td>`+arr[i][1]+`</td>
<td>`+arr[i][2]+`</td>
<td>`+arr[i][3]+`</td>
<td>`+arr[i][4]+`</td>
<td>`+arr[i][5]+`</td>
<td>`+arr[i][6]+`</td>
</tr>`;
//console.log(arr[i][1]);
}
$("#tab").append(str);
} /*点击删除事件*/
function del(obj){
var id=$(obj).attr("data");
//console.log(id);
$.ajax({
url:"../dell/admin-index.php",//连接后台的地址
data:{id:id,type:"del"},//向后台发送的数据
success:function(data){//连接成功后接收后台的数据
$(obj.parentElement).parent().remove();
} });
}
/*点击修改事件*/
function change(obj){
var id=$(obj).attr("data");
$.ajax({
url:"../dell/admin-alter.php",//连接后台的地址
type:"post",//定义数据的传输方式
data:{id:id,type:"save"},//向后台发送的数据
success:function(data){//连接成功后接收后台的数据
location.href="admin-alter.html";
} });
} /*点击添加事件*/
function add(){
location.href="admin-update.html";
}

PHP后台代码:

<?php
$db = new MySQLi("localhost","root","","z_0705");
!mysqli_connect_error() or die("数据库连接错误");
$db->query("set names utf8");//设置编码格式
$type=$_REQUEST["type"];
switch($type){
case'getData':
$sql = "select * from house";
$res = $db->query($sql);//执行语句
$arr = $res->fetch_all();//返回结果集
echo json_encode($arr);//输出整理好的结果集
break;
case'del':
$id=$_REQUEST["id"];
$sql = "delete from house where id={$id}";
$res = $db->query($sql);//执行语句
break;
case'insert':
$KeyWord=$_REQUEST["KeyWord"];
$Area=$_REQUEST["Area"];
$SquareMeter=$_REQUEST["SquareMeter"];
$Rent=$_REQUEST["Rent"];
$RentType=$_REQUEST["RentType"];
$HouseType=$_REQUEST["HouseType"];
$str1="keyword,area,squaremeter,rent,renttype,housetype";
$str2="'$KeyWord','$Area','$SquareMeter','$Rent','$RentType','$HouseType'";
$sql = "insert into house ($str1) values($str2)";
//echo $sql;
$res = $db->query($sql);//执行语句
header("location:../html/admin-index.html");
break; }

管理员信息添加页面

管理员信息修改页面

// JavaScript Document
$(function(){
ajaxFun();
}) function ajaxFun(){
$.ajax({
url:"../dell/admin-alter.php",//连接后台的地址
type:"post",//定义数据的传输方式
data:{type:'select'},//向后台发送的数据
success:function(data){//连接成功后接收后台的数据
var arr= eval(data);
//console.log(arr);
addHtml(arr);
}
});
} function addHtml(arr){
//console.log(arr);
/*var KeyWord=document.getElementById("KeyWord");
console.log(KeyWord);
KeyWord.value=arr[1];*/
$("#id").val(arr[0]);
$("#KeyWord").val(arr[1]);
$("#Area").val(arr[2]);
$("#SquareMeter").val(arr[3]);
$("#Rent").val(arr[4]);
$("#RentType").val(arr[5]);
$("#HouseType").val(arr[6]);
}
<?php
session_start();
$db = new MySQLi("localhost","root","","z_0705");
!mysqli_connect_error() or die("数据库连接错误");
$db->query("set names utf8");//设置编码格式
$type=$_REQUEST["type"];
switch($type){
case'save':
if(!empty($_POST)&&$type=='save'){
$id=$_REQUEST['id'];
$_SESSION["id"]=$id;
}
break;
case'select':
$id=$_SESSION["id"];
$sql = "select * from house where id={$id}";
//echo $sql;
$res = $db->query($sql);//执行语句
$arr = $res->fetch_row();//返回结果集
echo json_encode($arr);
break;
case'insert':
$id=$_REQUEST["id"];
$KeyWord=$_REQUEST["KeyWord"];
$Area=$_REQUEST["Area"];
$SquareMeter=$_REQUEST["SquareMeter"];
$Rent=$_REQUEST["Rent"];
$RentType=$_REQUEST["RentType"];
$HouseType=$_REQUEST["HouseType"];
$str1="keyword='$KeyWord',area='$Area',squaremeter='$SquareMeter',rent='$Rent',renttype='$RentType',housetype='$HouseType'";
$sql = "update house set $str1 where id={$id}";
$db->query($sql);
/* echo $sql;
die;*/
header("location:../html/admin-index.html");
break;
}

用户查询界面

// JavaScript Document

/*定义全局变量*/
var area,zl,fw,kw;
$(function(){//页面加载完成 ajaxFun();//调用ajax方法获取后台数据(页面的选项,房屋信息内容) }) /*全选的方法*/
//参数:全选的input对象
function selArea(obj){//本页面全选按钮的点击事件
var info=$(obj).attr('class');//1.获取全选的class属性值(共有area 租赁类型 房屋类型)
//alert(info);
//找区域的选项
var selected=obj.checked;//2.获取选中按钮的选中状态(若是选中:true 否则:false)
//alert(selected);
$('input[data="'+info+'"]').each(function(i){//3.找到所有data属性值和 1 找到的值相同的 input
/*之后遍历同步该组全选按钮下的多选按钮选择状态*/
this.checked=selected;
})
} /*点击搜索按钮调用的方法*/
function seach(){
//获取选项值 area="";zl="";fw="";kw="";//定义字符串变量存放要传到后台的值(区域,租赁类型,房屋类型,关键字)
/*为变量赋值*/
//方法一
/*$("input[data='area']").each(function(){
if(this.checked){//如果是选中状态则将该选项的内容存入相应的变量里
area+=$(this).val()+",";
}
})
area=area.substring(0,area.length-1);
alert(area);
}*/
//方法二
$("input").each(function(){//找到所有的input标签然后遍历
var data=$(this).attr("data"),//获取每个input标签的data属性的内容
info=$(this).val();//获取每个选项的内容
if(this.checked && data=="area"){//如果多选框的选中状态是被选中的并且 data的值是area 那么
area+=info+"','";//将其值用"','"拼接存放到事先定义的字符串中
}
if(this.checked && data=="zl"){//如果多选框的选中状态是被选中的并且 data的值是zl 那么
zl+=info+"','";//将其值用"','"拼接存放到事先定义的字符串中
}
if(this.checked && data=="fw"){//如果多选框的选中状态是被选中的并且 data的值是zl 那么
fw+=info+"','";//将其值用"','"拼接存放到事先定义的字符串中
}
})
//由于一开始用"','"来拼接字符串,为了使发送到后台的数据更加实用使sql语句更易编写
//所以以下操作现在要去除字符串的最后的拼接符号
area=area.substring(0,area.length-3);
zl=zl.substring(0,zl.length-3);
fw=fw.substring(0,fw.length-3);
kwd=$('#keyword').val();//获取搜索关键字的值 $.ajax({//定义阿贾克斯的方法向后台发送数据(字符串拼接而成的查询条件)
url:"../dell/index.php",//连接后台的地址
type:"post",//定义数据的传输方式
data:{
kwd:kwd,
type:'select',//发送类型为查找
area:area,
zl:zl,
fw:fw
},//向后台发送的数据
dataType:"json",//传送的方式为json格式
success:function(data){//连接成功后接收后台的数据
//var arr=eval(data);
//console.log(data);
//接收后台的数据
addHtml(data);//调用添加数据的方法
} });
} /*ajax方法请求数据*/
function ajaxFun(){
$.ajax({
url:"../dell/index.php",//连接后台的地址
type:"post",//定义数据的传输方式
data:{type:'getData'},//向后台发送的数据
success:function(data){//连接成功后接收后台的数据
var arr=eval(data);
//console.log(arr);
addHtml(arr[0]);
addSel(arr[1],arr[2],arr[3]);
//console.log(arr[1]);
//console.log(arr[2]);
//console.log(arr[3]);
}
});
}
/*向网页添加内容的方法*/
function addHtml(arr){
var str=`<tr>
<th><b>关键字</b></th>
<th><b>区域</b></th>
<th><b>建筑面积/m<sup>2</sup></b></th>
<th><b>租金/RMB</b></th>
<th><b>租赁类型</b></th>
<th><b>房屋类型</b></th>
</tr>
`;
for(var i in arr){
str+=`<tr>
<td>`+arr[i][1]+`</td>
<td>`+arr[i][2]+`</td>
<td>`+arr[i][3]+`</td>
<td>`+arr[i][4]+`</td>
<td>`+arr[i][5]+`</td>
<td>`+arr[i][6]+`</td>
</tr>`;
//console.log(arr[i][1]);
}
$("#tab").html(str);
}
/*添加选项的方法*/
function addSel(area,zl,fw){
var str1=``,
str2=``,
str3=``;
for(var i in area){
str1+=`<label><input type="checkbox" data="area" value="`+area[i]+`">`+area[i]+`</label>`;
}
$("#change1").append(str1);
str1=``;
for(var j in zl){
str2+=`<label><input type="checkbox" data="zl" value="`+zl[j]+`">`+zl[j]+`</label>`;
}
$("#change2").append(str2);
str2=``;
for(var k in fw){
str3+=`<label><input type="checkbox" data="fw" value="`+fw[k]+`">`+fw[k]+`</label>`;
}
$("#change3").append(str3);
str3=``; }
/*点击页码跳页的方法*/
function getData(pnum){
$.ajax({
url:"../dell/index.php",//连接后台的地址
type:"post",//定义数据的传输方式
data:{pageNum:pnum,type:'getData'},//向后台发送的数据
dataType:'json',
success:function(data){//连接成功后接收后台的数据
addHtml(data[0]);
//console.log(data[0]);
} }); }
<?php
$db = new MySQLi("localhost","root","","z_0705");
!mysqli_connect_error() or die("数据库连接错误");
$db->query("set names utf8");//设置编码格式 $type=$_REQUEST["type"];
$page = 2;
$pageNum = 1;
if($_POST['pageNum']!=""){
$pageNum =$_POST['pageNum'];
} switch($type){
case'getData':
$sql1 = "select * from house";
$res1 = $db->query($sql1);//执行语句
$arr1 = $res1->fetch_all();//返回结果集
/*定义三个变量存数据*/
$area=array();
$zl=array();
$fw=array();
foreach($arr1 as $v){
if(!in_array($v[2],$area)){
$area[]=$v[2];
}
if(!in_array($v[5],$zl)){
$zl[]=$v[5];
}
if(!in_array($v[6],$fw)){
$fw[]=$v[6];
}
}
//分页
$count =count($arr1);//数据总量
$num =round($count/$page);//页数
$start = ($pageNum-1)*$page;
$sql2 = "select * from house limit $start,$page";
$res2 = $db->query($sql2);//执行语句
$arr2 = $res2->fetch_all();//返回结果集
echo json_encode(array($arr2,$area,$zl,$fw));
break; case'select'://如果前台发送来的type是select
//定义变量接收数据
$kwd=$_POST['kwd'];
$area=$_POST["area"];
$zl=$_POST["zl"];
$fw=$_POST["fw"];
$term=" where 1=1 ";//查询语句编辑 之所以写where 1=1是因为防止第一个接收的值为空sql语句无法继续执行
if($area != ""){//如果传来的值非空
$term .=" and area in ('{$area}') ";//则组织sql语句
}
if($zl != ""){//如果传来的值非空
$term .=" and renttype in ('{$zl}') ";
}
if($fw != ""){//如果传来的值非空
$term .=" and housetype in ('{$fw}') ";
}
if($kwd != ""){//如果传来的值非空
$term .=" and keyword like '%{$kwd}%'";
}
$sql = "select * from house ".$term;
$res = $db->query($sql);//执行语句
$arr = $res->fetch_all();//返回结果集
echo json_encode($arr);//向前台发送json格式的数据
break;
}

简单租房子实例详解---(session、ajax、json前后台数据处理、分页)的更多相关文章

  1. maven pom文件简单模板和配置详解

    https://blog.csdn.net/earbao/article/details/49924943 maven pom文件简单模板和配置详解

  2. Python做简单的字符串匹配详解

    Python做简单的字符串匹配详解 由于需要在半结构化的文本数据中提取一些特定格式的字段.数据辅助挖掘分析工作,以往都是使用Matlab工具进行结构化数据处理的建模,matlab擅长矩阵处理.结构化数 ...

  3. 基于Jquery+Ajax+Json+存储过程 高效分页

    在做后台开发中,都会有大量的列表展示,下面给大家给大家分享一套基于Jquery+Ajax+Json+存储过程高效分页列表,只需要传递几个参数即可.当然代码也有改进的地方,如果大家有更好的方法,愿留下宝 ...

  4. Nginx 反向代理、负载均衡、页面缓存、URL重写、读写分离及简单双机热备详解

    大纲 一.前言 二.环境准备 三.安装与配置Nginx  (windows下nginx安装.配置与使用) 四.Nginx之反向代理 五.Nginx之负载均衡  (负载均衡算法:nginx负载算法 up ...

  5. Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(函登录验证)

    上一篇 Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页  了解了LigerUI 中Grid的基本用法  现在结合上一篇的内容做一个简单的后台管理,当然也有前台的页面 ...

  6. java-单例详解

    java单例模式(Singleton)以及实现 一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. ...

  7. UML简单介绍—类图详解

    类图详解 阅读本文前请先阅读:UML简单介绍—类图这么看就懂了 1.泛化关系 一个动物类: /** * 动物类 */ public class Animal { public String name; ...

  8. 简单搭建SpringMVC框架详解

    在公司待了两年,用的一直是Spring+SpringMVC+Hibernate框架,都是公司自己搭建好的,自己从来没有主动搭建过,闲来无聊,自己搭建试试.一下即我搭建的过程以及搭建所遇到的问题,有部分 ...

  9. python关于Django搭建简单博客项目 详解二-setting.py

    这一篇我们来讲解setting.py,具体内容以注释形式写入到下面的setting.py代码中,篇幅所限已把官方所给英文注释删除. 全部源代码和详解请参看http://github.com/Cheng ...

随机推荐

  1. iscroll中文文档

    转自:http://blog.csdn.net/sweetsuzyhyf/article/details/44195549 IScroll.js 最新版本 v5.1.2 修复了输入框无法输入和横向滚动 ...

  2. flowable EngineConfiguration的作用和继承关系(1)

    EngineConfiguration 是flowable引擎的核心部件. 在 flowable 中,实现引擎配置的顶层类是 AbstractEngineConfiguration 这是一个抽象类. ...

  3. Android 仿微信朋友圈查看

    项目要做一个类似于这样的功能,就做了. 项目下载地址:http://download.csdn.net/detail/u014608640/9917626 一,看下效果: 二.activity类 pu ...

  4. Android 框架学习2:源码分析 EventBus 3.0 如何实现事件总线

    Go beyond yourself rather than beyond others. 上篇文章 深入理解 EventBus 3.0 之使用篇 我们了解了 EventBus 的特性以及如何使用,这 ...

  5. [Python] print中的左右对齐问题

    一.数值类型(int.float) #  %d.%f是占位符>>> a = 3.1415926>>> print("%d"%a)    #%d只 ...

  6. java程序编写需注意的问题

    初学java,免不了很多注意事项 加分号 类名与文件名一致 javac fileName而非javac fileName.class ```java System.out.println(" ...

  7. [Linux]Ubuntu中的System Setting

    问题 使用Ubuntu的过程中,安装搜狗输入法,卸载了系统自带的ibus.输入法搞定后,发现System Setting没有了... 原因 因为在卸载ibus等软件时,会删除一些依赖包,删除过程可能会 ...

  8. day5 io模型

    五种概览:http://www.cnblogs.com/xiehongfeng100/p/4763225.html http://sukai.me/linux-five-io-models/  内有多 ...

  9. selenium python实例脚本1

    #!/usr/local/bin/python3 # coding=utf-8 #统一编码from selenium import webdriverfrom time import sleep#im ...

  10. 揭示同步块索引(中):如何获得对象的HashCode

    转自:http://www.cnblogs.com/yuyijq/archive/2009/08/13/1545617.html 题外话:为了尝鲜,也兴冲冲的安装了Win7,不过兴奋之余却郁闷不已,由 ...