• 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.')

  • 相关阅读:
    020606-04-聊天布局-键盘处理
    020606-03-聊天布局-键盘处理
    02060601-聊天布局
    按钮背景图片拉伸
    源码-0205-02--聊天布局02
    源码-0205-02--聊天布局
    向量投影公式
    定比分点、中点公式
    重叠检测----凸边形
    aabb碰撞检测
  • 原文地址:https://www.cnblogs.com/bkylee/p/5299523.html
Copyright © 2020-2023  润新知