编写PHP页面实现如下功能:一个CSV文件的上传;上传后对CSV进行解析,并以HTML的方式对CSV文件进行展示。另外,文件上传并显示成功后可以按照某个列(用户可选择)的升序或者降序(用户可选择),并重新展示排序后的界面。另外,界面请使用中文
时间: 2023-06-27 21:06:27 浏览: 60
以下是一个简单的 PHP 页面,实现了上传 CSV 文件并以 HTML 的方式展示,并且支持排序功能。
```php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSV 文件上传与展示</title>
</head>
<body>
<h1>CSV 文件上传与展示</h1>
<?php
// 定义上传文件目录和允许上传的文件类型
$upload_dir = './uploads/';
$allowed_types = array('csv');
// 如果用户已经上传了文件
if (isset($_FILES['file']) && $_FILES['file']['error'] == 0) {
$file_name = $_FILES['file']['name'];
$file_type = $_FILES['file']['type'];
$file_size = $_FILES['file']['size'];
$file_tmp = $_FILES['file']['tmp_name'];
// 检查文件类型
$file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
if (!in_array($file_ext, $allowed_types)) {
echo '<p>只允许上传 CSV 文件!</p>';
} else {
// 将文件移动到上传目录
move_uploaded_file($file_tmp, $upload_dir . $file_name);
// 解析 CSV 文件
$csv_data = array();
if (($handle = fopen($upload_dir . $file_name, "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$csv_data[] = $data;
}
fclose($handle);
}
// 根据用户选择的列排序
$sort_column = isset($_POST['sort_column']) ? $_POST['sort_column'] : 0;
$sort_order = isset($_POST['sort_order']) ? $_POST['sort_order'] : 'asc';
if ($sort_order == 'asc') {
usort($csv_data, function($a, $b) use ($sort_column) {
return strcmp($a[$sort_column], $b[$sort_column]);
});
} else {
usort($csv_data, function($a, $b) use ($sort_column) {
return strcmp($b[$sort_column], $a[$sort_column]);
});
}
// 输出 CSV 数据表格
echo '<form method="post">';
echo '<p>请选择要排序的列:<select name="sort_column">';
foreach ($csv_data[0] as $index => $column_name) {
echo '<option value="' . $index . '"' . ($sort_column == $index ? ' selected' : '') . '>' . $column_name . '</option>';
}
echo '</select> <select name="sort_order"><option value="asc"' . ($sort_order == 'asc' ? ' selected' : '') . '>升序</option><option value="desc"' . ($sort_order == 'desc' ? ' selected' : '') . '>降序</option></select> <input type="submit" value="排序"></p>';
echo '<table border="1"><thead><tr>';
foreach ($csv_data[0] as $column_name) {
echo '<th>' . $column_name . '</th>';
}
echo '</tr></thead><tbody>';
foreach (array_slice($csv_data, 1) as $row) {
echo '<tr>';
foreach ($row as $cell) {
echo '<td>' . $cell . '</td>';
}
echo '</tr>';
}
echo '</tbody></table>';
echo '</form>';
}
} else {
// 显示上传表单
echo '<form method="post" enctype="multipart/form-data">';
echo '<p>请选择要上传的 CSV 文件:<input type="file" name="file"></p>';
echo '<p><input type="submit" value="上传"></p>';
echo '</form>';
}
?>
</body>
</html>
```
注意,此代码只是一个简单的示例,实际应用中需要进行更多的错误处理和安全性考虑。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)