You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将HTML与PHP结合,把循环返回的文件添加到下拉框选中后展示内容

PHP表单对接txt文件读取/保存方案

完整可运行代码

<?php
// 配置书籍存放目录,注意末尾不要有多余空格
$path = "books/";
$bookList = [];
$currentContent = '';
$selectedBook = '';

// 遍历目录收集所有txt书籍
if (is_dir($path)) {
    $books = opendir($path);
    while (($book = readdir($books)) !== false) {
        if (substr($book, -4) === ".txt") {
            $bookList[] = $book;
        }
    }
    closedir($books);
}

// 处理加载请求
if (isset($_POST['click']) && $_POST['book'] != 'blank') {
    $selectedBook = $_POST['book'];
    $filePath = $path . $selectedBook;
    if (file_exists($filePath)) {
        $readFile = fopen($filePath, "r+") or die("文件读取权限错误");
        $currentContent = fread($readFile, filesize($filePath));
        fclose($readFile);
    }
}

// 处理保存请求
if (isset($_POST['save']) && $_POST['book'] != 'blank') {
    $selectedBook = $_POST['book'];
    $filePath = $path . $selectedBook;
    $content = $_POST['info'];
    if (file_exists($filePath)) {
        $writeFile = fopen($filePath, "w") or die("文件写入权限错误");
        fwrite($writeFile, $content);
        fclose($writeFile);
        $currentContent = $content;
    }
}
?>
<html>
<head>
    <title>Books Form</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="jquery-3.6.0.js"></script>
    <style>

    </style>
</head>
<body>
    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" id="bookform">
        <label for="books">选择书籍:</label>
        <select name="book" id="books" form="bookform">
            <option value="blank">请选择书籍</option>
            <?php foreach ($bookList as $book): ?>
            <option value="<?php echo $book; ?>" <?php if ($selectedBook == $book) echo 'selected'; ?>><?php echo str_replace('.txt', '', $book); ?></option>
            <?php endforeach; ?>
        </select> <br> <br>
        <button style="position: relative; left: 240px" type="submit" form="bookform" name="click">Load</button> <br> <br>
        <textarea name="info" rows="30" cols="100"><?php echo $currentContent; ?></textarea> <br>
        <button type="submit" form="bookform" name="save" value="Submit">Save</button> <br>
    </form>
</body>
</html>

关键改动说明

  • 目录遍历逻辑调整:不再直接输出文件内容,而是收集所有txt文件名到数组,用于动态生成下拉框选项,无需手动写死option
  • 加载逻辑:选中书籍点击Load按钮后,读取对应文件内容填充到textarea
  • 保存逻辑:修改内容后点击Save按钮,会将修改后的内容写回原txt文件
  • 原有bug修复:
    • 修正路径多余空格、PHP标签空格、closedir缺参数、表单属性不匹配等语法/逻辑错误
    • 选中文件提交后会自动保留下拉框选中状态
    • 移除textarea内部多余缩进,避免内容出现不必要的前置空白

使用注意

  • 请先在代码同级目录创建books文件夹,并给文件夹设置读写权限
  • 所有txt格式的书籍放到books目录下,会自动同步到下拉框选项中

内容的提问来源于stack exchange,提问作者Kasia13130

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 18:06:03