如何将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
相关产品推荐
相关产品推荐

