<?php
Day1
互联网:
网络和网络之间的通信连接
网站发展历程:
web1.0 特点:只能从网站获取一些信息,没有动态交互(静态网站)
web2.0 特点:有动态交互,评论、点个赞,关注(动态网站)
web3.0 特点:数字化,服务型(支付宝,小黄车,扫码)
php:
是什么:客户端脚本语言(客户端:坐在电脑前的人
脚本语言:自动执行,自动编译)
为什么:
1》开源产品,可以看源码
2》免费:人人可以使用
3》跨平台:windows、linux系统、apache/niinx web服务器
4》支持多种数据库:mysql、sqlserver、oracle
5》简单易学:代码简单
6》运行速度快
软件:
指的是电脑应用,桌面上的东西(杀毒、打字、聊天软件)
分类:
bs:浏览器+服务器端
特点:只需打开浏览器,输入网址即可访问(淘宝,京东)
cs: 可短+服务器端
特点:必须下载应用(电脑上是客户端,手机上是app)(陌陌,qq,酷狗)
应用领域:
中小型网站的开发 web应用系统开发
大型网站的业务逻辑结果展示 多媒体系统开发
Web办公管理系统 企业级应用开发
硬件管控软件的GUI
电子商务应用
day2
http协议:
超文本传输协议
传音频、文档、图片、视频
网站:
静态网站:
客户端发送请求(http请求)到web服务器 web服务器已文本的形式返回响应客户端
动态网站:
客户端发送请求(http请求)到web服务器 web服务器操作数据库,数据库把数据返给web服务器
web服务器再返回给客户端
环境搭建:wamp
w:windows: 操作系统 xp、win7、win8、win10
a: apache: web服务器
m: mysql 数据库
p: php语言
lamp
l:linux操作系统
a: apache: web服务器
m: mysql 数据库
p: php语言
步骤:
1》先安装web服务器 apache
D://wamp/apache
三大目录:
bin 程序命令目录
conf 配置文件目录conf/http.conf (apache的配置文件)
htdocs 网站访问根目录(就是咱们写代码的地方)
注意:只要修改配置文件里的东西都要重启apache
2》安装php (安装完php立即重启apache)
D://wamp/php
1》安装php的要加载apache2
2》php的配置文件: php/php.ini
3》怎么做:
1 新建一个php页面:
在apache/htdocs/下建一个xxx.php的文件
2 怎么显示报错信息
在php/php.ini display_errors 中的Off 改为 On
3 改默认时区
在php/php.ini date.timezone 中的;去掉 加上PRC
改完配置文件里的东西也要重启apache
4 php开始
<?php
//输出
echo
//防止中文乱码
header("content-type:text/html;charset=utf8");
//换行
echo "<hr/>" echo "<br/>";
//注释
// 单行
/*
* 多行
*/
//php信息
phpinfo();
//结尾不能
以英文分好结尾
//声明一个变量
//要求:
// 不能以数字开头,只能以下划线,字母开头
// 不能有特殊字符
// 见名识意
// 连接2个词语中间用_隔开
$变量名 = "值";
//连接2个字符串
.
//写法:
if(条件)
{
}
else
{
}
if(条件){
}else{
}
// = 赋值(后面赋值)
// == 判断是否相等(类型相同,值相同)
// === 全等
//表格快捷键
center>table>tr*2>td*3 按tab键
?>
day3
1>php8大数据类型
一 四种标量
①整型(整数) int
②浮点型(小数点) float
③字符型(由单引号''或双引号""包起来) string
④布尔型(真或假 true/false) bool
二 二种特殊
⑤资源 resource
⑥空 null
三 二种复合
7 数组 array
8 对象 object
输出:
1 echo :只能输出字符串的东西
2 print_r:字符串,数组都ok 但是不能输出数据类型
3 var_dump:字符串,数组,数据类型,数据长度
常量:
一旦定义就不发生改变的量
定义常量:
define("常量名","要给常量的值");
常量和变量的区别:
常量一旦定义不改变占据内存空间,变量经常改变,程序执行完后,变量自动释放内存
函数:
isset(要检测的变量) 检测变量是否设置
unset(要销毁的变量) 删除或销毁不必要的变量
empty(要检测的变量) 判断变量是否为空
预定义变量:
$_REQUEST 接受全部数据 以数组的形式展示出来
$_GET 接值
$_POST 接值
$_SERVER 获取服务器信息
get 和 post的区别:
①post传值比较安全,没有通过地址栏传递
get 通过地址栏传递,不是很安全
②不写method 默认get传递
写method="post" 通过post传
method 传值方式 action 提交地址
辅助函数:
die 终止程序 用于改错
exit 终止程序 用于改错
@ 屏蔽报错信息 但是错误依然存在
值传递:
赋值: 就是两个变量间的赋值传递,一方的改变不会影响另一个变量的值
地址传递: 就是两个变量间的加上&赋值传递,一方的改变会影响另一个变量的值
共同占据一个空间
赋值运算符: = 赋值
== 判断前后是否相等
+= 将右边的值加给左边
-= 将右边的值减到左边
% 取余
.= 将右边的字符加到左边
/= 将左边的值厨艺右边
逻辑运算符:
&& and 所有的都条件都满足才为真
|| or 只要有一个条件为真 等式就成立
! 不满足、不是、否(你真我假)
运算符:
> 大于
< 小于
>= 大于等于
<= 小于等于
跳转方法:
1》带有秒数自动跳转
echo "要写的内容";
header("refresh:2;url=要跳转的页面");
2》弹框跳转
echo "<script>alert('要写的内容');location.href='要跳转的页面'</script>"
3》超链接跳转
echo "<a href='要跳转的页面'>要写的内容</a>";
注意:
内单外双 "''" 对 单套单 '''' 错
内双外单 '""' 对 双套双 """" 错
day4
三大结构:
1》顺序机构:
一步步执行,没有分支,后者会覆盖前者
2》选择结构:
if() switch()
{
if(){ case "条件":
结果 break;
}
}else{
}
if(){
}else if(){
}else{
}
3》循环结构
for(初始值;结束值;步长)
{
}
while(条件)
{
}
//以上两个先判断再循环
do{
}while(条件) //先执行 在判断循环
函数:
分类:
系统函数:
不需自己定义,拿过来直接使用,unset(参数),implode(),explode()
自定义函数:
自己定义,自己调用自己定义的函数
定义:
function 函数名(形参1,形参2)
{
函数体
返回值(返回值返哪:哪调用返哪)
}
调用:
函数名(实参1,实参2)
函数功能:
1》1处多用
2》实现特定功能
3》这个月目标,用函数封装数据库
Day 5
字符串定义:
由单引号或双引号包起来的字符串
$str = ''
$str = ""
$str = <<<定义的字符串名字
给定义的字符串赋的值
定义的字符串;
单引号:不解析变量 $str='12345' echo '$str' //输出 $str
双引号:解析变量 $str='123456' echo "$str" //输出 12345
关于字符串长度的:
strlen(要查询长度的字符串) 返回值 是int 长度 eg: 7
关于字符串查找的:
strpos(要查找的字符串,要查找的字符) 返回值是int 该字符在字符串中首次出现的位置
strrpos(要查找的字符串,要查找的字符) 返回值是int 该字符在字符串中最后一次出现的位置
关于字符串截取的:
substr(要截取的字符串); 返回值 是截取后的字符串 特点:全都截取了 ,原来是啥 ,截取完后还是啥
substr(要截取的字符串,开始截取位置) 返回值 是开始截取位置到最后的字符串
substr(要截取的字符串,开始截取位置,截取长度) 返回值 是开始截取位置到规定的截取长度之间
关于字符串替换的:
substr_replace(要替换的字符串(你要在哪换),你要换成啥,从哪开始换,要换多长) 返回值
是替换后的字符串
str_replace(要换啥,换成啥,要替换的字符串(你要在哪换))
验证邮箱是什么类型思路:
1》先找@出现的位置
2》再找.出现的位置
3》截取@到.之间的字符
隐藏手机号:
1》字符串替换 substr_replace("13115454133","<font color='red'>****</font>",3,5);
变红:
2》str_replace("赵温柔","<font color='red'>赵美丽</font>","八维以北,赵温柔最美")
注意: $str = "hello";
h 0
e 1
l 2
l 3
o 4
Day5
php验证:
验证用户输入的是否正确如果正确就继续走,展示不正确给出错误提示返回添加页面重新添加
注意:
html表单页面要写for循环语句
<?php
for($i=1;$i<=10;$i++)
{
?>
要循环的东西
<?php
}
?>
数组定义:
一堆数据的集合(数字,字符串等组成)
分类:
索引数组:
下标全都是数字的数组称为索引数
关联数组:
下标只要有一个是字符串的数组称为关联数组
分为:
一维数组、二维数组、多维数组
一维数组:
$arr = array("hello","world","lisa") 数组间用,隔开
单个取值
$arr[下标]
删除
unset($arr[下标])
改
$arr[下标] = "要改的值";
循环取值
①
for($i=0;$i<count($arr);$i++) 获取数组的长度 count(数组)
{
echo $arr[$i];
}
②
foreach($arr as $key=>$val)
{
$key就是键就是下标
echo $val $val 是下标所对应的值
}
二维数组:数组里的键又套一层数组
$arr = array("hello","world","lisa",array()) 数组间用,隔开
单个取值
$arr[外层下标][里层下标]
删除
unset($arr[外层下标][里层下标])
改
$arr[外层下标][里层下标] = "要改的值";
循环取值
①
for($i=0;$i<count($arr);$i++) 获取数组的长度 count(数组)
{
if(is_array($arr[$i]))
{
for($j=0;$j<$arr[$i];$j++)
{
echo $arr[$i][$j]
}
}else{
echo $arr[$i];
} is_array(要检测的字符串)
}
获取当前时间的时间戳
time()
将时间戳转化为年月日,时分秒
date("Y-m-d H:i:s",要转化的时间戳);
Day7
关联数组:
不管是几维数组,只要下标有字符串的数组就是关联数组
定义一维关联数组:
$arr = array("username"=>'值',"age"=>'值') 关键字:=> 键值和键值之间用,隔开
查询一维关联数组
$arr['username'];
删除一维关联数组的键值
unset($arr['username']);
追加一维关联数组的键值
$arr['hobby'] = 值
修改一维关联数组的键值
$arr['username'] = 你要改的值
循环取一维关联数组的值
foreach($arr as $key=>$val)
{
$val 就是值
$key 就是键就是下
}
定义二维关联数组:
$arr = array(array("username"=>'值',"age"=>'值'),
array("username"=>'值',"age"=>'值'),
array("username"=>'值',"age"=>'值'),
) 关键字:=> 键值和键值之间用,隔开
查询二维关联数组
$arr[外层下标]['username'];
删除二维关联数组的键值
unset($arr[外层下标]['username']);
追加二维关联数组的键值
$arr[外层下标]['hobby'] = 值
修改二维关联数组的键值
$arr[外层下标]['username'] = 你要改的值
循环取二维关联数组的值(先循环取外层,在循环取内层的值)
foreach($arr as $key=>$val)
{
$val 是一维关联数组
$key 是外层的键
foreach($val as $k=>$v)
{
$k 是一维关联数组的键
$v 是一维关联数组的值
}
}
总结:取二维数组的值就是二维变一维2层foreach
索引数组和关联数组取值的区别:
索引数组取值可以用for/foreach
关联数组取值只能用foreach
Day6
数组函数:
从属于系统函数
将数组分割成字符串
implode(分割符,要分割的数组) 返回值是分割完后的字符串
将字符串拼接成数组
explode(分割符,要拼接的字符串) 返回值是拼接后的数组
获取数组的键
array_keys(数组) 返回值是数组的键(也是数组)
获取数组的值
array_values(数组) 返回值是数组的值(也是数组)
将数组合并
array_merge(要合并的数组) 返回值是合并后的数组
将数组排序
sort(要排序的数据) 返回值是true或false 输出你排序的数据就是最新数组
根据数组的值返回数组的键
array_search(值,数组) 返回值如果找到该值返回键 否则返回false
查看一个数组是否存在该键
array_key_exists(键,数组) 返回值 是true 或 false
求数组元素个数/数组长度
count(数组) 返回值是数组长度 int型
将数组键和值互换位置
array_flip(数组) 返回值是换过后的数组
Day7
数组之间的相互转化
二维变一维:foreach{} 要是循环取数据就再来一层
eg:
$arr3=array(
array("username"=>"小明","sex"=>"男","age"=>"20") ,
array("username"=>"小白","sex"=>"男","age"=>"16") ,
array("username"=>"小黑","sex"=>"男","age"=>"22") ,
);
echo "<table border=1px>";
echo "<tr><td>姓名</td><td>性别</td><td>年龄</td><td>电话</td></tr>";
$arr3[0]['telephone']="123";
$arr3[1]['telephone']="rerw";
$arr3[2]['telephone']="rewre";
//二维变一维
foreach($arr3 as $key=>$val)
{
$val['username'] = str_replace("小", "<font color='red'>小</font>", $val['username']);
$val['age'] = 23;
//$val['telephone'] = "17701263468";
echo "<tr>";
//循环取一维数组里的值
foreach ($val as $k => $v)
{
echo "<td>";
echo $v;
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
一维变二维:
1》写foreach
2》定义一个新数组$data
3》找规律往$data填东西
eg:
$u_id = 2;
$a_id = array(2,3,4);
foreach($a_id as $key=>$val)
{
$key 012
$val 234
$data[$key]['u_id'] = $u_id;
$data[$key]['a_id'] = $val;
}
二维变三维:
1》写foreach
2》定义一个新数组$data
3》找规律往$data填东西
eg:
$arr = array(
array("username"=>"耿红娟","age"=>24,"sex"=>"女"),
array("username"=>"申忠龙","age"=>23,"sex"=>"男"),
array("username"=>"李朋","age"=>25,"sex"=>"男"),
array("username"=>"张立伟","age"=>30,"sex"=>"男"),
);
//二维变三维
foreach ($arr as $key => $value) {
//首先把值赋给一个新的变量
$v = $value;
unset($v['sex']);
$data[$value['sex']][] = $v;
}
特点:如果要是有连续的下标 一般是$key键
如果下标断续的话 给一个空数组[]
Day8
doc命令 (小黑框命令行)
1 打开命令行 windows+r
2 进入cmd
3 进入mysql命令行 mysql -uroot -proot
4 查看自己的所有库 show databases;
5 创建一个数据库 create database 库名; eg:create database 1510phpe;
选择数据库 use 数据库名 eg:use 1510phpe
6 查看所有表 show tables;
7 创建表 create table 表名(
数据库字段 数据存储类型,
)
eg:
create table user(
id int auto_increment,
username varchar(50),
password char(30),
age int,
sex char(30),
date datetime
);
8 查看表会多一个表 show tables; 会多出一个user表
9 对user表进行操作
1>向表里添加数据
insert into 表名(字段1,字段2...) values(值1,值2...);
eg:
insert into user(username,password,age,sex,date) values('shuai','123456','16','man','2017-03-18');
2>查询表里的数据
全查:
select * from 表名
eg:
select * from user;
查一部分字段所对应的值
select 字段1,字段2 from 表名
eg:
select username,password from user;
3>向表里修改数据
update 表名 set 字段1=值1,字段2=值2 where id = 你想要改的id
eg:
update user set username ='ugly',age = '18',sex='girl' where id = 1;
4>在表里删除数据
delete from 表名 where id = 你要删除的id
eg:
delete from user where id = 1;
删除数据库:
drop database 库名
eg:
drop database 1510phpe;
删除表
drop table 表名
eg:
drop table user;
Day9
mysql一表:
添加:insert into 表名(字段1,字段2...) values ('值1','值2'...)
查询:select * from 表名; // 查所有
select 字段1,字段2 from 表名 //查指定字段
select * from 表名 where id = 1 //查询id=1的数据一般用于修改里
删除:delete from 表名 //清空表里的数据
delete from 表名 where id in(1,2,3) //删除id为123的数据
delete from 表名 where id = 1 //删除id为1的数据
修改:
update 表名 set 字段1='值1',字段2='值2'... where id = 2
mysql二表:
添加:insert into 表名(字段1,字段2...) values ('值1','值2'...)
查询:select * from 主表 inner join 次表 on
主表的关联id=次表的自增id; // 查2表所有所有
select 两表字段名 from 主表 inner join 次表 on
主表的关联id=次表的自增id; //查2表指定字段
select * from 主表 inner join 次表 on
主表的关联id=次表的自增id where id = 主表或次表的id //
查询id=1的数据一般用于修改里
删除:delete from 表名 //清空表里的数据
delete from 表名 where id in(1,2,3) //删除id为123的数据
delete from 表名 where id = 1 //删除id为1的数据
修改:
update 表名 set 字段1='值1',字段2='值2'... where id = 2
排序:
order by:
用在哪:最贵、最便宜、最大、最小
怎么用:order by id desc
order by id asc (默认)
条件:
where
用在哪:姓名里有某某、删除、修改、查询等只要有判断条件的
怎么用:
where id = 1;
where name like '%张三%';
where add_time > 2017-03-22
等
限制条数:
limit
用在哪:取前几条,取数据的范围,分页里
怎么用:
limit 0,3 从第一条开始取 取三条数据
limit 3 从第一条开始取 取三条数据
limit 2,5 从第三条开始取 取五条数据
区间:
between and
用在哪:范围、区间、按照开始时间到结束时间搜索、或者大于xxx小于aaa的区间
怎么用:
where add_time between 2017-03-19 and 2017-03-22
where num between 3 and 100
模糊查询:
like
用在哪:查询名字里带张,或者带三啊或者搜索(一般用于汉字)
怎么用:
where name like '%张%'; 匹配姓张的
where name like '_张%' 匹配第二个姓张的
% 匹配任意多个字符 _匹配任意一个字符
例子:
1、两表联查,查询出所有的图书信息
select * from book inner join type on book.t_id = type.type_id
2、查询出小说分类下的所有图书信息
select * from book inner join type on book.t_id = type.type_id where type_name = '耽美'
3、将图书价格在10到20之间的图书名称修改为西游记
update book set book_name = '西游记' where book_price between 10 and 20
4、查询出图书名称或者图书描述中包含有aaaa的图书信息
select * from book inner join type on book.t_id = type.type_id where book_name like '%西游记%' or book_desc like '%一个女人%'
5、查询出分类名称是名著或者作者姓张的图书信息
select * from book inner join type on book.t_id = type.type_id where type_name = '金庸' or book_author like '%张%'
6、将张三发布的图书信息删除\
delete from book where book_author = '张三'
7、查询出最贵的三件图书信息
select * from book inner join type on book.t_id = type.type_id order by book_price desc limit 3
8、将图书作者中包含”三“或者商品价格在2元以上的图书名称修改为红楼梦
9、update book set book_name = '红楼梦' where book_author like '%三%' or book_price > 20
10、查询出图书单价在6元以上且分类名称是散文的图书信息,从第三条取,取5条
select * from book inner join type on book.t_id = type.type_id where book_price > 6 and type_name = '金庸' limit 3,5
11、查询出图书名称为“西游记”的分类为耽美的图书作者
select book_author from book inner join type on book.t_id = type.type_id where book_name = '西游记' and type_name = '都市'
12、将图书价格大于20或者图书作者包含“王”的图书信息删除
delete from book where book_price > 20 or book_author like '%赵%'
13、查询出图书分类属于耽美,价格在5到15之间,姓李的发布的图书信息
select * from book inner join type on book.t_id = type.type_id where type_name = '耽美' and book_price between 5 and 30 and book_author like '%李%'
14、将图书名称中第二个字是”游“或者单价小于2的图书描述改为“aaaaa”
update book set book_desc = 'aaaa' where book_name like '_游%' or book_price < 2
15、查询出最便宜的图书信息,从第2条取10条
select * from book order by book_price asc limit 1,10
16、查询出图书分类为散文,图书价格在2到5之间,图书名称或者图书描述包含“中国你好”的最便宜的三件商品
17、select * from book inner join type on book.t_id = type.type_id where book_price between 2 and 100 and (book_name like '%宇%' or book_desc like '%宇%') order by book_price asc limit 3
18、将表数据清空
Delete from 图书表
Day10:
php操作mysql
一表:
查询列表:1个页面 show.php
1连库
2选库
3设置字符集
4写查询的sql语句
5执行查询的sql语句得到资源的数据类型
6定义一个空数组
7循环取把资源变成数组的数据 while循环 mysql_fetch_assoc(
资源)
8把一维空数组变成二维数组(把循环取的值赋给二维数组)
9遍历表格(二维变一维)
添加: 2个页面 add.php add_do.php
add.php
写:
表单
add_do.php
写:
1连库
2选库
3设置字符集
4接值(接收添加传来的值)
5写添加的sql语句
6执行添加的sql语句得到布尔(true/false)的数据类型
7判断条件为真跳到列表页
判断条件为假跳到添加页
删除: 1个页面 delete.php
1接收删除id
2连库
3选库
4设置字符集
5写删除的sql语句
5执行删除的sql语句得到布尔(true/false)的数据类型
6判断条件为真跳到列表页
判断条件为假跳到列表页
修改: 2 个页面 update.php update_do.php
update.php
写:
1>接收列表传来的修改id
2>连库
3>选库
4>设置字符集
5>根据传来的修改id写查询本条数据(为了给表单默认值)
6>执行sql语句判断类型
7>得到资源类型吧资源变成数组(不用循环)
8>修改表单
注意:修改表单和添加表单的区别:
1>修改表单有默认值 value
2>修改表单要写隐藏域 传修改id (input type="hidden"
value="<?php echo $list['id']?>" name="id")
update_do.php
1>连库
2>选库
3>设置字符集
4>接收修改传来的id和修改传来的数据
5>写修改的sql语句
6>执行修改的sql语句返回bool类型(true/false)
7>根据true或者false给出提示跳转
搜索:1个页面
1>在列表页写搜索标签,写一个form表单
2>form action="搜索页面"
3>搜索页面:
①连库
②选库
③设置字符集
④接收搜索传来的条件
⑤根据传来的搜索条件写搜索的sql语句
⑥执行搜索的sql语句
⑦定义空数组
⑧循环取数据赋给空数组里
关键字变红:
字符串替换
foreach($arr as $key=>$val)
{
$red = "<font color='red'>".张三."</font>";
$arr[$key]['username'] = str_replace('张三',$red,$val['username'])
}
Day11
跳转4种方式:
1>弹框跳
echo "<script>alert('登录成功');location.href='show.php';</script>";
2>超链接跳
echo "<a href='show.php'>删除失败,点击返回</a>";
3>几秒后自动跳
echo "删除成功,2秒后跳转";
header("refresh:2;url=show.php");
4>直接跳
header("location:show.php");
封装函数的思想:
1>建一个公共页面db.php
2>在公共页面里写公共函数
function connect()
{
连库
选库
设置字符集
}
function select($sql)
{
执行sql语句
定义空数组
循环取数据把资源变数组赋给空数组里
返回空数组(此时空数组不空了) 返回值返哪,哪调返哪
}
function select_one($sql)
{
函数名()
执行sql语句
返回将资源转成数组的数组
}
function delete($sql)
{
返回执行的sql语句
}
function update($sql)
{
返回执行的sql语句
}
function add($sql)
{
返回执行的sql语句
}
php页面调用:
1引入
当前文件夹引入:
include "./db.php";
include "db.php";
上一级文件夹引入:
include "../0327/db.php";
上一级的上一级引入:
include "../../0327/db.php";
2>调用函数
函数名()
注意:state
作用:状态改变
用在哪:上架、下架---通过、驳回、正在申请中---
回收站列表、和普通列表---代付款、已取消、已完成、退款待审核等等
值:0/1/2/3/4....
会话控制:
http协议:超文本传输协议(传输音频、视频、文本、图片)是一种无状态协议
不会记录用户访问信息
cookie:
用在哪:跨页面传值(跨页面存取)
防止非法登录,一个页面登录,下个页面直接用
怎么做:
存
setcookie("要存的名字","要存的值")-------会话cookie
setcookie("要存的名字","要存的值",过期时间)--------持久cookie
取
$_COOKIE["要存的名字"];
删除cookie(退出)
setcookie("要存的名字","",time()-1);
Day1
互联网:
网络和网络之间的通信连接
网站发展历程:
web1.0 特点:只能从网站获取一些信息,没有动态交互(静态网站)
web2.0 特点:有动态交互,评论、点个赞,关注(动态网站)
web3.0 特点:数字化,服务型(支付宝,小黄车,扫码)
php:
是什么:客户端脚本语言(客户端:坐在电脑前的人
脚本语言:自动执行,自动编译)
为什么:
1》开源产品,可以看源码
2》免费:人人可以使用
3》跨平台:windows、linux系统、apache/niinx web服务器
4》支持多种数据库:mysql、sqlserver、oracle
5》简单易学:代码简单
6》运行速度快
软件:
指的是电脑应用,桌面上的东西(杀毒、打字、聊天软件)
分类:
bs:浏览器+服务器端
特点:只需打开浏览器,输入网址即可访问(淘宝,京东)
cs: 可短+服务器端
特点:必须下载应用(电脑上是客户端,手机上是app)(陌陌,qq,酷狗)
应用领域:
中小型网站的开发 web应用系统开发
大型网站的业务逻辑结果展示 多媒体系统开发
Web办公管理系统 企业级应用开发
硬件管控软件的GUI
电子商务应用
day2
http协议:
超文本传输协议
传音频、文档、图片、视频
网站:
静态网站:
客户端发送请求(http请求)到web服务器 web服务器已文本的形式返回响应客户端
动态网站:
客户端发送请求(http请求)到web服务器 web服务器操作数据库,数据库把数据返给web服务器
web服务器再返回给客户端
环境搭建:wamp
w:windows: 操作系统 xp、win7、win8、win10
a: apache: web服务器
m: mysql 数据库
p: php语言
lamp
l:linux操作系统
a: apache: web服务器
m: mysql 数据库
p: php语言
步骤:
1》先安装web服务器 apache
D://wamp/apache
三大目录:
bin 程序命令目录
conf 配置文件目录conf/http.conf (apache的配置文件)
htdocs 网站访问根目录(就是咱们写代码的地方)
注意:只要修改配置文件里的东西都要重启apache
2》安装php (安装完php立即重启apache)
D://wamp/php
1》安装php的要加载apache2
2》php的配置文件: php/php.ini
3》怎么做:
1 新建一个php页面:
在apache/htdocs/下建一个xxx.php的文件
2 怎么显示报错信息
在php/php.ini display_errors 中的Off 改为 On
3 改默认时区
在php/php.ini date.timezone 中的;去掉 加上PRC
改完配置文件里的东西也要重启apache
4 php开始
<?php
//输出
echo
//防止中文乱码
header("content-type:text/html;charset=utf8");
//换行
echo "<hr/>" echo "<br/>";
//注释
// 单行
/*
* 多行
*/
//php信息
phpinfo();
//结尾不能
以英文分好结尾
//声明一个变量
//要求:
// 不能以数字开头,只能以下划线,字母开头
// 不能有特殊字符
// 见名识意
// 连接2个词语中间用_隔开
$变量名 = "值";
//连接2个字符串
.
//写法:
if(条件)
{
}
else
{
}
if(条件){
}else{
}
// = 赋值(后面赋值)
// == 判断是否相等(类型相同,值相同)
// === 全等
//表格快捷键
center>table>tr*2>td*3 按tab键
?>
day3
1>php8大数据类型
一 四种标量
①整型(整数) int
②浮点型(小数点) float
③字符型(由单引号''或双引号""包起来) string
④布尔型(真或假 true/false) bool
二 二种特殊
⑤资源 resource
⑥空 null
三 二种复合
7 数组 array
8 对象 object
输出:
1 echo :只能输出字符串的东西
2 print_r:字符串,数组都ok 但是不能输出数据类型
3 var_dump:字符串,数组,数据类型,数据长度
常量:
一旦定义就不发生改变的量
定义常量:
define("常量名","要给常量的值");
常量和变量的区别:
常量一旦定义不改变占据内存空间,变量经常改变,程序执行完后,变量自动释放内存
函数:
isset(要检测的变量) 检测变量是否设置
unset(要销毁的变量) 删除或销毁不必要的变量
empty(要检测的变量) 判断变量是否为空
预定义变量:
$_REQUEST 接受全部数据 以数组的形式展示出来
$_GET 接值
$_POST 接值
$_SERVER 获取服务器信息
get 和 post的区别:
①post传值比较安全,没有通过地址栏传递
get 通过地址栏传递,不是很安全
②不写method 默认get传递
写method="post" 通过post传
method 传值方式 action 提交地址
辅助函数:
die 终止程序 用于改错
exit 终止程序 用于改错
@ 屏蔽报错信息 但是错误依然存在
值传递:
赋值: 就是两个变量间的赋值传递,一方的改变不会影响另一个变量的值
地址传递: 就是两个变量间的加上&赋值传递,一方的改变会影响另一个变量的值
共同占据一个空间
赋值运算符: = 赋值
== 判断前后是否相等
+= 将右边的值加给左边
-= 将右边的值减到左边
% 取余
.= 将右边的字符加到左边
/= 将左边的值厨艺右边
逻辑运算符:
&& and 所有的都条件都满足才为真
|| or 只要有一个条件为真 等式就成立
! 不满足、不是、否(你真我假)
运算符:
> 大于
< 小于
>= 大于等于
<= 小于等于
跳转方法:
1》带有秒数自动跳转
echo "要写的内容";
header("refresh:2;url=要跳转的页面");
2》弹框跳转
echo "<script>alert('要写的内容');location.href='要跳转的页面'</script>"
3》超链接跳转
echo "<a href='要跳转的页面'>要写的内容</a>";
注意:
内单外双 "''" 对 单套单 '''' 错
内双外单 '""' 对 双套双 """" 错
day4
三大结构:
1》顺序机构:
一步步执行,没有分支,后者会覆盖前者
2》选择结构:
if() switch()
{
if(){ case "条件":
结果 break;
}
}else{
}
if(){
}else if(){
}else{
}
3》循环结构
for(初始值;结束值;步长)
{
}
while(条件)
{
}
//以上两个先判断再循环
do{
}while(条件) //先执行 在判断循环
函数:
分类:
系统函数:
不需自己定义,拿过来直接使用,unset(参数),implode(),explode()
自定义函数:
自己定义,自己调用自己定义的函数
定义:
function 函数名(形参1,形参2)
{
函数体
返回值(返回值返哪:哪调用返哪)
}
调用:
函数名(实参1,实参2)
函数功能:
1》1处多用
2》实现特定功能
3》这个月目标,用函数封装数据库
Day 5
字符串定义:
由单引号或双引号包起来的字符串
$str = ''
$str = ""
$str = <<<定义的字符串名字
给定义的字符串赋的值
定义的字符串;
单引号:不解析变量 $str='12345' echo '$str' //输出 $str
双引号:解析变量 $str='123456' echo "$str" //输出 12345
关于字符串长度的:
strlen(要查询长度的字符串) 返回值 是int 长度 eg: 7
关于字符串查找的:
strpos(要查找的字符串,要查找的字符) 返回值是int 该字符在字符串中首次出现的位置
strrpos(要查找的字符串,要查找的字符) 返回值是int 该字符在字符串中最后一次出现的位置
关于字符串截取的:
substr(要截取的字符串); 返回值 是截取后的字符串 特点:全都截取了 ,原来是啥 ,截取完后还是啥
substr(要截取的字符串,开始截取位置) 返回值 是开始截取位置到最后的字符串
substr(要截取的字符串,开始截取位置,截取长度) 返回值 是开始截取位置到规定的截取长度之间
关于字符串替换的:
substr_replace(要替换的字符串(你要在哪换),你要换成啥,从哪开始换,要换多长) 返回值
是替换后的字符串
str_replace(要换啥,换成啥,要替换的字符串(你要在哪换))
验证邮箱是什么类型思路:
1》先找@出现的位置
2》再找.出现的位置
3》截取@到.之间的字符
隐藏手机号:
1》字符串替换 substr_replace("13115454133","<font color='red'>****</font>",3,5);
变红:
2》str_replace("赵温柔","<font color='red'>赵美丽</font>","八维以北,赵温柔最美")
注意: $str = "hello";
h 0
e 1
l 2
l 3
o 4
Day5
php验证:
验证用户输入的是否正确如果正确就继续走,展示不正确给出错误提示返回添加页面重新添加
注意:
html表单页面要写for循环语句
<?php
for($i=1;$i<=10;$i++)
{
?>
要循环的东西
<?php
}
?>
数组定义:
一堆数据的集合(数字,字符串等组成)
分类:
索引数组:
下标全都是数字的数组称为索引数
关联数组:
下标只要有一个是字符串的数组称为关联数组
分为:
一维数组、二维数组、多维数组
一维数组:
$arr = array("hello","world","lisa") 数组间用,隔开
单个取值
$arr[下标]
删除
unset($arr[下标])
改
$arr[下标] = "要改的值";
循环取值
①
for($i=0;$i<count($arr);$i++) 获取数组的长度 count(数组)
{
echo $arr[$i];
}
②
foreach($arr as $key=>$val)
{
$key就是键就是下标
echo $val $val 是下标所对应的值
}
二维数组:数组里的键又套一层数组
$arr = array("hello","world","lisa",array()) 数组间用,隔开
单个取值
$arr[外层下标][里层下标]
删除
unset($arr[外层下标][里层下标])
改
$arr[外层下标][里层下标] = "要改的值";
循环取值
①
for($i=0;$i<count($arr);$i++) 获取数组的长度 count(数组)
{
if(is_array($arr[$i]))
{
for($j=0;$j<$arr[$i];$j++)
{
echo $arr[$i][$j]
}
}else{
echo $arr[$i];
} is_array(要检测的字符串)
}
获取当前时间的时间戳
time()
将时间戳转化为年月日,时分秒
date("Y-m-d H:i:s",要转化的时间戳);
Day7
关联数组:
不管是几维数组,只要下标有字符串的数组就是关联数组
定义一维关联数组:
$arr = array("username"=>'值',"age"=>'值') 关键字:=> 键值和键值之间用,隔开
查询一维关联数组
$arr['username'];
删除一维关联数组的键值
unset($arr['username']);
追加一维关联数组的键值
$arr['hobby'] = 值
修改一维关联数组的键值
$arr['username'] = 你要改的值
循环取一维关联数组的值
foreach($arr as $key=>$val)
{
$val 就是值
$key 就是键就是下
}
定义二维关联数组:
$arr = array(array("username"=>'值',"age"=>'值'),
array("username"=>'值',"age"=>'值'),
array("username"=>'值',"age"=>'值'),
) 关键字:=> 键值和键值之间用,隔开
查询二维关联数组
$arr[外层下标]['username'];
删除二维关联数组的键值
unset($arr[外层下标]['username']);
追加二维关联数组的键值
$arr[外层下标]['hobby'] = 值
修改二维关联数组的键值
$arr[外层下标]['username'] = 你要改的值
循环取二维关联数组的值(先循环取外层,在循环取内层的值)
foreach($arr as $key=>$val)
{
$val 是一维关联数组
$key 是外层的键
foreach($val as $k=>$v)
{
$k 是一维关联数组的键
$v 是一维关联数组的值
}
}
总结:取二维数组的值就是二维变一维2层foreach
索引数组和关联数组取值的区别:
索引数组取值可以用for/foreach
关联数组取值只能用foreach
Day6
数组函数:
从属于系统函数
将数组分割成字符串
implode(分割符,要分割的数组) 返回值是分割完后的字符串
将字符串拼接成数组
explode(分割符,要拼接的字符串) 返回值是拼接后的数组
获取数组的键
array_keys(数组) 返回值是数组的键(也是数组)
获取数组的值
array_values(数组) 返回值是数组的值(也是数组)
将数组合并
array_merge(要合并的数组) 返回值是合并后的数组
将数组排序
sort(要排序的数据) 返回值是true或false 输出你排序的数据就是最新数组
根据数组的值返回数组的键
array_search(值,数组) 返回值如果找到该值返回键 否则返回false
查看一个数组是否存在该键
array_key_exists(键,数组) 返回值 是true 或 false
求数组元素个数/数组长度
count(数组) 返回值是数组长度 int型
将数组键和值互换位置
array_flip(数组) 返回值是换过后的数组
Day7
数组之间的相互转化
二维变一维:foreach{} 要是循环取数据就再来一层
eg:
$arr3=array(
array("username"=>"小明","sex"=>"男","age"=>"20") ,
array("username"=>"小白","sex"=>"男","age"=>"16") ,
array("username"=>"小黑","sex"=>"男","age"=>"22") ,
);
echo "<table border=1px>";
echo "<tr><td>姓名</td><td>性别</td><td>年龄</td><td>电话</td></tr>";
$arr3[0]['telephone']="123";
$arr3[1]['telephone']="rerw";
$arr3[2]['telephone']="rewre";
//二维变一维
foreach($arr3 as $key=>$val)
{
$val['username'] = str_replace("小", "<font color='red'>小</font>", $val['username']);
$val['age'] = 23;
//$val['telephone'] = "17701263468";
echo "<tr>";
//循环取一维数组里的值
foreach ($val as $k => $v)
{
echo "<td>";
echo $v;
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
一维变二维:
1》写foreach
2》定义一个新数组$data
3》找规律往$data填东西
eg:
$u_id = 2;
$a_id = array(2,3,4);
foreach($a_id as $key=>$val)
{
$key 012
$val 234
$data[$key]['u_id'] = $u_id;
$data[$key]['a_id'] = $val;
}
二维变三维:
1》写foreach
2》定义一个新数组$data
3》找规律往$data填东西
eg:
$arr = array(
array("username"=>"耿红娟","age"=>24,"sex"=>"女"),
array("username"=>"申忠龙","age"=>23,"sex"=>"男"),
array("username"=>"李朋","age"=>25,"sex"=>"男"),
array("username"=>"张立伟","age"=>30,"sex"=>"男"),
);
//二维变三维
foreach ($arr as $key => $value) {
//首先把值赋给一个新的变量
$v = $value;
unset($v['sex']);
$data[$value['sex']][] = $v;
}
特点:如果要是有连续的下标 一般是$key键
如果下标断续的话 给一个空数组[]
Day8
doc命令 (小黑框命令行)
1 打开命令行 windows+r
2 进入cmd
3 进入mysql命令行 mysql -uroot -proot
4 查看自己的所有库 show databases;
5 创建一个数据库 create database 库名; eg:create database 1510phpe;
选择数据库 use 数据库名 eg:use 1510phpe
6 查看所有表 show tables;
7 创建表 create table 表名(
数据库字段 数据存储类型,
)
eg:
create table user(
id int auto_increment,
username varchar(50),
password char(30),
age int,
sex char(30),
date datetime
);
8 查看表会多一个表 show tables; 会多出一个user表
9 对user表进行操作
1>向表里添加数据
insert into 表名(字段1,字段2...) values(值1,值2...);
eg:
insert into user(username,password,age,sex,date) values('shuai','123456','16','man','2017-03-18');
2>查询表里的数据
全查:
select * from 表名
eg:
select * from user;
查一部分字段所对应的值
select 字段1,字段2 from 表名
eg:
select username,password from user;
3>向表里修改数据
update 表名 set 字段1=值1,字段2=值2 where id = 你想要改的id
eg:
update user set username ='ugly',age = '18',sex='girl' where id = 1;
4>在表里删除数据
delete from 表名 where id = 你要删除的id
eg:
delete from user where id = 1;
删除数据库:
drop database 库名
eg:
drop database 1510phpe;
删除表
drop table 表名
eg:
drop table user;
Day9
mysql一表:
添加:insert into 表名(字段1,字段2...) values ('值1','值2'...)
查询:select * from 表名; // 查所有
select 字段1,字段2 from 表名 //查指定字段
select * from 表名 where id = 1 //查询id=1的数据一般用于修改里
删除:delete from 表名 //清空表里的数据
delete from 表名 where id in(1,2,3) //删除id为123的数据
delete from 表名 where id = 1 //删除id为1的数据
修改:
update 表名 set 字段1='值1',字段2='值2'... where id = 2
mysql二表:
添加:insert into 表名(字段1,字段2...) values ('值1','值2'...)
查询:select * from 主表 inner join 次表 on
主表的关联id=次表的自增id; // 查2表所有所有
select 两表字段名 from 主表 inner join 次表 on
主表的关联id=次表的自增id; //查2表指定字段
select * from 主表 inner join 次表 on
主表的关联id=次表的自增id where id = 主表或次表的id //
查询id=1的数据一般用于修改里
删除:delete from 表名 //清空表里的数据
delete from 表名 where id in(1,2,3) //删除id为123的数据
delete from 表名 where id = 1 //删除id为1的数据
修改:
update 表名 set 字段1='值1',字段2='值2'... where id = 2
排序:
order by:
用在哪:最贵、最便宜、最大、最小
怎么用:order by id desc
order by id asc (默认)
条件:
where
用在哪:姓名里有某某、删除、修改、查询等只要有判断条件的
怎么用:
where id = 1;
where name like '%张三%';
where add_time > 2017-03-22
等
限制条数:
limit
用在哪:取前几条,取数据的范围,分页里
怎么用:
limit 0,3 从第一条开始取 取三条数据
limit 3 从第一条开始取 取三条数据
limit 2,5 从第三条开始取 取五条数据
区间:
between and
用在哪:范围、区间、按照开始时间到结束时间搜索、或者大于xxx小于aaa的区间
怎么用:
where add_time between 2017-03-19 and 2017-03-22
where num between 3 and 100
模糊查询:
like
用在哪:查询名字里带张,或者带三啊或者搜索(一般用于汉字)
怎么用:
where name like '%张%'; 匹配姓张的
where name like '_张%' 匹配第二个姓张的
% 匹配任意多个字符 _匹配任意一个字符
例子:
1、两表联查,查询出所有的图书信息
select * from book inner join type on book.t_id = type.type_id
2、查询出小说分类下的所有图书信息
select * from book inner join type on book.t_id = type.type_id where type_name = '耽美'
3、将图书价格在10到20之间的图书名称修改为西游记
update book set book_name = '西游记' where book_price between 10 and 20
4、查询出图书名称或者图书描述中包含有aaaa的图书信息
select * from book inner join type on book.t_id = type.type_id where book_name like '%西游记%' or book_desc like '%一个女人%'
5、查询出分类名称是名著或者作者姓张的图书信息
select * from book inner join type on book.t_id = type.type_id where type_name = '金庸' or book_author like '%张%'
6、将张三发布的图书信息删除\
delete from book where book_author = '张三'
7、查询出最贵的三件图书信息
select * from book inner join type on book.t_id = type.type_id order by book_price desc limit 3
8、将图书作者中包含”三“或者商品价格在2元以上的图书名称修改为红楼梦
9、update book set book_name = '红楼梦' where book_author like '%三%' or book_price > 20
10、查询出图书单价在6元以上且分类名称是散文的图书信息,从第三条取,取5条
select * from book inner join type on book.t_id = type.type_id where book_price > 6 and type_name = '金庸' limit 3,5
11、查询出图书名称为“西游记”的分类为耽美的图书作者
select book_author from book inner join type on book.t_id = type.type_id where book_name = '西游记' and type_name = '都市'
12、将图书价格大于20或者图书作者包含“王”的图书信息删除
delete from book where book_price > 20 or book_author like '%赵%'
13、查询出图书分类属于耽美,价格在5到15之间,姓李的发布的图书信息
select * from book inner join type on book.t_id = type.type_id where type_name = '耽美' and book_price between 5 and 30 and book_author like '%李%'
14、将图书名称中第二个字是”游“或者单价小于2的图书描述改为“aaaaa”
update book set book_desc = 'aaaa' where book_name like '_游%' or book_price < 2
15、查询出最便宜的图书信息,从第2条取10条
select * from book order by book_price asc limit 1,10
16、查询出图书分类为散文,图书价格在2到5之间,图书名称或者图书描述包含“中国你好”的最便宜的三件商品
17、select * from book inner join type on book.t_id = type.type_id where book_price between 2 and 100 and (book_name like '%宇%' or book_desc like '%宇%') order by book_price asc limit 3
18、将表数据清空
Delete from 图书表
Day10:
php操作mysql
一表:
查询列表:1个页面 show.php
1连库
2选库
3设置字符集
4写查询的sql语句
5执行查询的sql语句得到资源的数据类型
6定义一个空数组
7循环取把资源变成数组的数据 while循环 mysql_fetch_assoc(
资源)
8把一维空数组变成二维数组(把循环取的值赋给二维数组)
9遍历表格(二维变一维)
添加: 2个页面 add.php add_do.php
add.php
写:
表单
add_do.php
写:
1连库
2选库
3设置字符集
4接值(接收添加传来的值)
5写添加的sql语句
6执行添加的sql语句得到布尔(true/false)的数据类型
7判断条件为真跳到列表页
判断条件为假跳到添加页
删除: 1个页面 delete.php
1接收删除id
2连库
3选库
4设置字符集
5写删除的sql语句
5执行删除的sql语句得到布尔(true/false)的数据类型
6判断条件为真跳到列表页
判断条件为假跳到列表页
修改: 2 个页面 update.php update_do.php
update.php
写:
1>接收列表传来的修改id
2>连库
3>选库
4>设置字符集
5>根据传来的修改id写查询本条数据(为了给表单默认值)
6>执行sql语句判断类型
7>得到资源类型吧资源变成数组(不用循环)
8>修改表单
注意:修改表单和添加表单的区别:
1>修改表单有默认值 value
2>修改表单要写隐藏域 传修改id (input type="hidden"
value="<?php echo $list['id']?>" name="id")
update_do.php
1>连库
2>选库
3>设置字符集
4>接收修改传来的id和修改传来的数据
5>写修改的sql语句
6>执行修改的sql语句返回bool类型(true/false)
7>根据true或者false给出提示跳转
搜索:1个页面
1>在列表页写搜索标签,写一个form表单
2>form action="搜索页面"
3>搜索页面:
①连库
②选库
③设置字符集
④接收搜索传来的条件
⑤根据传来的搜索条件写搜索的sql语句
⑥执行搜索的sql语句
⑦定义空数组
⑧循环取数据赋给空数组里
关键字变红:
字符串替换
foreach($arr as $key=>$val)
{
$red = "<font color='red'>".张三."</font>";
$arr[$key]['username'] = str_replace('张三',$red,$val['username'])
}
Day11
跳转4种方式:
1>弹框跳
echo "<script>alert('登录成功');location.href='show.php';</script>";
2>超链接跳
echo "<a href='show.php'>删除失败,点击返回</a>";
3>几秒后自动跳
echo "删除成功,2秒后跳转";
header("refresh:2;url=show.php");
4>直接跳
header("location:show.php");
封装函数的思想:
1>建一个公共页面db.php
2>在公共页面里写公共函数
function connect()
{
连库
选库
设置字符集
}
function select($sql)
{
执行sql语句
定义空数组
循环取数据把资源变数组赋给空数组里
返回空数组(此时空数组不空了) 返回值返哪,哪调返哪
}
function select_one($sql)
{
函数名()
执行sql语句
返回将资源转成数组的数组
}
function delete($sql)
{
返回执行的sql语句
}
function update($sql)
{
返回执行的sql语句
}
function add($sql)
{
返回执行的sql语句
}
php页面调用:
1引入
当前文件夹引入:
include "./db.php";
include "db.php";
上一级文件夹引入:
include "../0327/db.php";
上一级的上一级引入:
include "../../0327/db.php";
2>调用函数
函数名()
注意:state
作用:状态改变
用在哪:上架、下架---通过、驳回、正在申请中---
回收站列表、和普通列表---代付款、已取消、已完成、退款待审核等等
值:0/1/2/3/4....
会话控制:
http协议:超文本传输协议(传输音频、视频、文本、图片)是一种无状态协议
不会记录用户访问信息
cookie:
用在哪:跨页面传值(跨页面存取)
防止非法登录,一个页面登录,下个页面直接用
怎么做:
存
setcookie("要存的名字","要存的值")-------会话cookie
setcookie("要存的名字","要存的值",过期时间)--------持久cookie
取
$_COOKIE["要存的名字"];
删除cookie(退出)
setcookie("要存的名字","",time()-1);