简单租房子实例详解---(session、ajax、json前后台数据处理、分页)
本次实例我们结合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前后台数据处理、分页)的更多相关文章
- maven pom文件简单模板和配置详解
https://blog.csdn.net/earbao/article/details/49924943 maven pom文件简单模板和配置详解
- Python做简单的字符串匹配详解
Python做简单的字符串匹配详解 由于需要在半结构化的文本数据中提取一些特定格式的字段.数据辅助挖掘分析工作,以往都是使用Matlab工具进行结构化数据处理的建模,matlab擅长矩阵处理.结构化数 ...
- 基于Jquery+Ajax+Json+存储过程 高效分页
在做后台开发中,都会有大量的列表展示,下面给大家给大家分享一套基于Jquery+Ajax+Json+存储过程高效分页列表,只需要传递几个参数即可.当然代码也有改进的地方,如果大家有更好的方法,愿留下宝 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写、读写分离及简单双机热备详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx (windows下nginx安装.配置与使用) 四.Nginx之反向代理 五.Nginx之负载均衡 (负载均衡算法:nginx负载算法 up ...
- Asp.NetMVC利用LigerUI搭建一个简单的后台管理详解(函登录验证)
上一篇 Asp.Net 中Grid详解两种方法使用LigerUI加载数据库数据填充数据分页 了解了LigerUI 中Grid的基本用法 现在结合上一篇的内容做一个简单的后台管理,当然也有前台的页面 ...
- java-单例详解
java单例模式(Singleton)以及实现 一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. ...
- UML简单介绍—类图详解
类图详解 阅读本文前请先阅读:UML简单介绍—类图这么看就懂了 1.泛化关系 一个动物类: /** * 动物类 */ public class Animal { public String name; ...
- 简单搭建SpringMVC框架详解
在公司待了两年,用的一直是Spring+SpringMVC+Hibernate框架,都是公司自己搭建好的,自己从来没有主动搭建过,闲来无聊,自己搭建试试.一下即我搭建的过程以及搭建所遇到的问题,有部分 ...
- python关于Django搭建简单博客项目 详解二-setting.py
这一篇我们来讲解setting.py,具体内容以注释形式写入到下面的setting.py代码中,篇幅所限已把官方所给英文注释删除. 全部源代码和详解请参看http://github.com/Cheng ...
随机推荐
- 安装visio 2010:您的计算机上的Office 2003安装已损坏,安装程序无法继续。请删除或修复office 2003产品并重新运行安装程序
您的计算机上的Office 2003安装已损坏,安装程序无法继续.请删除或修复office 2003产品并重新运行安装程序 最近打算安装visio 2010时出现 以下错误: “您的计算机上的Of ...
- wma wmv asf格式分析
原文链接:http://blog.csdn.net/werocpp/article/details/5594067 原文链接:http://blog.chinaunix.net/uid-2075819 ...
- Leetcode 814. Binary Tree Pruning
dfs 要点是这一句: return node.val==1 or node.left or node.right 完整代码: # Definition for a binary tree node. ...
- HDU 1043
http://acm.hdu.edu.cn/showproblem.php?pid=1043 http://www.cnblogs.com/goodness/archive/2010/05/04/17 ...
- Postfix常用命令和邮件队列管理(queue)
本文主要介绍一下postfix的常用命令及邮件队列的管理: Postfix有以下四种邮件队列,均由管理队列的进程统一进行管理: maildrop:本地邮件放置在maildrop中,同时也被拷贝到inc ...
- caffe 学习记录1及网络结构
ubuntu git clone 默认在当前文件夹 caffe 基础了解:https://www.zhihu.com/question/27982282/answer/39350629 当然,官网才是 ...
- Eclipse web工程 部署 三种方式 1
Eclipse web工程 部署 三种方式 1.run on 前提: 安装 好 eclipse.jdk.tomcat 然后 新建一个 web工程 注意此处Default output folder 最 ...
- 流畅设计 Fluent Design System 中的光照效果 RevealBrush,WPF 也能模拟实现啦!
UWP 才能使用的流畅设计效果好惊艳,写新的 UWP 程序可以做出更漂亮的 UI 啦!然而古老的 WPF 项目也想解解馋怎么办? 于是我动手实现了一个! 迫不及待看效果 ▲ 是不是很像 UWP 中 ...
- 《selenium2 python 自动化测试实战》(6)——打印信息和设置等待时间
打印信息经常用的有两个: # coding: utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get( ...
- 接口测试框架——第六篇-读Excel封装方法
谢谢@小麦苹果的提醒,才发现我借口测试少写了一个文件,今天给大家补上: common->service->excel_case_data.py # coding: utf-8 import ...