zoukankan      html  css  js  c++  java
  • thinkphp- 许愿墙-1

    控制器的方法, 要显示的模板默认的跟方法名相同. 也可以不同, 但应该 仍然是对应文件夹下的html模板文件:
    $this->display('其他的模板html文件名, 不用加html扩展名');

    在windows图形界面下, 可以支持 "/" 和 ""两种路径分隔符, 但是在cmd下, 只能用 ""

    wamp包括: Apache2, php, mysql , logs lang, www等文件夹, 和一些可执行文件, 如wampserver.exe等

    一般情况下, 建议都使用mysql的控制台, 只有特殊情况下才用web可视化视图管理.
    mysql的控制台文件: c:wampmysqlinmysql.exe

    可以设置控制台的属性, 如窗口宽度=110, "保存属性, 供以后 具有相同标题 "C:wampmysqlinmysql.exe" 的窗口使用!"

    mysql数据库: use db_name; //指的是你要使用哪一个数据库

    /--------------------------------/
    mysql控制台常用 命令

    1. 显示命令: (显示所有的数据库和 某个库中的所有表)
      show databasees;
      show tables
      // 注意, 两个显示都要用 复数! 因为是显示所有的数据库 或所有的表. 不是特指哪一个...
      // 提示, mysql好像也是用c语言写的, 所以他的命令, 也要求用分号; 结束.

    2. 修改表
      alter table table_name //(alter语句)
      /*------------------

    • 特别注意的是: mysql里面(或者说这个5.0.45的版本) 跟sql server有所不同, 里面都不加 关键字 column!
      ------------------/
      add column_name datatype;
      drop column_name;
      change column_name column_name datatype; (是change, 不是alter!)

    // 在sql语句中, 要养成 加反引号的习惯: 给 数据库/表/字段 名称加上反引号, 跟其他字段和关键字相区别 !!

    字段名也可以 在任何时候 都加上 反引号! 包括insert select语句中的where 子句中的字段名也可以加反引号.

    1. 查看表的结构:
        describe foo_table;  
        // 好像就只有这个命令 关键字可以简写为: desc;
    
    1. 给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
    
    
    1. 连接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';
    
    1. 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- 0;
    }

    ==========================================

    有时候, 看到横着的一条 分割线?
    分割线不一定都是


    有时候, 有时候可以 利用 border-top 或者 border-bottom来实现, 而且还可以用 margin-top
    margin-bottom来调整相邻元素的垂直距离等等

    ==========================================================
    两个div 水平并列的css设置:
    需要: 它们: float: left; 49%. // 为了准确起见, 不用 刚好设置成 50%, 留一点空西 更安全!

    =====================================================================
    css中的 相对尺寸?
    通常在css中 , 要表示更大/更小的尺寸, 通常/最好/推荐 使用 百分比, 而不是使用具体的 写死的数值
    如: font-size: 120%,
    在 "需要自适应 宽度/高度" 的时候, 也推荐使用 百分比来写! 如上面的 49%

    =============================================================================
    css中的background-image?

    1. background-image中的url地址可以不用 引号: 如: background-image: url(./img/xxx.png);

    2. background-repeat表示是否重复: 默认的是repeat都重复: 共有4种: repeat, repeat-x, repeat-y, no-repeat.都是以repeat开始打头的;

    3. 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的 日期和时间 类型

    1. mysql中的select就是输出, 选择...的意思, 相当于其他语言中的 print, echo等等.
    2. 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.')

  • 相关阅读:
    go函数
    Linux 查看磁盘容量、查找大文件、查找大目录
    五分钟理解一致性哈希算法(consistent hashing)
    使用Java实现三个线程交替打印0-74
    Python实现IOC控制反转
    Wannafly挑战赛5 A珂朵莉与宇宙 前缀和+枚举平方数
    Yandex Big Data Essentials Week1 Scaling Distributed File System
    Yandex Big Data Essentials Week1 Unix Command Line Interface Processes managing
    Yandex Big Data Essentials Week1 Unix Command Line Interface File Content exploration
    Yandex Big Data Essentials Week1 Unix Command Line Interface File System exploration
  • 原文地址:https://www.cnblogs.com/bkylee/p/5299523.html
Copyright © 2011-2022 走看看