记录一下我在学习《十天学会 PHP》(第六版)的过程中的遇到的重难点,该课程是学习制作一个简单的留言板。

准备工作

  • XAMPP(Apache + MySQL + PHP + PERL) 是一个功能强大的建站集成软件包。现在 XAMPP 的官方版本使用的数据库是 MariaDB,但是国内使用 MySQL 数据库较多,视频里 XAMPP 的站点似乎也没了,反正我是没找到,后来在 php 中文网找到了和视频里一样的 XAMPP 版本,这个版本使用的是 MySQL 数据库,同时php中文网也是学习学习 PHP 等不错的网站。下载地址
  • PHP手册 一定要有,直接百度 php 手册就可以找到下载了。
  • Navicat 是一个数据库管理工具,破解版的安装方法在这篇博客( Navicat Premium 12 安装与破解),方便简单快捷,不需要任何花里胡哨的操作。
  • HTML 手册是学习 HTML 的很好的工具。

Navicat 的使用

  • 建立如下图所示的数据库,主要是我目前不知道不同字符集和排列规则会对数据造成什么样的影响,所以只能照搬视频里的样式建立数据库。


    image

代码

  • 把代码都放在 \xampp\htdocs 文件夹下面,其它具体的细节,现在有些遗忘了,通过代码回忆。
  • 先是一个 gbook.php 文件
<?php
include('connect.php');

$sql = "SELECT * FROM msg ORDER BY id DESC";
$mysqli_result = $db->query($sql);
if ($mysqli_result === false) {
    echo "SQL错误";
    exit;
}
while ($row = $mysqli_result->fetch_array(MYSQL_ASSOC)) {
    $rows[] = $row;
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>留言本</title>
        <style>
            .wrap{
                width: 600px;
                margin: 0px auto;
            }
            .add{
                overflow: hidden;
            }
            .add .content{
                width: 598px;
                margin: 0;
                padding: 0;
            }
            .add .user{
                float: left;
            }
            .add .btn{
                float: right;
            }
            .msg{
                margin: 20px 0px;
                background: #ccc;
                padding: 5px;
            }
            .msg .info{
                overflow: hidden;
            }
            .msg .user{
                float: left;
                color: blue;
            }
            .msg .time{
                float: right;
                color: #999;
            }
            .msg .content{
                width: 100%;
            }
        </style>
    </head>
    <body>
        <div class="wrap">
            <!-- 发表留言 -->
            <div class="add">
                <form action="save.php" method="post">
                    <textarea name="content" class="content" cols="50" rows="5"></textarea>
                    <input name="user" class="user" type="text" />
                    <input class="btn" type="submit" value="发表留言" />
                </form>
            </div>

            <?php
            foreach ($rows as $row) {
            ?>
                <!-- 查看留言 -->
                <div class="msg">
                    <div class="info">
                        <span class="user"><?php echo $row['user'];?></span>
                        <span class="time"><?php echo date("Y-m-d H:i:s", $row['intime']);?></span>
                    </div>
                    <div class="content">
                        <?php echo $row['content'];?>
                    </div>
                </div>
            <?php
            }
            ?>
        </div>
    </body>
</html>
  • 然后是 connect.php 文件
<?php
//预先定义数据库链接参数
$host = '127.0.0.1';
$dbuser = 'root';
$password = '123456';
$dbname = 'php10';

$db = new mysqli($host, $dbuser, $password, $dbname);

if ($db->connect_errno <> 0) {
    die('链接数据库失败');
}
//设定数据库数据传输䣌编码
$db->query("SET NAME UTF8");
?>
  • 接着是 input.php 文件
<?php
class input{
    function post($content) {
        if ($content == '') {
            return false;
        }
        //禁止使用的用户名
        $n = ['张三','李四','王五'];
        foreach ($n as $name) {
            if ($content == $name) {
                return false;
            }
        }
        return true;
    }
}
?>
  • 最后是 sava.php 文件
<?php
include('input.php');
include('connect.php');

$content = $_POST['content'];
$user = $_POST['user'];

$input = new input();

//调用函数,检查留言内容
$is = $input->post($content);
if ($is == false) {
    die('留言内容的数据不正确');
}

//调用函数,检查留言人
$is = $input->post($user);
if ($is == false) {
    die('留言人的数据不正确');
}

//数据入库
$time = time();
$sql = "INSERT INTO msg(content, user, intime) VALUES ('{$content}', '{$user}', '{$time}')";
$is = $db->query($sql);
header("location: gbook.php");
?>

《十天学会 PHP》的重难点的更多相关文章

  1. 李洪强漫谈iOS开发[C语言-008]- C语言重难点

      C语言学习的重难点 写程序的三个境界: 照抄的境界,翻译的境界,创新的境界 1  伪代码: 描述C语言的编程范式 范式: 规范的一种表示 对于C的范式学会的话,C, C++ Java 都会了 2 ...

  2. 标准之路网站上一篇文章《十天学会web标准(div+css)》的营养精华

    以下精华出自如下链接,“http://www.aa25.cn/special/10day/index.shtml”,<十天学会web标准(DIV+CSS)>. 这个内容不要删掉:“< ...

  3. 十年学会编程 著者: Peter Norvig 翻译: Dai Yuwen

    为何人人都这么着急? 信步走进任何一家书店,你会看到名为<如何在7天内学会Java>的书,还有各 种各样类似的书: 在几天内或几小时内学会Visual Basic, Windows, In ...

  4. PHP学习过程_Symfony_(3)_整理_十分钟学会Symfony

    这篇文章主要介绍了Symfony学习十分钟入门教程,详细介绍了Symfony的安装配置,项目初始化,建立Bundle,设计实体,添加约束,增删改查等基本操作技巧,需要的朋友可以参考下 (此文章已被多人 ...

  5. 《十天学会单片机和C语言编程》

    <十天学会单片机和C语言编程> 大家注意了这个文件只有最新版迅雷可以下载,下面的lesson几就是第几课.点击右键使用迅雷下载. ed2k://|file|[十天学会单片机和C语言编程]. ...

  6. “全栈2019”Java多线程第二十九章:可重入锁与不可重入锁详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  7. DIV+CSS专题:十天学会DIV+CSS

    DIV+CSS专题:十天学会DIV+CSS,在网上看到的.感觉蛮好,推荐一下. 十天学会DIV+CSS(WEB标准)CHM格式文件下载 第十天 div+css网页标准布局实例教程(三) 第十天 div ...

  8. English--音标重难点

    English|音标重难点 在拥有了,音标的元音与辅音的基础之后,需要对于这些音标进行加以区分,毕竟方言对于口型的影响非常的大. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...

  9. 这是一份非常适合收藏的Android进阶/面试重难点整理

    写在前面 记得我大二时“不务正业”地自学Android并跟了老师做项目,到大三开始在目前的公司实习,至今毕业已有几年多,学习Android已经6.7年多了!但总感觉知识点很零散,并且不够深入,遇到瓶颈 ...

随机推荐

  1. eclipse spring MVC maven项目 maven install target下无war包

    1.排查问题 一步步去看,首先查看本地maven是否安装    命令:ctrl+r   cmd   输入  mvn -v  查看maven版本 2.查看  window>preference  ...

  2. np.mean()函数

    1. 数组的操作: import numpy as np a = np.array([[1, 2], [3, 4]]) print(a) print(type(a)) print(np.mean(a) ...

  3. 微信小程序——选择某个区间的数字

    很久没有更新文章啦~~记录下今天弄的一个小功能. 先上图: 需求很简单: 第1列改变的时候,第2列也随着改变,并且比第1列大1k. 这里用到了微信的picker 组件,对于不太熟练这个组件的小伙伴可以 ...

  4. FFT/NTT [51Nod 1028] 大数乘法 V2

    题目链接:51Nod 传送门 没压位,效率会低一点 1.FFT #include <cstdio> #include <cstring> #include <algori ...

  5. 基于Ubuntu1604+ROS-kinetic+roscpp的激光雷达定位算法从零开始移植

    调试的过程太麻烦了,因此打算详细解释一下每步的含义,很多地方懂了之后发现其实很简单,但是学起来却发现很多地方无从下手,因为资料太少了,真的都是不断踩坑一点一点摸索出来的,写以此文以便后人乘凉 此处将展 ...

  6. 二分图匹配--KM算法

    Kuhn-Munkres算法 KM算法,求完备匹配下的最大权匹配,时间复杂度O(\(n^3\)) 所谓的完备匹配就是在二部图中,x点集中的所有点都有对应的匹配 且 y点集中所有的点都有对应的匹配 ,则 ...

  7. 从TEB到PEB再到SEH(一)

    什么是TEB? TEB(Thread Environment Block,线程环境块) 线程环境块中存放着进程中所有线程的各种信息 这里我们了解到了TEB即为线程环境块, 进程中每一条线程都对应着的自 ...

  8. [CSP-S 2019]格雷码

    [CSP-S 2019]格雷码 题目大意: 格雷码(Gray Code)是一种特殊的 \(n\) 位二进制串排列法,它要求相邻的两个二进制串间恰好有一位不同,特别地,第一个串与最后一个串也算作相邻. ...

  9. 【JZOJ6223】【20190617】互膜

    题目 小\(A\)和小\(B\)在一个长度为\(2n\)的数组上面博弈,初始时奇数位置为A,偶数位置为B 小\(A\)先手,第\(i\)次操作的人可以将\(i\)或者\(i+1\)位置的值反转(也可以 ...

  10. c博客作业01--顺序分支结构

    0.展示PTA总分 1.本章学习总结 1.1 学习内容总结 1.运算符需注意的要点 '/'的左右两边如果均为整型数,其结果也为整型:'%'的左右两边只能为整型数: 优先级:逻辑运算符<关系运算符 ...