我用ChatGPT做开发之一键清理Discuz论坛帖子

技术 · 2023-05-27 · 223 人浏览

由于工作需要,我用ChatGPT帮我写了一个一键清理Discuz文章的页面,虽然开始运行起来有一些问题,不过后续让其帮忙调试就没什么问题了。

另外,我还顺便让它把前端美化了下。今天写的内容小白都能看得懂,请放心食用!

Snipaste_2023-05-01_23-55-47.png

先说说用ChatGPT开发我遇到哪些问题,以便于告诉各位在使用它开发时该如何调试。

一、自动省略

首先,我直截了当地问“写一个可以删除dz文章的php代码,通过批量输入链接即可删除文章”。系统立马帮我写出了相应的代码,但是其中的数据库连接及登录验证代码直接给我省略了。

02.png

如果我自己写那我就输了,所以我……

03.png

二、系统报错

其实GPT写出代码报错率很高,但是其纠错能力是嘎嘎强啊!

和上面调试的方式一样,你需要先给定原有代码然后给出错误提示,然后等待系统纠错。

04.png

三、优化代码

因为我们使用Discuz程序时,一般都会对其进行伪静态处理,但是GPT使用的是原始的数据处理,所以这里要给他例子,并让他重新生成。

05.png

四、优化前端

GPT在帮我们写代码时并不会注重前端体验,只会满足功能需求,所以我们要将最终的代码进行前端优化,告诉GPT“优化上述代码,让前端展示更加美观,并且能够自适应设备”。

06.png

以上就是我与ChatGPT对一键删除DZ帖子的完整功能开发的详细介绍,下面我将代码共享给大家,由于涉及数据库,请谨慎测试:

<?php
$servername = "数据库地址";
$username = "用户名";
$password = "数据库密码";
$dbname = "数据库名称";

// 创建连接
$con = mysqli_connect($servername, $username, $password, $dbname);

// 检测连接
if (!$con) {
    die("连接失败:" . mysqli_connect_error());
}

if(isset($_POST['delete_links'])) {
    $links = $_POST['delete_links'];
    $link_array = explode("\n", $links); // 将用户输入的链接按行分割成数组

    foreach($link_array as $link) {
        $link = trim($link); // 清除链接前后的空格
        if(empty($link)) continue; // 若链接为空则跳过

        preg_match('/thread-(\d+)-/', $link, $matches); // 从链接中提取出帖子编号

        if(!empty($matches[1])) {
            $tid = $matches[1];
            $sql = "DELETE FROM `pre_forum_thread` WHERE `tid` = ?";
            $stmt = mysqli_prepare($con, $sql);
            mysqli_stmt_bind_param($stmt, 'i', $tid);
            mysqli_stmt_execute($stmt);

            if(mysqli_stmt_errno($stmt) != 0) { // 检查是否有错误
                echo "<p class='error'>删除ID为 {$tid} 的帖子 失败:" . mysqli_stmt_error($stmt) . "</p>";
            } else {
                echo "<p class='success'>删除ID为 {$tid} 的帖子 成功。</p>";
            }
        } else {
            echo "<p class='error'>无效的链接:{$link}</p>";
        }
    }
}

mysqli_close($con);
?>

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>一键删除DZ文章</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: "Microsoft YaHei", Arial, Helvetica, sans-serif;
        }

        body {
            background-color: #F5F5F5;
        }

        .container {
            max-width: 600px;
            margin: 30px auto;
            background-color: #FFF;
            border-radius: 5px;
            box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.1);
            padding: 20px;
        }

        h1 {
            text-align: center;
            font-size: 28px;
            color: #333;
            margin-bottom: 20px;
        }

        label {
            display: block;
            font-size: 16px;
            color: #333;
            margin-bottom: 10px;
        }

        textarea {
            width: 100%;
            height: 150px;
            resize: none;
            margin-bottom: 20px;
            font-size: 14px;
            line-height: 20px;
            color: #666;
            padding: 10px;
            border-radius: 5px;
            border: 1px solid #DDD;
        }

        input[type='submit'] {
            display: block;
            width: 80px;
            height: 30px;
            line-height: 30px;
            margin: 0 auto;
            background-color: #28A745;
            color: #FFF;
            font-size: 14px;
            text-align: center;
            border-radius: 5px;
            cursor: pointer;
            border: none;
        }

        .error {
            color: #F44336;
        }

        .success {
            color: #28A745;
        }
</style>
</head>
<body>
    <div class="container">
        <h1>批量删除帖子</h1>
        <form method="post">
            <label for="delete_links">请输入要删除的帖子链接:</label>
            <textarea name="delete_links" id="delete_links" placeholder="每行一个链接"></textarea>
            <input type="submit" value="删除帖子">
        </form>
    </div>
</body>
</html>

五、更多优化

由于我强迫症比较严重,虽然这个页面仅面向网站管理员,但是我比较注重体验,所以继续问了ChatGPT以下问题:

“不要显示太多行的成功提示,直接罗列出所有删除的ID即可”;

“修改代码要求删除后罗列删除的ID,并在三秒后自动返回”;

“要求修改代码,要求对输入的链接进行去重,并将已删除的ID进行去重展示”;

……

在我看来,与GPT的高效沟通才是快速开发的关键,这都是技巧!

好了!今天的开发就到这儿,咱们下期见!

07.png

chatgpt
Theme Jasmine by Kent Liao