Ajax--PHP项目实战

这两天在实验楼学习ajax,后台是用php写的,下面我将三个实战项目分享出来,也方便我以后随时查看。

第一个项目我写的注释比较详细,第二个和第三个注释就写的比较少了,因为用的方法都差不多;这三个项目都是我们经常看到的,针对我们做测试的朋友来说,大部分是不知道这个到底是怎么实现的(当然包括我自己);我们经过不断的学习代码,知道功能是怎么实现的,我们测试起来也就轻松得多,也就不会提出一些很小白的问题,被developer笑了。

好了下面就是三个项目,中间有什么问题希望大家不吝赐教:

一、环境准备:

1、搭建php开发环境, WampServer:

安装详情:http://jingyan.baidu.com/article/2d5afd69efe9cf85a3e28e54.html

2、准备数据

连接mysql数据库之后、创建数据库,表:

创建数据库 ajaxtest

create database ajaxtest default charset utf8;

use ajaxtest;

创建ajaxtable表:

create table ajaxtable(

userid int(11) not null auto_increment

username varchar(50) not null,

userpass varchar(50) not null,

userage int(11) not null,

usersex varchar(1) not null,

primary key(userid)

);

插入数据:

insert into ajaxtable values(1,‘张三‘,‘lisi‘,‘28‘,‘女‘);

insert into ajaxtable values(2,‘张一‘,‘lisi‘,‘18‘,‘男‘);

insert into ajaxtable values(3,‘张二‘,‘lisi‘,‘18‘,‘女‘);

insert into ajaxtable values(4,‘王一‘,‘lisi‘,‘18‘,‘男‘);

insert into ajaxtable values(5,‘王二‘,‘lisi‘,‘18‘,‘女‘);

insert into ajaxtable values(6,‘王三‘,‘lisi‘,‘18‘,‘女‘);

insert into ajaxtable values(7,‘王四‘,‘lisi‘,‘18‘,‘女‘);

insert into ajaxtable values(8,‘王五‘,‘lisi‘,‘18‘,‘女‘);

insert into ajaxtable values(9,‘李四‘,‘lisi‘,‘18‘,‘男‘);

insert into ajaxtable values(10,‘六三‘,‘lisi‘,‘18‘,‘女‘);

insert into ajaxtable values(11,‘杨思‘,‘lisi‘,‘18‘,‘男‘);

二、Ajax—PHP实战1:

目的:在页面输入年龄、性别值,利用ajax发送请求,查询出满足条件的数据:

结果演示:

我的项目路径是:

所以访问的url:http://localhost/ajaxtest/ajaxpro1/index.html

创建index.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>ajaxtest</title>
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <script language="JavaScript" type="text/javascript">
 8         function ajaxFunction(){
 9             //该函数将页面的输入年龄和性别的值发送到ajaxtest.php中,然后返回查询的结果
10             var xmlhttp;//定义一个xmlhttp变量
11             try{
12                 xmlhttp = new XMLHttpRequest();//一个XMLHttpRequest对象
13             }catch (e){
14                 try{
15                     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");//这个主要是针对ie浏览器低版本的
16                 }catch (e){
17                     alert("你的游览器不支持");
18                     return false;
19                 }
20             }
21 //
22 //            如果readyState状态改变,那就会触发onreadystatechange事件
23 //            readyState的状态:
24 //            0: 请求未初始化
25 //            1: 服务器连接已建立
26 //            2: 请求已接收
27 //            3: 请求处理中
28 //            4: 请求已完成,且响应已就绪
29             xmlhttp.onreadystatechange = function () {
30                 if(xmlhttp.readyState == 4){
31                     //如果readyState的状态为4,获取id为ajaxDiv的元素
32                     var ajaxDisplay = document.getElementById(‘ajaxDiv‘);
33                     //将查询的结果返回,显示
34                     ajaxDisplay.innerHTML = xmlhttp.responseText;
35                 }
36             }
37             //获取id为userage的元素,也就是年龄的值
38             var userage = document.getElementById(‘userage‘).value;
39             //获取id为usersex的元素,也就是性别的值
40             var usersex = document.getElementById(‘usersex‘).value;
41             //拼接请求的url
42             var url = "?userage=" + userage;
43             url += "&usersex=" + usersex;
44             //准备请求
45             xmlhttp.open("GET", "ajaxtest.php" + url, true);
46             //将请求发送到服务器
47             xmlhttp.send();
48         }
49     </script>
50
51 </head>
52 <body>
53 <form name="myform">
54     Age: <input type="text" name="userage" id="userage"><br><br>
55     Sex: <select id="usersex" name="usersex">
56     <option value="男">男</option>
57     <option value="女">女</option>
58 </select>
59     <br><br>
60     <input type="button" onclick="ajaxFunction()" value="执行">
61 </form>
62 <div id="ajaxDiv">显示执行ajax结果</div>
63 </body>
64 </html>

创建:ajaxtest.php

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: xxx
 5  * Date: 2016/10/10
 6  * Time: 10:52
 7  */
 8
 9 error_reporting(0);//禁用错误报告
10 # database message
11 // 数据库连接信息
12 $dbhost = "localhost";
13 $dbuser = "root";
14 $dbpswd = "123456";
15 $dbname = "ajaxtest";
16
17 // 获取ajax请求传入的参数
18 $userage = $_GET[‘userage‘];
19 $usersex = $_GET[‘usersex‘];
20
21 $mysqli = new mysqli();
22 // 连接数据库
23 $mysqli->connect($dbhost, $dbuser, $dbpswd, $dbname);
24 if($mysqli->error){
25     echo "连接数据库失败<br>".$mysqli->error;
26 }
27 // 设置utf8编码
28 $mysqli->set_charset("utf8");
29 // sql语句
30 $query = "select * from ajaxtable where usersex = ‘$usersex‘";
31
32 # 判断userage是否是个数字
33 if(is_numeric($userage)){
34     $query .= " AND userage <= ‘$userage‘";
35 }
36 # 查询数据
37 $result = $mysqli->query($query);
38 # 显示列表头
39 $display_string = "<table>";
40 $display_string .= "<tr>";
41 $display_string .= "<th>用户名</th>";
42 $display_string .= "<th>年龄</th>";
43 $display_string .= "<th>性别</th>";
44 $display_string .= "</tr>";
45
46 # 显示内容
47 while ($row = $result->fetch_array()){
48     $display_string .= "<tr>";
49     $display_string .= "<td>".$row[‘username‘]."</td>";
50     $display_string .= "<td>".$row[‘usersex‘]."</td>";
51     $display_string .= "<td>".$row[‘userage‘]."</td>";
52     $display_string .= "</tr>";
53 }
54 $display_string .= "</table>";
55 echo "SQL语句为:".$query."<br>";
56 echo $display_string;
57
58 // 释放查询结果
59 $result->close();
60 // 关闭mysql连接
61 $mysqli->close();

三、Ajax—PHP实战2:

目的:输入用户名,验证数据库是否存在,有相应的提示

url: http://localhost/ajaxtest/ajaxpro2/index.html

执行结果:

项目路径:

创建index.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Ajax表单验证</title>
 6     <!--引入css文件:mycss.css-->
 7     <link href="mycss.css" rel="stylesheet" type="text/css">
 8     <script>
 9         function showHint() {
10             // 获取用户名输入框的值
11             var str = document.getElementById("username").value;
12             if (str.length == 0){
13                 // 如果输入框值为空的时候,提示
14                 document.getElementById("showmsg").innerHTML = "用户名不能为空";
15                 return;
16             }else {
17                 // ajax发送请求
18                 var xmlhttp = new XMLHttpRequest();
19                 xmlhttp.onreadystatechange = function () {
20                     if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
21                         document.getElementById(‘showmsg‘).style.display = "block";
22                         document.getElementById(‘showmsg‘).innerHTML = xmlhttp.responseText;
23                     }
24                 }
25                 xmlhttp.open("GET", "ajaxtest.php?username=" + str, true);
26                 xmlhttp.send();
27             }
28
29         }
30     </script>
31 </head>
32 <body>
33     <div class="container">
34         <form id="contact" method="post">
35             <input type="text" placeholder="用户名" id="username" name="username" onblur="showHint()">
36             <div id="showmsg" style="display: none"></div>
37         </form>
38     </div>
39 </body>
40 </html>

创建mycss.css文件:

 1 * {
 2     margin: 0;
 3     padding: 0;
 4     box-sizing: border-box;
 5     -webkit-box-sizing: border-box;
 6     -moz-box-sizing: border-box;
 7     -webkit-font-smoothing: antialiased;
 8 }
 9
10 body {
11     font-family: Arial,sans-serif;
12     font-weight: 300;
13     font-size: 12px;
14     line-height: 30px;
15 }
16
17 .container {
18     max-width: 400px;
19     position: relative;
20 }
21
22 #contact {
23     background: #F9F9F9;
24     padding: 25px;
25     margin: 5px 0;
26 }
27
28 #contact input[type="text"] {
29     border: 1px solid #AAA;
30     width: 200px;
31     height: 25px;
32 }
33
34 #contact input:focus, #contact textarea:focus {
35     outline:0;
36     border:1px solid #999;
37 }
38 ::-webkit-input-placeholder {
39     color:#888;
40 }
41 :-moz-placeholder {
42     color:#888;
43 }
44 ::-moz-placeholder {
45     color:#888;
46 }
47 :-ms-input-placeholder {
48     color:#888;
49 }

创建ajaxtest.php文件:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: xxx
 5  * Date: 2016/10/11
 6  * Time: 9:00
 7  */
 8 error_reporting(0);
 9 $dbhost = "localhost";
10 $dbuser = "root";
11 $dbpswd = "123456";
12 $dbname = "ajaxtest";
13
14 $checkmsg = $_GET[‘username‘];
15
16 $myselect = new mysqli();
17 $myselect->connect($dbhost,$dbuser,$dbpswd,$dbname);
18 $myselect->set_charset("utf8");
19 $sql = "select * from ajaxtable where username=‘$checkmsg‘";
20 $result = $myselect->query($sql);
21
22 $rownum = $result->num_rows;
23 //echo $rownum;
24 if($rownum >= 1){
25     echo ‘<font color="red">用户名已存在</font>‘;
26 }else{
27     echo ‘<font color="green">用户名可用</font>‘;
28 }
29
30 $result->close();
31 $myselect->close();

四、Ajax—PHP实战3:

目的:根据输入的值进行搜索,显示出搜索结果,并且可以点击下拉框中的值可以跳转到新的页面;也可以根据输入的值,点击搜索按钮,进入结果页面。

结果演示:

项目路径:

访问Url:http://localhost/ajaxtest/ajaxpro3/index.html

创建index.html

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Ajax搜索</title>
 6     <link href="mycss.css" rel="stylesheet" type="text/css">
 7     <script>
 8         function showHint(str) {
 9             if(str.length==0){
10                 document.getElementById("showmsg").innerHTML = "";
11                 return;
12             }else {
13                 var xmlhttp = new XMLHttpRequest();
14                 xmlhttp.onreadystatechange = function () {
15                     if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
16                         document.getElementById("showmsg").style.display = "block";
17                         document.getElementById("showmsg").innerHTML = xmlhttp.responseText;
18                     }
19                 }
20                 xmlhttp.open("GET","ajaxtest.php?keywords=" + str,true);
21                 xmlhttp.send();
22             }
23         }
24     </script>
25 </head>
26 <body>
27     <form action="result.php" method="get">
28         <input type="text" name="keywords" id="keywords" onkeyup="showHint(this.value)">
29         <input type="submit" name="submit" id="submit" value="搜索">
30         <div id="showmsg" style="display: none"></div>
31     </form>
32
33 </body>
34 </html>

创建mycss.css

 1 body {
 2     color: #555;
 3 }
 4
 5 #keywords {
 6     width: 485px;
 7     height: 28px;
 8     margin: 0px;
 9     font-size: 14px;
10 }
11
12 #showmsg {
13     display: block;
14     border: solid 1px #B0B0B0;
15     width: 487px;
16     line-height: 28px;
17     font-size: 14px;
18 }
19
20 #submit{
21     width: 90px;
22     height: 30px;
23 }
24
25 a:link{ text-decoration: none; color: blue}
26 a:active{ text-decoration: blink;}
27 a:visited {text-decoration: none; color: green}
28 a:hover{ text-decoration: underline; color: red}

创建ajaxtest.php

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: LSH
 5  * Date: 2016/10/11
 6  * Time: 11:00
 7  */
 8 error_reporting(0);
 9 $dbhost = "localhost";
10 $dbuser = "root";
11 $dbpswd = "123456";
12 $dbname = "ajaxtest";
13
14 $checkmsg = $_GET[‘keywords‘];
15
16 $myselect = new mysqli();
17 $myselect->connect($dbhost,$dbuser,$dbpswd,$dbname);
18 $myselect->set_charset("utf8");
19 $sql = "select * from ajaxtable where username LIKE ‘%$checkmsg%‘";
20 $result = $myselect->query($sql);
21
22 $rownum = $result->num_rows;
23 //echo $rownum;
24 if($rownum < 1){
25     echo "数据库无数据";
26 }else if($rownum == 1){
27     $row = $result->fetch_array();
28     echo "<a href=‘result.php?keywords=".$row[‘username‘]."‘>".$row[‘username‘]."</a>";
29 }else{
30     while ($row = $result->fetch_array()){
31         echo "<a href=‘result.php?keywords=".$row[‘username‘]."‘>".$row[‘username‘]."</a>"."<br>";
32     }
33 }
34
35 $result->close();
36 $myselect->close();

创建result.php:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: LSH
 5  * Date: 2016/10/11
 6  * Time: 11:00
 7  */
 8 error_reporting(0);
 9 $dbhost = "localhost";
10 $dbuser = "root";
11 $dbpswd = "123456";
12 $dbname = "ajaxtest";
13
14 $checkmsg = $_GET[‘keywords‘];
15
16 $myselect = new mysqli();
17 $myselect->connect($dbhost,$dbuser,$dbpswd,$dbname);
18 $myselect->set_charset("utf8");
19 $sql = "select * from ajaxtable where username LIKE ‘%$checkmsg%‘";
20 $result = $myselect->query($sql);
21
22 //echo $sql;
23 ?>
24 <!DOCTYPE html>
25 <html lang="en">
26 <head>
27     <meta charset="UTF-8">
28     <title>查询结果</title>
29     <link href="mycss.css" rel="stylesheet" type="text/css">
30 </head>
31 <body>
32 <?php
33 //echo $result->num_rows;
34     while ($row = $result->fetch_array()){
35         echo "<div><h1>姓名:$row[username]</h1><p>年龄:$row[userage],性别:$row[usersex]</p></div><br>";
36     }
37 $result->close();
38 $myselect->close();
39 ?>
40 </body>
41 </html>
时间: 2024-10-25 11:46:27

Ajax--PHP项目实战的相关文章

93G通过项目学PHP+Ajax+jQuery网站开发技术 PHP+Ajax+jQuery项目实战课程

===============课程目录===============<项目一:PHP网站搭建>├1.认识PHP.mp4├2.常用编辑工具.mp4├3.开发环境搭建.mp4├4.配置虚拟主机.mp4└5.项目部署.mp4<项目二 学生信息管理>├1.PHP标记与注释.mp4├2.标识符与关键字.mp4├3.变量与常量.mp4├4.数据类型.mp4├5.输出语句.mp4├6.任务一:展示学生资料.mp4├7.date()函数.mp4├8.PHP运算符.mp4├9.运算符优先级.mp4├

基于Servlet+JDBC+Bootstrap+MySQL+AJAX权限管理系统项目实战教程

项目简介 权限系统一直以来是我们应用系统不可缺少的一个部分,若每个应用系统都重新对系统的权限进行设计,以满足不同系统用户的需求,将会浪费我们不少宝贵时间,所以花时间来设计一个相对通用的权限系统是很有意义的.     本系统的设计目标是对应用系统的所有资源进行权限控制,比如应用系统的功能菜单.各个界面等进行权限的操控.技术介绍 · Servlet3.0 Servlet 3.0 作为JavaEE6 规范体系中一员,随着JavaEE6规范一起发布.该版本在前一版本(Servlet2.5)的基础上提供了

angularJs项目实战!01:模块划分和目录组织

近日来我有幸主导了一个典型的web app开发.该项目从产品层次来说是个典型的CRUD应用,故而我毫不犹豫地采用了grunt + boilerplate + angularjs + bootstrap + D3 + requirejs 的架构来实现它.angularjs早在去年6月份我就有所接触,将它应用在实验室项目的个别页面中,11月份在新浪的时候也将其推荐给了所在云事业部项目组.项目组老大程辉等人都是很有技术敏感性的人,大胆地采纳了我的建议,将之应用于原本使用dojo开发的项目前端模块上.然

Asp.Net Core 项目实战之权限管理系统(7) 组织机构、角色、用户权限

0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实

Asp.Net Core 项目实战之权限管理系统(6) 功能管理

0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计 3 Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL 4 Asp.Net Core 项目实战之权限管理系统(4) 依赖注入.仓储.服务的多项目分层实现 5 Asp.Net Core 项目实

Extjs项目实战视频教程

深入浅出Extjs4.1.1(ExtJS组件.ExtJS对Ajax支持.ExtJS布局)配在线选课系统实战 适合人群:初级 课时数量:40课时 用到技术:ExtJS组件.ExtJS对Ajax支持.ExtJS布局 涉及项目:在线选课系统实战 咨询qq:1840215592 课程简介: ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架,本课程是一套基于Extjs4.1.1版本进行全新讲解Extjs的课程.课程从基础开始,配合项目实战应用,让用户在最短的时间内掌握E

JavaEE项目实战视频教程

基于JavaEE平台实战WebService框架Xfire+Ajax框架DWR(租房网项目实战)课程分类:Java适合人群:初级课时数量:40课时用到技术:WebService.xFire.DWR.Ajax涉及项目:租房网咨询QQ:1840215592一.课程介绍1.1.课程的背景该课程是北风品牌课程-<BF-TECH J2EE软件工程师就业课程> 第三阶段:课程四.WebService框架Xfire+Ajax框架DWR 深入解析课程.1.2.课程内容简介JavaEE项目实战视频教程包含两块内

HTML5视频教程,HTML5项目实战,HTML5中文指南,HTML5使用手册

HTML5视频教程,HTML5项目实战,HTML5中文指南,HTML5使用手册. 超过2G 的 HTML5 视频教程免费分享,免费下载! 尚硅谷前端HTML5视频_HTML & CSS 核心基础教程(103集实战教学,从入门到精通) 本套视频适合零基础并且对前端知识感兴趣的同学.内容涵盖HTML基础.标签.CSS 选择器.盒子模型.浮动.定位.图片整合.PS 切图等页面相关常用技术. 视频最后包含一个实战项目:将一个 PSD 设计图转换为一个商业网站的首页.让同学们体验前端页面开发的全过程. 通

项目实战—小饭桌

一 项目环境 项目环境说明 本项目是一个模仿小饭桌官网的项目实战.具有前台和CMS后台管理系统.具有以下模块:新闻.在线课程.付费资讯.搜索等模块.其中涉及到的技术要点有:Django.ajax,Restful API,arttemplate.js.在线视频播放,支付,haystack搜索,UEditor富文本编辑器,第三方分享等. 前端方向 nvm:用来管理node.js的工具. node.js:自带有npm包管理工具. npm:类似于Python中的pip.可以非常方便的管理一些前端开发的包

前端全栈架构,组件式开发,响应式开发,全栈工程师架构,用户界面架构,企业级架构项目实战

我本是一名文科专业半路出家的前端开发人员,从最初只会切图和写CSS.Html到现在会写点JS,一路坑坑洼洼,也是经历了很多,从2010年开始就用WordPress开设了自己的博客,虽然内容零零散散的并不多,但是多多少少也留下了时光的缩影,一直希望自己有一个自留地.用Node.js做服务端替换WordPress是去年的一个想法,由于一直腾不出时间,所以拖到了现在.当然了WordPress作为全球用户量最广的开源博客程序,易用性等诸多好处无可厚非,光自己的博客在过去几年就用了很多套模板,也用它做过很