我用ChatGPT做开发之云盘资源分享系统

前言

我的电影群人越来越多,虽然我已经在群内已经设置了相关的机器人回复,但取资源的可能还是不能很快找到相应的资源。另外,也有其他需要分享的人,不同的人可能求同一个资源,消息一多,就被淹没了。

为了保证大家能够及时找到合适的资源,甚至可以不通过群内关键词获取资源,我使用ChatGPT开发了这个资源库,这个资源库和网上大多数的资源一样,是可以进行搜索和发资源的,但是这个资源库的作用是,去除更多不需要的功能,打造极简且易于管理的系统

话不多说,讲讲它的功能:

1.免登陆投稿功能,直接解析资源为XX云盘;

2.支持单个和批量投稿,保证效率;

3.支持精确搜索功能;

4.备注可以注明资源相关介绍,保证准确;

5.免登陆前端管理系统,可以对资源进行修改和删除工作;

6.支持去重功能,保证上传的资源名称和链接不会有重复;

在页面上,可以看到,网站使用的是bootstrap样式搭建的,极简样式,几乎没有任何的自建样。再者使用了页码和前端修改功能,可能对于新手用户来说还是比较麻烦的,但是看了我上期《我用ChatGPT做开发之小轻世界聊天系统》就知道,其实页码功能不是最难的,前端修改功能才是多难的。

前端修改功能,需要加一个弹窗,检测修改的链接是否为真实链接,还要对其查重等等,其中的逻辑比较麻烦,在后面我会一点点给大家讲到,这里会从零开始,教新手怎么去开发这样的系统。

一、界面

网站需要这几个页面:

  • index.php(首页)
  • tougao.php(单个投稿)
  • resources.php(批量投稿)
  • edit.php(编辑)
  • delete.php(删除)
  • config.php(数据库信息)

二、开发页面

为了开发成本更低,我们确定使bootstrap样式开发页面,开发更省心。

因为几乎每个页面都会加载数据库,以保证数据的上传和下载。

数据库

同样,我们直接问ChatGPT如何分离数据库信息,以方便在其他页面调用数据库文件,系统会给出这个代码:

connect_error) {
    die("连接失败: " . $conn->connect_error);
}
mysqli_set_charset($conn, "utf8");;

复制

然后我们就可以在其他页面中这样引入这个文件了:

复制

现在的数据库是没有任何设置的,我们需要询问ChatGPT,自己需要哪些内容,并告诉这些内容的用途,比如“我需要一个数据库。用于存放资源名、资源链接、资源备注,请给出完整SQL代码”。

自己需要先在服务器中创建一个数据库,并打开数据库的phpMyAdmin管理页面 ,输入相关的代码:

CREATE TABLE resources (
    id INT AUTO_INCREMENT PRIMARY KEY,
    resource_name VARCHAR(255),
    resource_link VARCHAR(255),
    resource_remark VARCHAR(255)
);

复制

其中resources是数据表名,是可以自定义的。

首页

我们要确定整个页面展示资源名、资源链接、资源备注、资源设置这几个参数,ChatGPT给出这个代码:

资源名称链接备注操作
资源1链接1备注1操作1
资源2链接2备注2操作2

复制

这个是表格的样式,数据也是示例数据,我们需要的是,将表格链接到数据库,以展示动态数据。

现在已经有数据库的参数、表格样式,把已有信息告诉ChatGPT,并要求其完成数据对接:

我们调整后index.php代码为:

 0) {
    // 输出表头
    echo '
    ';

    // 输出每行数据
    while ($row = mysqli_fetch_assoc($result)) {
        echo '
            ';
    }

    // 输出表尾
    echo '
资源名称链接备注操作
‘ . $row[‘resource_name’] . ‘‘ . $row[‘resource_link’] . ‘‘ . $row[‘resource_remark’] . ‘操作
';
} else {
    echo "没有找到资源信息";
}

// 关闭数据库连接
mysqli_close($conn);
?>

复制

但是我的习惯一般是前后端分离,就是会将后端查询和前端展示内容做个代码分离,这样方便我们去查阅问题所在。


close();
?>

    
资源名称链接备注操作
待定

复制

这就是简单的雏形了,这里我们需要上传一条数据看看是否能够展示出来。

接下来我们来开发投稿页面。

投稿页面

用同样的方法,直接告诉ChatGPT你的需求,“需要用bootstrap样式只做一个表单,用于提交resource_name、resource_link、resource_remark数据。

这里比较简单,对接好数据库就行,下面是我自己的资源库投稿页面部分代码:

我的投稿页面加入了查重和检测网址的功能,投稿完成后自动跳转到主页(index.php)。

检测网址的代码如下:

复制

现在我们可以测试一下是否能提交,如果能提交,则主页会直接展示数据库的内容。

编辑与删除

在主页列表中,直接设置编辑按钮,以便管理员可以直接修改数据。这里需要引入的是编辑(edit.php)和删除(delete.php)页面。

需要先对这两个页面进行设置,才能在列表中对其调用。这两个页面是可以直接通过询问ChatGPT获取到的,基本不需要调试,拿着就可以用,如果有任何报错,携带源码后加入保存内容,如源码+“为什么会出现空白,请修改”。

编辑(edit.php):

 0) {
    // 检查是否与现有记录完全匹配
    $sql_check = "SELECT * FROM resources WHERE (resource_name='$resource_name' OR resource_url='$resource_url') AND id!='$id'";
    $result_check = mysqli_query($conn, $sql_check);
    if ($result_check && mysqli_num_rows($result_check) > 0) {
        echo 'similar_record';
        exit();
    }

    // 更新该条记录
    $sql_update = "UPDATE resources SET name='$resource_name', resource_url='$resource_url', resource_remark='$resource_remark' WHERE id='$id'";
    if (mysqli_query($conn, $sql_update)) {
        echo 'success';
    } else {
        echo 'failed';
    }
} else {
    // 检查是否存在相同链接或者名称的记录
    $sql_check = "SELECT * FROM resources WHERE (resource_name='$resource_name' OR resource_url='$resource_url')";
    $result_check = mysqli_query($conn, $sql_check);
    if ($result_check && mysqli_num_rows($result_check) > 0) {
        echo 'similar_record';
        exit();
    }

    // 插入新纪录
    $sql_insert = "INSERT INTO resources (resource_name, resource_url, resource_remark) VALUES ('$resource_name', '$resource_url', '$resource_remark')";
    if (mysqli_query($conn, $sql_insert)) {
        echo 'success';
    } else {
        echo 'failed';
    }
}

$conn->close();
?>

复制

其中这个插入代码是有查重功能的,按需可以增删。

删除(delete.php):

 0) {
        // 删除该条记录
        $sql_delete = "DELETE FROM resources WHERE id='$id'";
        if (mysqli_query($conn, $sql_delete)) {
            echo 'success';
        } else {
            echo 'failed';
        }
    } else {
        echo 'record_not_found';
    }
} else {
    echo 'password_error';
}

$conn->close();
?>

复制

其中 ,password是需要自己设置的,也就是说,我们是通过直接设置密码来验证的,并不是数据库,验证密码通过后就可以直接对数据进行删除操作。

在操作按钮处调用这俩页面,需要设置一个窗口,并设置相关的按钮,完成这个操作。可以直接让ChatGPT直接为我们设置一个按钮,点击后弹出这个输入内容的弹窗,底下加入编辑和删除、取消功能,如图设计:

批量投稿

批量投稿页面使用的是文本框中按格式填写去识别数据的,一行一个资源,数据用英文逗号隔开“,”,备注设置的是非必要内容。

这部分需要长时间多次调试才能设置成功,ChatGPT并不能直接给出正确的结果,需要不断优化和调试。

以下是我的资源库批量投稿的完整代码,数据与上述举例的数据库命名并不对应,所以需要自行修改统一,此页面并非必须,只是我觉得这样上传资源方便些!

= 2 && count($data) <= 3) {
      $name = $conn->real_escape_string(trim($data[0]));
      $url = $conn->real_escape_string(trim($data[1]));
      if (!filter_var($url, FILTER_VALIDATE_URL)) {
        $response = array('status' => 'error', 'msg' => '链接格式错误:' . $url);
        echo json_encode($response);
        exit;
      }
      $tips = count($data) === 3 ? "'" . $conn->real_escape_string(trim($data[2])) . "'" : 'NULL';
      // 查重
      $checkSql = "SELECT COUNT(*) AS count FROM lianjie WHERE name = '$name' AND yunurl = '$url'";
      $checkResult = $conn->query($checkSql);
      if ($checkResult->num_rows > 0) {
        while ($row = $checkResult->fetch_assoc()) {
          $count = intval($row["count"]);
          if ($count > 0) { // 已存在相同记录
            echo json_encode(array('status' => 'error', 'msg' => '已存在相同资源:' . $resource));
            exit;
          }
        }
      }
      array_push($insertValues, "('$name', '$url', $tips)");
    } else {
      // 提示参数不正确
      echo json_encode(array('status' => 'error', 'msg' => '参数格式错误'));
      exit;
    }
  }

  // 执行插入操作
  if (!empty($insertValues)) {
    $sql = "INSERT INTO lianjie (name, yunurl, tips) VALUES " . implode(',', $insertValues) . " ON DUPLICATE KEY UPDATE tips = VALUES(tips)";
    if ($conn->query($sql) === FALSE) {
      echo json_encode(array('status' => 'error'));
    } else {
      echo json_encode(array('status' => 'success'));
    }
  } else {
    echo json_encode(array('status' => 'empty'));
  }
  exit;
}
?>


  

批量添加资源

资源列表(每行一条,格式:“名称,链接,[备注]”) 返回单个投稿提交

   

复制

至此,所有页面的开发已经完成,现在就是对一些页面的优化了,比如数据量比较多之后,该如何设置页码,如何加入搜索功能,还有一些细节需要优化。下面我们继续和ChatGPT一起开发!

三、细节优化

页码

页码的设置相信大家在前面的小轻世界畅聊的例子中已经学会了,这里也简单讲讲吧,这里的页码设置是没有其他页码系统混淆,所以比较方便。

首先要在后端处理每页显示的资源多少:

// 分页相关
$pageSize = 10; // 每页显示的记录数
$page = isset($_GET['page']) ? (int) $_GET['page'] : 1; // 当前页码,默认为1
$start = ($page - 1) * $pageSize; // 每页显示记录的起始位置

复制

另外展示三页页码,其他页码直接用“…”代替,设置上/下一页。

 $pageSize) { ?>

<


复制

搜索

接下来需要设置搜索页面:

搜索

复制

当然别忘了对后端数据进行处理,否则搜索不到结果。

// 判断是否有搜索关键词
if (isset($_GET['q'])) {
  $q = $_GET['q'];
  // 查询符合条件的总记录数
  $sqlCount = "SELECT COUNT(*) as count FROM lianjie WHERE name LIKE '%$q%'";
  $countResult = mysqli_query($conn, $sqlCount);
  $countRow = mysqli_fetch_assoc($countResult);
  $count = $countRow['count'];
  // 查询符合条件的数据
  $sql = "SELECT * FROM lianjie WHERE name LIKE '%$q%' ORDER BY id DESC LIMIT $start, $pageSize";
} else {
  // 查询总记录数
  $sqlCount = "SELECT COUNT(*) as count FROM lianjie";
  $countResult = mysqli_query($conn, $sqlCount);
  $countRow = mysqli_fetch_assoc($countResult);
  $count = $countRow['count'];
  // 查询当前页数据
  $sql = "SELECT * FROM lianjie ORDER BY id DESC LIMIT $start, $pageSize";
}

复制

以上就是本期教程的全部内容

文章来源于互联网:我用ChatGPT做开发之云盘资源分享系统

阅读全文
下载说明:
1、本站所有资源均从互联网上收集整理而来,仅供学习交流之用,因此不包含技术服务请大家谅解!
2、本站不提供任何实质性的付费和支付资源,所有需要积分下载的资源均为网站运营赞助费用或者线下劳务费用!
3、本站所有资源仅用于学习及研究使用,您必须在下载后的24小时内删除所下载资源,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担!
4、本站站内提供的所有可下载资源,本站保证未做任何负面改动(不包含修复bug和完善功能等正面优化或二次开发),但本站不保证资源的准确性、安全性和完整性,用户下载后自行斟酌,我们以交流学习为目的,并不是所有的源码都100%无错或无bug!如有链接无法下载、失效或广告,请联系客服处理!
5、本站资源除标明原创外均来自网络整理,版权归原作者或本站特约原创作者所有,如侵犯到您的合法权益,请立即告知本站,本站将及时予与删除并致以最深的歉意!
6、如果您也有好的资源或教程,您可以投稿发布,成功分享后有站币奖励和额外收入!
7、如果您喜欢该资源,请支持官方正版资源,以得到更好的正版服务!
8、请您认真阅读上述内容,注册本站用户或下载本站资源即您同意上述内容!
原文链接:https://www.shuli.cc/?p=13249,转载请注明出处。
0

评论0

显示验证码
没有账号?注册  忘记密码?