thinkphp- 许愿墙-1
控制器的方法, 要显示的模板默认的跟方法名相同. 也可以不同, 但应该 仍然是对应文件夹下的html模板文件:
$this->display('其他的模板html文件名, 不用加html扩展名');
在windows图形界面下, 可以支持 "/" 和 ""两种路径分隔符, 但是在cmd下, 只能用 ""
wamp包括: Apache2, php, mysql , logs lang, www等文件夹, 和一些可执行文件, 如wampserver.exe等
一般情况下, 建议都使用mysql的控制台, 只有特殊情况下才用web可视化视图管理.
mysql的控制台文件: c:\wamp\mysql\bin\mysql.exe
可以设置控制台的属性, 如窗口宽度=110, "保存属性, 供以后 具有相同标题 "C:\wamp\mysql\bin\mysql.exe" 的窗口使用!"
mysql数据库: use db_name; //指的是你要使用哪一个数据库
/--------------------------------/
mysql控制台常用 命令
显示命令: (显示所有的数据库和 某个库中的所有表)
show databasees;
show tables
// 注意, 两个显示都要用 复数! 因为是显示所有的数据库 或所有的表. 不是特指哪一个...
// 提示, mysql好像也是用c语言写的, 所以他的命令, 也要求用分号; 结束.修改表
alter tabletable_name
//(alter语句)
/*------------------
- 特别注意的是: mysql里面(或者说这个5.0.45的版本) 跟sql server有所不同, 里面都不加 关键字 column!
------------------/
addcolumn_name
datatype;
dropcolumn_name
;
changecolumn_name
column_name
datatype; (是change, 不是alter!)
// 在sql语句中, 要养成 加反引号的习惯: 给 数据库/表/字段 名称加上反引号, 跟其他字段和关键字相区别 !!
字段名也可以 在任何时候 都加上 反引号! 包括insert select语句中的where 子句中的字段名也可以加反引号.
- 查看表的结构:
describe foo_table;
// 好像就只有这个命令 关键字可以简写为: desc;
- 给mysql服务器设置 user用户root密码后, 无法登陆服务器, 错误error 1130?
/* 好像是 很严重的问题, 设置root密码后, 控制台和phpMyAdmin都不能登陆
* error 1130: the host "localhost" is not allowed to connect to the Mysql Server
*****/
# Solve 1130 error:
skip-name-resolve
skip-grant-tables
- 连接mysql服务器及数据库等命令:
连接:
mysql -uroot -p123; // 本机上的mysql
// -u指定用户, -p指定密码, 中间可以加空格也可以不加空格
连接 远程服务器, 非本地机器, 需要指定 -h localhost
// 也可以修改 "mysql" 数据库中的 "user" 表, 里面的Host字段值为 "%".
// 百分号就表示 百分百的可以连接, 允许远程客户端 连接mysql服务器
update mysql.user
set Host='%'
where User='root';
要修改mysql服务器上的用户密码, 主要还是通过 phpMyAdmin来实现,
用update语句
update mysql.user
set password='root'
where User='root';
- mysql的服务名是?
用wamp安装的mysqld的服务名称不是: mysqld, 而是 wampmysqld.
===========================================================
对于列表, 可以使用图标进行形象化: /* iconic view for ul items */
li#database {
list-style-image: url('...');
list-style-type: circle(圆, 环,是空心的)/disc(圆盘,唱片, 是实心的)/还可以是任意的罗马/希腊等数字字母
}
最需要注意的是: list-style-type是 仅仅针对 列表的li 而言的, 而不管这个li是在ul还是ol中!
ul同样可以使用数字,字母来列序, ol同样也可以使用 circle,disc, square等等来列序.
也就说, ul/ol都可以通过css style 使用相同的数字/图形化的列表符.
列表项目标志 : 的位置: 有inside/outside, 默认的是outside.
inside: 项目标志放在列表项的内容里面, 列表内容根据标志来对齐.
outside: 项目列表标志 放在列表项的内容外面, 不根据标志对齐.
////// 注: 通过 给列表内容加上 边框 就可以看得很清楚了.
当给每个列表项加上边框的时候, 中间相邻的边框看起来 宽度就会加粗, 等于原本边框的2倍, 这时可以添加一个类,让它们的
下边框宽度等于0:
ol .no-bottom {
border-bottom-width: 0;
}
==========================================
有时候, 看到横着的一条 分割线?
分割线不一定都是
有时候, 有时候可以 利用 border-top 或者 border-bottom来实现, 而且还可以用 margin-top
margin-bottom来调整相邻元素的垂直距离等等
==========================================================
两个div 水平并列的css设置:
需要: 它们: float: left; width:49%. // 为了准确起见, 不用 刚好设置成 50%, 留一点空西 更安全!
=====================================================================
css中的 相对尺寸?
通常在css中 , 要表示更大/更小的尺寸, 通常/最好/推荐 使用 百分比, 而不是使用具体的 写死的数值
如: font-size: 120%,
在 "需要自适应 宽度/高度" 的时候, 也推荐使用 百分比来写! 如上面的width: 49%
=============================================================================
css中的background-image?
background-image中的url地址可以不用 引号: 如: background-image: url(./img/xxx.png);
background-repeat表示是否重复: 默认的是repeat都重复: 共有4种: repeat, repeat-x, repeat-y, no-repeat.都是以repeat开始打头的;
background-position: 是说背景图像的起始位置, 两种理解都可以:
a. 包围背景图像构成的方框/ 盒子的左上角 的坐标;
b. 或者说是: 包围背景图像构成的方框/ 盒子, 离容器的左边距离和 离容器的上边的距离.
这两种说法都是可以的, 注意都是 以 容器的盒子的 左上角的坐标 为(0,0) 或(0%, 0%).background-position的指定方法有3种:
a 关键字法: 垂直方向top center bottom 水平方向 left center right. 注意两个方向上 居中都是center
b 百分比法: 0%, 0%左上角, 100% , 100%右下角
c 数值法: 0px, 0px, ....
指定时, 可以用百分比法和数值法混用.
如只指定一个值, 则第二个值将 默认为: center 或者为 50%. 即垂直方向居中布局.
如果指定了background-image的位置后, 由于background-image本身占用一定的位置(包括水平的/垂直的), 因此, 要使后面的
文字内容等, 要保持较好的布局时, 通常: ""background-position""属性 应该和 padding: 相搭配使用, 利用padding-left将
背景图片的位置给 腾出来!!
background-attachment: 规定图片在屏幕上的付着关系.
默认的是scroll, 滚动, 背景图片跟随 其他内容的滚动而滚动, 这个也是绝大多数情况下的值.
fixed, 固定, 那么背景图片固定在桌面上, 不会随其他内容的滚动而滚动, 不随垂直/水平滚动条的滚动而移动! 这个一般不用.
写css 时, 如果能够将 一个规则的 多个子规则合起来写的, 就尽量合起来写! 这样更简洁. 可以说这也是一种风格和习惯!
mysql的 日期和时间 类型
- mysql中的select就是输出, 选择...的意思, 相当于其他语言中的 print, echo等等.
- date是日期年月日, time是时间HH:MM:SS. 同时获取 date+time的函数是: now();
列类型 需要的存储量
DATE 3 个字节(yyyy-mm-dd)
TIME 3 个字节(hh:ii:ss)
datetime 4个字节(yyyy-mm-dd hh:ii:ss) // 是日期和时间的组合
YEAR 1 字节
TIMESTAMP 4 个字节
DATETIME 8 个字节
================= ====================
mysql中的null与空值?
在mysql中, 不区分大小写,字段名和函数都不区分大小写, 因为mysql引擎最后都会转换为全部大写!
所以, null=Null=NULL
注意null不是 "空" :真的空, 如同 杯子放在真空中, 确实什么都没有, 不占存储空间, 用 空的引号来表示空值: '', "".!!!
而null是 如同" 杯子放在空气中" , 是要占1个字节的空间的.
注意: 在命令行和phpMyadmin图形界面 还是有区别的! 它们使用的一些命令都是不同的, 要记忆命令行的!
mysql定义表, 字段 采用的是 一种 自然语言 描述性的 语法, 直接书写:
alter table foo
change `col1` `col1` int unsigned auto_increment; (一般不写这个not null, 因为auto_increment字段的默认值就是null);
// unsigned 表示大于等于0, 不能为负数, 注意的是: "int 等数字类型的字段, 不能指定字符集 和 collate? )!!!"
// "非数字类型如 char, varchar等 类型 的字段, 才能指定字符集 和 collate? )!!!"
// 以后写字符集都统一写成 utf8, 后面的collate(校对, 不是collation)是 utf8_gerneral_ci( 不是generic)
not null的允许取值是: 'abc有具体的实在的内容...', 或者为空值 '', "".
=================================================
- 即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD 或 YYMMDD。
如果某个字段的值为'', 那么判断该字段值 <>'', 和is not null的结果是不同的:
select * from foo
where bar
is not null; 这时包含该字段值的行会被返回;
select * from foo
where bar
<> '' // 这时 包含该字段值的行不会被返回
使用phpmyadmin跟mysql控制台还是有区别的,
比如在insert时, 如果某个字段not null类型, 你不输入, phpmyadmin会自动给你加上空值'' 或id的NULL
而用控制台, 则必须显式的输入NUll, 空值''.
INSERT INTO `test`.`foo` (
`id` ,
`name` ,
`col1` ,
`col2`
)
VALUES (
NULL , '', '', NOW( )
);
在对数据库的表 进行 增删改查的时候, 可以允许, 同时进行多个相同的操作:
// 插入的时候, 将多个要插入的数据集 用括号括起来, 用逗号隔开就可以
insert foo
values(NULL, '', ''), (Null, 'abc', '123'),(...);
// 删改的时候, 就写多个同样的子句, 用逗号隔开:
alter table foo
drop col1
,
drop col2
;
alter table phper
change col1
col1
....,
change col2
col2
....;
==============================================
因为一般字段都会设计为 not null, 同时为了避免在插入记录时 的问题, 都会设置默认值: default '';
mysql的语句都是"自然语言". 在创建表foo时, foo(字段记录描述)+ 接着 其他特征描述, 如: engine myisam default charset utf8;
如何选择mysql的存储引擎?
主要有myisam, 和 innodb
一般来说:
myisam的适合场景: 默认存储引擎, 小项目, 小规模数据, 增删改查速度块(读写高性能), 支持全文索引fulltext, 获得count(*)快, 因为该引擎中直接就有这个数据. 所以一般在小项目, 小demo中都是使用myisam.
innodb的适合场景: 大项目, 大数据, 高并发, 需要事务(资金交易), 存储过程, 外键支持, 故障检测和数据恢复要求高的.
count()操作对InnoDB很慢, 因为他要扫描整个表, 才能得到记录数...*
create table时, 有些描述可以有多种写法, 如: character set utf8, 也可以写为: charset utf8, 又如: engine=myisam, 也可以
写为 engine myisam.
在实际开发的时候, 对数据库的操作, 要先做自定义配置, 在项目的 Conf下配置:'DB_HOST' 'DB_PREFIX'等等.
thinkphp的url方法: U('Index/index');
可以通过在配置文件config.php的配置项来统一的修改
'URL_MODEL' => 0(传统的index.php?m=Index&a=index),
=> 1(pathinfo模式, index.php/Index/index)
=> 2(apache模式, 省略index.php...)
//// 推荐使用, 约定用法, 要有自己的 程序员习惯...
thinkphp中的 p方法:
function p($array) {
dump($array, 1, '<pre>',0);
}
// 1: 是否输出
// '<pre>'预加标签
// 0: 表示用print_r来打印
thinkphp的伪静态?
在配置config.php中设置:
'URL_HTML_SUFFIX' => 'html' 或者为'' // html可以是任意的, 如Php, asp, 一般用html对seo有好处,
thinkphp的U方法的参数:
U('地址如: Index/index', 传递给地址的参数array('user'=>'???', 'passwd'=>'???'), '伪静态的扩展名', '是否跳转','是否显示域名');
一般只用到前两个参数.
在form表单中使用控制器中的U方法传递地址?
<form action="{: U['当前控制器名称/] handle处理方法名称}" method="post"> ....</form>
在模板中的 {}, 就相当于 <?php .... ?>
在模板中的冒号: , 就相当于 echo 语句.
控制不能通过地址直接访问提交页面? 有两种方法?
可以用thinkphp的常量: IS_POST
可以用方法: $this->isPost();
错误处理方法有: _404方法和halt方法:
_404('错误提示信息/只有在调试模式下才显示', U('index')跳转地址);
halt('错误提示信息');
// _404方法本身就直接返回了, 其后不用再加return
thinkphp中获取 从前台 通过post方法 提交过来的表单 的内容 有三种方法
- 传统的$_POST['xxx'];
- 使用 $this -> _post('xxx'); // 使用thinkphp提供的 _post方法
使用新的 I方法: I('xxx'); // 好像也可以用于get方法提交过来的表单内容, 原来的用法是: I('post.username'), 可以直接就用: I('username').
// _post('xxx');方法, 默认的进行了 htmlspecialchars()函数进行了html实体化处理
// I('xxx', '为空时的默认值', 'htmlspecialchars附加的处理方法');
要获得全部的post表单, 使用 : I('post.')
thinkphp- 许愿墙-1的更多相关文章
- CentOS系统中基于Apache+php+mysql的许愿墙网站的搭建
1.首先,我们需要两台虚拟机(CentOS7,Linux文本). 2.给两台虚拟机配置网络环境分别为桥接模式 CentOS7 ip为192.168.100.139.24,linux文本ip为192.1 ...
- 基于Apache+php+mysql的许愿墙网站的搭建create database xyq; //创建xyq数据库
1.准备CentOS7与CentOS5的基础配置 2.在两台虚拟机中配置yum. 3.在CentOS7中安装httpd与php与php-mysql PS:截图时已安装 CentOS7 关闭防火墙与se ...
- 【jquery】jquery 实现许愿墙效果,可拖拽
最近整理做过的项目,发现有个许愿墙的效果,今天拿出来给大家分享下. 先简单的介绍下功能点: 随机显示背景图或背景色 出现的位置随机 可以通过拖拽改变位置 好了,附上代码: <!doctype h ...
- 许愿墙的搭建基于mysql
首先需要两个服务器(也可以用一台,但不推荐) 1服务器用yum安装Apache+php+php-mysql 2服务器用yum安装mysql 1服务器 用yum安装Apache和php+php-mysq ...
- 许愿墙的搭建(基于Apache+php+mysql)
一.准备部分:CentOS 7 , Linux 文本 各自配置好环境 二. CentOS 7准备如下: yum install httpd -y #安装httpd yum install php ...
- linux 搭建php网站许愿墙
网站素材在:https://i.cnblogs.com/Files.aspx 首先需要搭建本地yum源,详情参考: http://www.cnblogs.com/jw35/p/5967677.html ...
- 许愿墙JQ
<!doctype html> <html> <head> <meta charset="utf-8"> <t ...
- thinkphp学习笔记13-15集
13集: ThinkPHP3.1.3使用视频教程--后台登录验证与自动运行方法_标清.flv 14集: ThinkPHP3.1.3使用视频教程--自定义SESSION处理DB驱动与添加Redis处理驱 ...
- [转载]jquery版小型婚礼(可动态添加祝福语)
原文链接:http://www.cnblogs.com/tattoo/p/3788019.html 前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我 的百度生涯,一直 ...
- jquery版小型婚礼(可动态添加祝福语)
前两天在网上不小心看到“js许愿墙”这几个字,我的神经就全部被调动了.然后就开始我的百度生涯,一直寻觅许愿墙背景图片和便利贴图片,觅了好久……一直没找到满意的……无意间看到祝福语和一些卡通婚礼图片.最 ...
随机推荐
- 【poj3084】 Panic Room
http://poj.org/problem?id=3084 (题目链接) 题意 一个房子里面有m个房间,一些房间之间有门相连,而门的开关只在一个房间有,也就是说只有一个房间可以控制该扇门的开关.现在 ...
- 【bzoj2006】 NOI2010—超级钢琴
http://www.lydsy.com/JudgeOnline/problem.php?id=2006 (题目链接) 题意 给出一个数列,在其中选出K个长度在${[L,R]}$之间的不同的区间,使得 ...
- iOS 采用个推时,未收到推送消息,测试DeviceToken无效
一般在调试时我们使用任何boundleID,即为*的profile文件 但在使用推送后进行调试,除了创建和上传APN证书,还需要重新生成 (1)特定程序的BoundleID (2)包含Push Not ...
- 使用Guava来计算笛卡尔积
以前做项目的时候计算笛卡尔积的时候,总是使用各种for循环来嵌套,最后往往在Sonar代码检查的时候总是会报警说for循环嵌套过深. 今天才知道Guava原来已经为我们提供了优雅的计算笛卡尔积的方法. ...
- A.Kaw矩阵代数初步学习笔记 7. LU Decomposition
“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...
- Codeforces 711E ZS and The Birthday Paradox
传送门 time limit per test 2 seconds memory limit per test 256 megabytes input standard input output st ...
- CF 213A Game(拓扑排序)
传送门 Description Furik and Rubik love playing computer games. Furik has recently found a new game tha ...
- POJ 2528 Mayor's posters(线段树/区间更新 离散化)
题目链接: 传送门 Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Description The citizens of By ...
- 《JavaScript权威指南》学习笔记 第三天 找个对象
现实生活中真的对象没有找到,在JavaScript 里左一个对象又一个对象,搞的我也是晕晕乎乎不知所云.人事复杂,人心难懂.我虽然是文科生,但是也不善于巧言.还是在js里面找找对象吧.那么我们今天就从 ...
- Java 序列化Serializable接口
1 什么是序列化和反序列化 Serialization(序列化)是一种将对象以一连串的字节描述的过程:反序列化deserialization是一种将这些字节重建成一个对象的过程. 2 什么情况下需要 ...