php博客小作业

用php实现写博客,查看列表,编辑博客,删除博客的小功能,用了bootstrap框架,用了ueditor编辑器。

主要代码如下:


博客编辑页面

效果图

这里写图片描述

这里写图片描述

主要代码

blog.html

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<title>博客</title>
</head>

<body>
  <div class="container">
  <!-- <form> 标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 "multipart/form-data"。 -->
  <!--点击保存修改就跳转到add.php-->
  <form class="form-horizontal" action="add.php" method="post" enctype="multipart/form-data">
  <div class="form-group">
    <label for="blogTitle" class="col-sm-2 control-label">博文标题</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="blogTitle" placeholder="博文标题" name="title">
    </div>
  </div>
  <div class="form-group">
    <label  class="col-sm-2 control-label">文章类别</label>
    <div class="col-sm-10">
      <select class="form-control" name="leibie">
      <option>-选择文章类别-</option>
      <option>Web前端</option>
      <option>后台开发</option>
      <option>架构设计</option>
      <option>UI</option>
      <option>项目需求</option>
    </select>
    </div>
  </div>
  <div class="form-group">
    <label for="author" class="col-sm-2 control-label">作者</label>
    <div class="col-sm-10">
      <input type="text" name="author" class="form-control" id="author" placeholder="作者">
    </div>
  </div>
  <div class="form-group">
    <label for="cover" class="col-sm-2 control-label">封面图</label>
    <div class="col-sm-10">
    <!-- <input> 标签的 type="file" 属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。 -->
     <input type="file"  name="fileUpload" />
    </div>
  </div>
   <div class="form-group">
    <label for="author" class="col-sm-2 control-label">博文简介</label>
    <div class="col-sm-10">
     <textarea class="form-control" rows="3" placeholder="输入博文简介" name="jianjie"></textarea>
    </div>
  </div>
  <div class="form-group">
    <label for="author" class="col-sm-2 control-label">博文内容</label>
    <div class="col-sm-10">
     <!-- 加载编辑器的容器 -->
    <script id="container" name="content" type="text/plain">

    </script>
    <!-- 配置文件 -->
    <script type="text/javascript" src="ueditor/ueditor.config.js"></script>
    <!-- 编辑器源码文件 -->
    <script type="text/javascript" src="ueditor/ueditor.all.js"></script>
    <!-- 实例化编辑器 -->
    <script type="text/javascript">
        var ue = UE.getEditor('container');
    </script>
    </div>
  </div>

  <div class="form-group">
    <div class="col-sm-2 col-sm-offset-6 ">
      <button type="submit" class="btn btn-primary">保存修改</button>
    </div>
  </div>
</form>


</body>

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 
</html>

写入数据库

点击发表博客后跳转到add.php,写入数据库

效果图

这里写图片描述

主要代码

add.php

<?php
header("Content-type:text/html;charset=utf-8");
// 保持格式的统一性
echo "<pre>"; 
// var_dump() 函数返回变量的数据类型和值
// 预定义的 $_POST 变量用于收集来自 method="post" 的表单中的值。
 var_dump($_POST);
 echo "</br>"; 
 // 通过使用 PHP 的全局数组 $_FILES,你可以从客户计算机向远程服务器上传文件。这里指的是图片
 var_dump($_FILES);
 // 通过年月日加随机数给图片命名
 $img=date("Ymn",time()).rand(100,999);
 // 移动位置
 move_uploaded_file($_FILES["fileUpload"]["tmp_name"], "./image/{$img}.png");
 // 获取内容
 $_POST['content']=htmlspecialchars($_POST['content']);
// 数据库
$servername = "";
$username = "";
$password = "";
$dbname = "";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
// 设置编码格式
$conn->query('set names utf8');
// sql语句
$sql = "insert into blog (title, leibie, author, cover,jianjie,content) values('{$_POST['title']}','{$_POST['leibie']}','{$_POST['author']}','./image/{$img}.png','{$_POST['jianjie']}','{$_POST['content']}')";
if ($conn->query($sql) === TRUE) {
    echo "新记录插入成功";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}
// 跳转到列表页
header("location:http://localhost/blog/liebiao.php");
$conn->close();

列表页

写入数据库后跳转到列表页

效果图

这里写图片描述

主要代码

列表页代码:
liebiao.html

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<title>文章列表</title>
</head>

<body>
<div class="container">
<table class="table table-hover">
      <thead>
        <tr>
          <th>ID</th>
          <th>博文标题</th>
          <th>文章类别</th>
          <th>作者</th>
          <th>博文简介</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
      <!-- html代码中嵌套php -->
      <?php
       header("Content-type:text/html;charset=utf-8");
       //数据库
        $servername = "";
        $username = "";
        $password = "";
        $dbname = "";

        // 创建连接
        $conn = new mysqli($servername, $username, $password, $dbname);
        // Check connection
        if ($conn->connect_error) {
            die("连接失败: " . $conn->connect_error);
        } 

        // sql语句
        $sql = "SELECT * FROM blog";
        // 设置编码格式
        $conn->query('set names utf8');

        $result = $conn->query($sql);

        $data = array();

        if ($result->num_rows > 0) {

            while($row = $result->fetch_assoc()) {
                $data[] = $row;
            }
        } else {
            echo "0 结果";
        }
        $conn->close();

        // 获取数据库内容
        // 关联数组
        // <a href='bianji.php?id={$data[$i]['id']}'>编辑</a>跳转,并传一个参数
        // <a href='delete.php?id={$data[$i]['id']}'>删除</a>
        for($i=0;$i<count($data);$i++){
            echo "<tr><th scope='row'>{$data[$i]['id']}</th><td>{$data[$i]['title']}</td><td>{$data[$i]['leibie']}</td><td>{$data[$i]['author']}</td><td>{$data[$i]['jianjie']}</td><td><button type='button' class='btn btn-info'><a href='bianji.php?id={$data[$i]['id']}'>编辑</a></button> &nbsp;<button type='button' class='btn btn-danger'><a href='delete.php?id={$data[$i]['id']}'>删除</a></button></td></tr>";
        }
       ?>
      </tbody>
    </table>
</div>
</body>

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 
</html>

编辑页面

点击编辑就会跳转到编辑页面

效果图

这里写图片描述

主要代码

bianji.php

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
<title>博客</title>
</head>

<body>
  <div class="container">
  <!-- 点击保存修改就会跳转到update.php,并更新数据库 -->
  <form class="form-horizontal" action="update.php" method="post" enctype="multipart/form-data">
  <!-- html代码中嵌套php代码 -->
  <?php
       header("Content-type:text/html;charset=utf-8");
       // 数据库
    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";

    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("连接失败: " . $conn->connect_error);
    } 

    // sql语句,获取接收到的id对应的内容
    $sql = "SELECT * FROM blog WHERE id={$_GET['id']}";
    // 设置编码格式
    $conn->query('set names utf8');

    $result = $conn->query($sql);

    $data = array();

    if ($result->num_rows > 0) {

        while($row = $result->fetch_assoc()) {
            $data[] = $row;
        }
    } else {
        echo "0 结果";
    }
    $conn->close();
    ?>
     <!-- 把获取的内容输出 -->
  <input type="hidden" value="<?php echo $data[0]['id']?>" name='id'>
  <div class="form-group">
    <label for="blogTitle" class="col-sm-2 control-label">博文标题</label>
    <div class="col-sm-10">
      <input type="text" value="<?php echo $data[0]['title']?>" class="form-control" id="blogTitle" placeholder="博文标题" name="title">
    </div>
  </div>
  <!-- 文章类别这个太麻烦了,就没有实现输出-->
  <div class="form-group">
    <label  class="col-sm-2 control-label">文章类别</label>
    <div class="col-sm-10">
      <select class="form-control" name="leibie" >
      <option>-选择文章类别-</option>
      <option>Web前端</option>
      <option>后台开发</option>
      <option>架构设计</option>
      <option>UI</option>
      <option>项目需求</option>
    </select>
    </div>
  </div>

  <div class="form-group">
    <label for="author" class="col-sm-2 control-label">作者</label>
    <div class="col-sm-10">
      <input type="text" value="<?php echo $data[0]['author']?>" name="author" class="form-control" id="author" placeholder="作者">
    </div>
  </div>
   <!-- 封面图这个太麻烦了,就没有实现输出-->
  <div class="form-group">
    <label for="cover" class="col-sm-2 control-label" >封面图</label>
    <div class="col-sm-10">
     <input type="file"  name="fileUpload" text="<?php echo $data[0]['cover']?>" />
    </div>
  </div>
   <div class="form-group">
    <label for="author" class="col-sm-2 control-label" >博文简介</label>
    <div class="col-sm-10">
     <textarea class="form-control" rows="3" placeholder="输入博文简介" name="jianjie" ><?php echo $data[0]['jianjie']?></textarea>
    </div>
  </div>
  <div class="form-group">
    <label for="author" class="col-sm-2 control-label">博文内容</label>
    <div class="col-sm-6">
     <!-- 加载编辑器的容器 -->
    <script id="container" name="content" type="text/plain">
    <?php echo htmlspecialchars_decode($data[0]['content'])?>
    </script>
    <!-- 配置文件 -->
    <script type="text/javascript" src="ueditor/ueditor.config.js"></script>
    <!-- 编辑器源码文件 -->
    <script type="text/javascript" src="ueditor/ueditor.all.js"></script>
    <!-- 实例化编辑器 -->
    <script type="text/javascript">
        var ue = UE.getEditor('container');
    </script>
    </div>
  </div>

  <div class="form-group">
    <div class="col-sm-offset-6 ">
      <button type="submit" class="btn btn-primary">保存修改</button>
    </div>
  </div>
</form>


</body>

<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 
</html>

编辑功能(更新)

点击保存修改后会跳转到update.php,更新数据库后跳转到列表页

主要代码

liebiao.php

<?php
// 设置编码格式
header("content-type:text/html;charset=utf-8");
 // 数据库
    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";

    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("连接失败: " . $conn->connect_error);
    } 

// 设置编码格式
$con->query("set names utf8");
// 获取修改后的内容
$_POST['content']=htmlspecialchars($_POST['content']);
// 如果没有重新选择图片,则把封面图以外的信息更新到数据库
if($_FILES['fileUpload']['size']==0){
    mysqli_query($con,"UPDATE blog SET title='{$_POST['title']}',leibie='{$_POST['leibie']}',author='{$_POST['author']}',jianjie='{$_POST['jianjie']}',content='{$_POST['content']}' WHERE id={$_POST['id']}");


}

// 如果重新选择图片,则把新的封面图和其他信息更新到数据库

else{   
    $img=date("Ymn",time()).rand(100,999);
    move_uploaded_file($_FILES["fileUpload"]["tmp_name"], "./image/{$img}.png");
    mysqli_query($con,"UPDATE blog SET title={$_POST['title']},leibie={$_POST['leibie']},author={$_POST['author']},cover='./image/{$img}.png',jianjie={$_POST['jianjie']},content={$_POST['content']} WHERE id={$_POST['id']}");
header("location:http://localhost:8080/20170701php/liebiao.php");

}


// 输出提示信息
echo "修改成功 ";
// 跳转页面
// header("location:http://localhost/blog/liebiao.php");


mysqli_close($con);
?>

删除功能

点击删除按钮就会跳转到delete.php,删除成功后跳转到liebiao.php

主要代码
<?php
 // 数据库
    $servername = "";
    $username = "";
    $password = "";
    $dbname = "";

    // 创建连接
    $conn = new mysqli($servername, $username, $password, $dbname);
// 检测连接
if (mysqli_connect_errno())
{
    echo "连接失败: " . mysqli_connect_error();
}

//var_dump($_GET['id']);
mysqli_query($con,"DELETE FROM blog WHERE id={$_GET['id']}");
echo "删除成功" ;
    header("location:http://localhost/blog/liebiao.php");

mysqli_close($con);
?>

删除后的列表页
这里写图片描述

php博客小作业,这个过程中遇到了一些编码问题~~

很棒!下面是一个简单的博客系统的示例代码: 1. 创建数据库表格 首先,我们需要创建一个MySQL数据库,并创建两个表格:`users`和`posts`。 ``` CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `password` varchar(255) NOT NULL, `email` varchar(100) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE `posts` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `content` text NOT NULL, `author_id` int(11) NOT NULL, `created_at` datetime NOT NULL, PRIMARY KEY (`id`), KEY `author_id` (`author_id`), CONSTRAINT `posts_ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 2. 创建PHP连接数据库的类 接下来,我们需要编写一个PHP类,用于连接数据库和执行一些常见的数据库操作。这里我们使用PDO来连接MySQL数据库。 ```php class Database { private $host = 'localhost'; private $username = 'root'; private $password = 'password'; private $database = 'blog'; private $connection; public function __construct() { try { $dsn = "mysql:host={$this->host};dbname={$this->database}"; $this->connection = new PDO($dsn, $this->username, $this->password); $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { die("Connection failed: " . $e->getMessage()); } } public function query($sql) { $stmt = $this->connection->prepare($sql); $stmt->execute(); return $stmt; } public function lastInsertId() { return $this->connection->lastInsertId(); } } ``` 3. 用户登录和注册功能 接下来,我们需要编写用户登录和注册的功能。这里我们使用session来保存用户登录状态。 ```php session_start(); if (isset($_POST['login'])) { $username = $_POST['username']; $password = $_POST['password']; $sql = "SELECT * FROM users WHERE username = :username"; $stmt = $db->query($sql); $stmt->bindParam(':username', $username); $stmt->execute(); $user = $stmt->fetch(PDO::FETCH_ASSOC); if ($user && password_verify($password, $user['password'])) { $_SESSION['user_id'] = $user['id']; header('Location: index.php'); exit; } else { $error = 'Invalid username or password'; } } if (isset($_POST['register'])) { $username = $_POST['username']; $password = $_POST['password']; $email = $_POST['email']; $sql = "INSERT INTO users (username, password, email) VALUES (:username, :password, :email)"; $stmt = $db->query($sql); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', password_hash($password, PASSWORD_DEFAULT)); $stmt->bindParam(':email', $email); $stmt->execute(); $_SESSION['user_id'] = $db->lastInsertId(); header('Location: index.php'); exit; } ``` 4. 添加博客文章 现在,我们可以添加博客文章了。我们需要一个表单,让用户输入文章标题和内容。当用户提交表单时,我们将文章信息插入到`posts`表中。 ```php if (isset($_POST['create_post'])) { $title = $_POST['title']; $content = $_POST['content']; $author_id = $_SESSION['user_id']; $created_at = date('Y-m-d H:i:s'); $sql = "INSERT INTO posts (title, content, author_id, created_at) VALUES (:title, :content, :author_id, :created_at)"; $stmt = $db->query($sql); $stmt->bindParam(':title', $title); $stmt->bindParam(':content', $content); $stmt->bindParam(':author_id', $author_id); $stmt->bindParam(':created_at', $created_at); $stmt->execute(); header('Location: index.php'); exit; } ``` 5. 显示博客文章 最后,我们需要显示博客文章。我们从`posts`表中获取所有文章,并将它们显示在网页上。 ```php $sql = "SELECT * FROM posts ORDER BY created_at DESC"; $stmt = $db->query($sql); $posts = $stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($posts as $post) { $sql = "SELECT * FROM users WHERE id = :id"; $stmt = $db->query($sql); $stmt->bindParam(':id', $post['author_id']); $stmt->execute(); $author = $stmt->fetch(PDO::FETCH_ASSOC); echo '<h1>' . $post['title'] . '</h1>'; echo '<p>' . $post['content'] . '</p>'; echo '<small>Written by ' . $author['username'] . ' on ' . $post['created_at'] . '</small>'; } ``` 这就是一个简单的博客系统的示例代码。当然,它仅仅是一个示例,实际上你需要根据你的需求和想法进行修改和拓展。希望对你有所帮助!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值