小案例:微型博客
# 初级案例说明
一、结构如下
conn.php 为连接数据库文件
index.php 为首页,也是博客列表页 select * from weibo where $id order by id desc limit 10;
edit.php 为编辑页 UPDATE weibo SET `title`='$title',`contents`='$contents' where `id`='$hid'
del.php 为删除操作页
add.php 为添加页
view.php 为详情页
二、数据库
字段说明 id ,hit点击量,title标题,dates日期,contents内容
CREATE TABLE `weibo` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`hit` int(11) NOT NULL,
`title` varchar(50) NOT NULL,
`dates` date NOT NULL,
`contents` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
三、注意点:
1.编辑时候,在表单中使用了隐藏域进行传递id
2.在搜索的时候巧妙使用了where $w ,
if(!empty($_GET['keys'])){
// $w = `title` like $_GET['keys'];
$w = " `title` like '%" . $_GET ['keys'] . "%' "; //使用模糊搜索
}else{
$w = 1; //此句代码转换到sql语句中没有实际意义。
//sql语句为select * from `weibo` where 1 order by id desc limit 10;
}
不懂请留言(微信:moka_2024)
index.php
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>我的微型博客</title> </head> <body> <a href="add.php">添加内容</a> <hr> <form action="" method="get"> <input type="text" name="keys"> <input type="submit" name="subs" value="搜索"> </form> <hr> <?php include 'conn.php'; // 搜索时候增加了$w条件,此处借用了 sql语句中where $w order by 原理 跳过了搜索。 if (! empty ( $_GET ['keys'] )) { $w = " `title` like '%" . $_GET ['keys'] . "%' "; } else { $w = 1; } $sql = "select * from `weibo` where $w order by id desc limit 10"; $query = mysql_query ( $sql ); while ( $res = mysql_fetch_array ( $query ) ) { ?> <h2> 标题:<a href="view.php?id=<?php echo $res['id'];?>"><?php echo $res['title'];?></a>| <a href="edit.php?id=<?php echo $res['id'] ?>">编辑</a>| <a href="del.php?id=<?php echo $res['id'];?>">删除</a> | </h2> <p> <?php echo $res['dates']; ?></p> <p>内容:<?php echo iconv_substr($res['contents'],0,10,"utf-8"); ?>...</p> <hr> <?php } ?> </body> </html>
add.php
<?php include 'conn.php'; if (!empty($_POST['sub'])){ $title = $_POST['title']; $contents = $_POST['contents']; $sql = "insert into `weibo` (`id`,`title`,`dates`,`contents`) values (null,'$title',now(),'$contents')"; mysql_query($sql); echo "插入成功"; } ?> <form action="" method="post"> 标题<input name="title" type="text"><br><br> 内容<textarea name="contents" rows="5" cols="50"></textarea><br> <input type="submit" name="sub" value="发布"> </form>
conn.php
<?php header("Content-type:text/html;charset=utf-8"); @mysql_connect("localhost","root","root")or die("连接失败"); //@为了屏蔽错误暴露 @mysql_select_db("mystudy")or die("db连接失败"); // mysql_set_charset("utf-8"); mysql_query("set names 'utf8'"); ?>
edit.php
<?php include 'conn.php'; //获取原来数据 if(!empty($_GET['id'])){ $sql = " SELECT * FROM weibo WHERE `id` = '".$_GET['id']."'"; $query = mysql_query($sql); $res = mysql_fetch_array($query); } //保存更新数据 if (!empty($_POST['sub'])){ $hid = $_POST['hid']; $title = $_POST['title']; $contents = $_POST['contents']; $sql = "UPDATE weibo SET `title`='$title',`contents`='$contents' where `id`='$hid' "; mysql_query($sql); echo "<script> alert('更改成功!');location.href='index.php';</script>"; } ?> <form action="" method="post"> <!-- 添加隐藏域来传递需要改变的id --> <input type="hidden" name="hid" value="<?php echo $res['id'] ?>"> 标题<input name="title" type="text" value="<?php echo $res['title']; ?>" /><br><br> 内容<textarea name="contents" rows="5" cols="50"><?php echo $res['contents']; ?></textarea><br> <input type="submit" name="sub" value="发布"> </form>
del.php
<?php include 'conn.php'; //删除操作 if(!empty($_GET['del'])){ $d = $_GET['del']; $sql = "delete from `weibo` where `id`= '$d' "; mysql_query($sql); } echo "删除成功!"; ?> <a href="index.php">返回</a>
view.php
<?php include 'conn.php'; //查询 if(!empty($_GET['id'])){ $sql = " SELECT * FROM weibo WHERE `id` = '".$_GET['id']."'"; $query = mysql_query($sql); $res = mysql_fetch_array($query); $sqlhit = "UPDATE weibo SET hit=hit+1 WHERE `id` = '".$_GET['id']."' "; mysql_query($sqlhit); } ?> <h1><?php echo $res['title']?></h1> <h2><?php echo $res['dates']?></h2> <h3>点击量:<?php echo $res['hit']?></h3> <hr> <p> <?php echo $res['contents'] ?> </p>
mystudy.sql
/* Navicat MySQL Data Transfer Source Server : localhost Source Server Version : 50540 Source Host : localhost:3306 Source Database : mystudy Target Server Type : MYSQL Target Server Version : 50540 File Encoding : 65001 Date: 2016-03-27 23:03:12 */ SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- Table structure for `myguests` -- ---------------------------- DROP TABLE IF EXISTS `myguests`; CREATE TABLE `myguests` ( `id` int(6) unsigned NOT NULL AUTO_INCREMENT, `firstname` varchar(30) NOT NULL, `lastname` varchar(30) NOT NULL, `email` varchar(50) DEFAULT NULL, `reg_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of myguests -- ---------------------------- INSERT INTO `myguests` VALUES ('1', 'John', 'Doe', 'john@example.com', '2015-07-07 15:26:48'); INSERT INTO `myguests` VALUES ('2', 'John', 'Doe', 'john@example.com', '2015-07-07 15:27:48'); INSERT INTO `myguests` VALUES ('3', 'John', 'Doe', 'john@example.com', '2015-07-07 15:27:51'); INSERT INTO `myguests` VALUES ('4', 'John', 'Doe', 'john@example.com', '2015-07-07 15:28:24'); INSERT INTO `myguests` VALUES ('5', 'John', 'Doe', 'john@example.com', '2015-07-07 15:28:25'); INSERT INTO `myguests` VALUES ('6', 'John', 'Doe', 'john@example.com', '2015-07-07 15:28:25'); INSERT INTO `myguests` VALUES ('7', 'John', 'Doe', 'john@example.com', '2015-07-07 15:28:25'); INSERT INTO `myguests` VALUES ('8', 'John', 'Doe', 'john@example.com', '2015-07-07 15:28:37'); INSERT INTO `myguests` VALUES ('9', 'John', 'Doe', 'john@example.com', '2015-07-07 15:28:37'); INSERT INTO `myguests` VALUES ('10', 'John', 'Doe', 'john@example.com', '2015-07-07 15:28:37'); INSERT INTO `myguests` VALUES ('11', 'John', 'Doe', 'john@example.com', '2015-07-07 15:28:37'); INSERT INTO `myguests` VALUES ('12', 'John', 'Doe', 'john@example.com', '2015-07-07 15:28:37'); INSERT INTO `myguests` VALUES ('13', 'John', 'Doe', 'john@example.com', '2015-07-07 15:29:05'); -- ---------------------------- -- Table structure for `weibo` -- ---------------------------- DROP TABLE IF EXISTS `weibo`; CREATE TABLE `weibo` ( `id` int(5) NOT NULL AUTO_INCREMENT, `hit` int(11) NOT NULL, `title` varchar(50) NOT NULL, `dates` date NOT NULL, `contents` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of weibo -- ---------------------------- INSERT INTO `weibo` VALUES ('1', '0', 'dddd', '2016-03-24', 'eeeee'); INSERT INTO `weibo` VALUES ('2', '4', '为什么这么慢', '2016-03-24', '为啥这么慢?我也想知道原因。为啥这么慢?我也想知道原因。为啥这么慢?我也想知道原因。为啥这么慢?我也想知道原因。为啥这么慢?我也想知道原因。为啥这么慢?我也想知道原因。为啥这么慢?我也想知道原因。为啥这么慢?我也想知道原因。为啥这么慢?我也想知道原因。为啥这么慢?我也想知道原因。'); INSERT INTO `weibo` VALUES ('3', '0', '测试修改', '2016-03-24', '你做到了。。'); INSERT INTO `weibo` VALUES ('5', '0', '我的博客', '2016-03-27', '我的博客,可以了吗????我的博客,可以了吗????我的博客,可以了吗????我的博客,可以了吗????我的博客,可以了吗????我的博客,可以了吗????我的博客,可以了吗????我的博客,可以了吗????我的博客,可以了吗????我的博客,可以了吗????');