BOM基础+MySQL和PHP基础

266 阅读6分钟

BOM

        常用对象:window、screen、history、location、navigator、event

history:保存当前窗口的历史记录(历史url)

作用:
  前进:history.go(1);
  后退:history.go(-1);
  刷新:history.go(0);

location:保存当前窗口的正在打开的url

       1、常识:一个url由5部分组成
       协议:http/https(请求响应模式)/ftp(传输文件)/ws(广播收听模式:直播) - 网页的功能不同
	主机号/域名:www.baidu.com/127.0.0.1 - 主机号不方便记忆所以多半都会购买域名,而且127.0.0.1只能访问自己
	端口号::8020 - 默认端口:http - 80 https - 443,默认端口可以省略不写
	文件的相对路径:new/01-3.html  /s -百度加密了
	查询字符串:?wd=178&rsv_spt=1... - 表单提交到服务器的东西 - 请求消息
       2、属性:不需要记忆,直接用console.log(location)可以查看到有哪些属性
	作用:获取:协议、域名、端口号、文件路径、查询字符串
       3、API:跳转
	 location="新url"
	 location.href="新url"
	 location.assign("新url");

	 以上三个操作功能相同都是跳转页面,意味着以后不一定非要用a标签跳转

	 替换后禁止后退:location.replace("新url")

	 刷新:location.reload();

navigator:保存了当前浏览器的信息(浏览器的名称/版本号)

          属性:navigator.userAgent;

	根据字符串截取出浏览器名称&版本号:本来的目的是为了做兼容,但是没用
	因为所有的API前辈们都已经设置好了兼容

event:事件对象

1、绑定事件:3种

	1、在HTML元素上绑定
		<elem on事件名="js语句"></elem>

		缺点:
		  1、没有实现JSHTML的分离 -HTML(内容)/CSS(样式)/JS(行为)分离
		  2、无法动态绑定事件 - 一次只能绑定一个元素
		  3、无法同时绑定多个函数对象

	2、使用JS的事件属性绑定:
		elem.on事件名=function(){
			js语句
		}
		
		优:1、实现JSHTML的分离
		    2、动态绑定事件
		缺:1、无法同时绑定多个函数对象 - 算不上是缺点,为什么不写一起

	3、使用JSAPI绑定事件:
		主流:elem.addEventListener("事件名",callback)
		老IEelem.attachEvent("on事件名",callback);
		兼容:if(elem.addEventListener){
			 elem.addEventListener("事件名",callback)
		      }else{
			 elem.attachEvent("on事件名",callback);
		      }

		优:1、实现JSHTML的分离
		    2、动态绑定事件
		    3、同时绑定多个函数对象
		缺:需要处理兼容性问题

2、事件周期:

   主流:3个
	1、捕获阶段:由外向内,记录着要执行的事件
	2、目标触发:当前点击的元素优先出发
	3、冒泡触发:由内向外的冒泡触发事件
   老IE:2个
	没有捕获阶段
            
            

3、获取到事件对象event:

主流:事件函数中传入一个形参e,就可以自动接住事件对象event
	老IE:window.event;
	兼容:event;不光老IE可用,主流浏览器也可以使用 - 小三上位

	获取到了事件对象event就可以做很多很多的操作了:
	  1、获取鼠标的位置

	  2、阻止冒泡:重要在于面试中/鄙视中,但是开发中绝对不会阻止冒泡,更需要利用冒泡
		主流:e.stopPropagation();
		老IE:e.cancelBubble=true;
		兼容:if(e.stopPropagation){
			e.stopPropagation()
		      }else{
			e.cancelBubble=true;
		      }

	  3、事件委托(利用冒泡):
		为什么:优化,每绑定一个事件,相当于就创建了一个事件监听对象,创建的对象越多,网页的性能越底下
		  建议:建议把事件都绑定在自己的父元素身上一次即可
		获取目标元素:触发的元素 - 永远不变就是你触发到的元素
			      当前元素:this -> 指向多的一批
		  主流:e.target;
		  老IE:e.srcElement;
		  兼容:e.srcElement;不光老IE可用,主流浏览器也可以使用 - 小三上位
		  以后事件之中再也不要使用this了

		做一个:计算器、选项卡、轮播...

	  4、阻止浏览器的默认行为:
		哪些:比如:F5带来的刷新,F12带来的控制台,右键带来的菜单框,F11全屏,a自带跳转,submit自带提交...
		主流:e.preventDefault();
		老IE:e.returnValue=false;
		兼容:if(e.preventDefault){
			e.preventDefault()
		      }else{
			e.returnValue=false;
		      }
		
		新事件:
		  1、鼠标右击:window.oncontextmenu
		  2、键盘事件:window.onkeydown

	  5、获取键盘的键码
		e.keyCode;//不需要记忆,直接输出查看 或 百度 keyCode表
            

MySQL基本内容

访问:

1、图形化界面(更简单更方便) - 傻瓜操作
   要求:同时打开mysql和apache
   访问:127.0.0.1:端口号/phpmyadmin
	 localhost:端口号/phpmyadmin

2、命令行方式 -

如何进入数据库:
		必须打开mysql
		1、打开cmd
		2、输入:cd d:/xampp/mysql/bin 回车
		3、登录:mysql -uroot -p 回车 不要加分号
		4、退出:exit

SQL语句

1、数据库:
				创建数据库:CREATE DATABASE IF NOT EXISTS 数据库名称 CHARACTER SET utf8;

				查看数据库:SHOW DATABASES;

				切换数据库:USE 数据库名称;

			2、数据表:
				数据库的数据类型:
					数值:Int-整型
					      Float/Double-浮点型
					      DECIMAL-精确值
					字符串:
					      CHAR - 长度固定的
					      VARCHAR - 长度可变的
					日期:
					      DATE - YYYY/MM/DD
					      DATETIME - YYYY/MM/DD hh:mm:ss
					      TIMESTAMP - 时间戳(标识:唯一不重复的)

				创建数据库表:
					CREATE TABLE 表名(
						字段名 数据类型,
						...
					);

					举例:
					CREATE TABLE user(
						id INT PRIMARY KEY AUTO_INCREMENT,
						name VARCHAR(30),
						pwd VARCHAR(30),
						email VARCHAR(30),
						vip VARCHAR(1)
					);

					主键约束:PRIMARY KEY
					主键自增:AUTO_INCREMENT            
            

数据:4句以后最常用的操作

增:INSERT INTO 表名 VALUES(字段值,...);
				    举例:INSERT INTO user VALUES(0,"xxx","123123","ljj@qq.com","1");

				删:DELETE FROM 表名 WHERE id=几;
				    举例:DELETE FROM user WHERE id=3;

				改:UPDATE 表名 SET 字段名=字段值,... WHERE id=几;
				    举例:UPDATE user SET name="xx",email="yongyan@qq.com" WHERE id=4;					

				查:3种语法:
				    SELECT * FROM 表名;//获取此表所有的数据
				    SELECT * FROM 表名 WHERE id=几;//获取id为几的那一条数据
				    SELECT 字段名,... FROM 表名;//获取此表所有的对应的字段值
            
            

PHP:最简单的一门后端语言

1、如何运行php文件:

打开apache,并且将你的项目放到htdocs文件夹中,打开浏览器输入:127.0.0.1:端口号,打开你需要的文件
  
特殊:其实PHP文件也支持前端代码和PHP代码,以后我们上网时,看到网页后缀.php也不必惊讶 - 比js严格

2、PHP语法基础:

1、输出方式:
	1echo(想要输出的内容); 或 echo 想要输出的内容; - 只能输出4种标准类型,不能输出别的
	2var_dump(想要输出的内容);//输出数据类型和值
		缺点:1、输出的太过完整,以后PHP只要输出在页面上的东西,都会被前端使用ajax拿走
		      2、复合类型暂时也只能用var_dump输出 - 以后不会再用了
	
2、变量和常量:
       1、变量:值可以改变
	   语法:$变量名=值;
	   注意:使用时$也不能省略

	2、常量:值一旦创建,不可以改变
	   语法:const 常量名=值;

3、数据类型:
	四种标准/基础类型:
		整型:Int
		浮点型:Float/Double
		布尔:Boolean
		字符串:String - 不太一样
			单引号:直接放纯文本

			双引号:支持放入变量
				echo "我的名字叫{$name}今年{$age}岁喜欢{$hobby}";

	两种复合类型:
		1、Array - 数组
		   创建:
		     1、直接量:$arr=[值1,....]; - 索引数组
		     2、内置函数:$arr=array( - hash数组。其实就是对象
					"key"=>value,
					...
				  )

		   访问:$数组名[下标/"自定义"]

		   遍历:循环

		2、Object - 面向对象

	两种特殊类型:
		1、Resource - 资源类型:连接上数据库才会看到
		2、Null - 释放内存
			"" - 有值,值为空
			null - 没有

4、运算符:除了一个不同:字符串的拼接使用的是.

5、分支:完全一样

6、循环:完全一样

7、函数:完全一样

8、API:理论上完全一样,但是操作却不同,不需要做任何的记忆,百度搜索