留言本的设计:
1 分析数据表结构:
留言板有哪些信息需要存储:
ID,留言标题,留言内容,留言时间,留言人
2 创建数据表
created_at创建时间使用int存入时间戳,MySQL的timestamp有时间范围限制;
3 连接数据库
使用PDO方式进行连接,扩展性好:
详细代码:
<form action="store.php" method="post">
标题:<input type="text" name="title"><br>
内容:<textarea cols="35" rows="10" name="content"></textarea><br>
留言人:<input type="text" name="user_name"><br>
<input type="submit" value="添加">
</form>
<?php
$title = $_POST['title'];
$content = $_POST['content'];
$user_name = $_POST['user_name'];
if (empty($title) || empty($content) || empty($user_name))
{
exit('标题或者内容或者用户名不能为空');
}
try {
$dsn = 'mysql:dbname=test;host=localhost';
$username = 'test';
$password = 'test';
// 异常模式,这个模式需要配合 try 使用 :
$attr = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
$pdo = new PDO($dsn, $username, $password, $attr);
$sql = 'insert into message(title, content, created_at, user_name)
values(:title, :content, :created_at, :user_name)';
$stmt = $pdo->prepare($sql);
$data = [
':title' => $title,
':content' => $content,
':created_at' => time(),
':user_name' => $user_name
];
$stmt->execute($data);
$rows = $stmt->rowCount();//影响行数
if($rows)
{
exit('添加成功');
} else {
exit('添加失败');
}
} catch(PDOException $e) {
// 异常
echo $e->getMessge();
}
无限分类
1 父id形式
展示无限极分类的时候需要使用递归进行显示
也可以加个path字段,显示当前层级路径,优点是根据path字段,可以直接显示当前完整路径,缺点是维护麻烦
2 全路径实现
可以对path字段进行order by排序达到无限极分类的效果
递归
自己调用自己 , 自己设置终止条件
缺点:
多次重复计算 , 性能差
递归优化:尾递归。详细的看算法-递归中优化方法。