请实现使用php代码实现1、使用Form表单上传文件,并在服务器上保存这个文件。 2、使用PHP在后台判断是否有已经上传的文件。如果有上传的文件,需要对上传的文件进行解析(HTML显示和按照列进行排序);如果有新的文件上传,用新的文件覆盖以前的文件,并对新的文件进行显示和排序。 2、排序的参数通过URL,或者GET的方式传递给服务器。因为一个CVS文件可能有多个列(不定列),所以排序的超链接需要动态生成。 3、表格的展示使用HTML的table标签,只用显示一个表格即可(CVS只存储一个表格)。4.界面要给用户足够的反馈
时间: 2023-07-16 12:12:12 浏览: 71
好的,下面是代码实现:
1. 使用Form表单上传文件,并在服务器上保存这个文件。
```php
<?php
if(isset($_FILES['file'])) {
$file_name = $_FILES['file']['name'];
$file_tmp = $_FILES['file']['tmp_name'];
$file_type = $_FILES['file']['type'];
// 判断文件类型是否为CSV格式
if($file_type == 'text/csv') {
// 将文件移动到指定目录下
move_uploaded_file($file_tmp, "./uploads/".$file_name);
echo "上传成功!";
} else {
echo "上传文件格式不正确,请上传CSV格式文件!";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传CSV文件</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
```
2. 使用PHP在后台判断是否有已经上传的文件。如果有上传的文件,需要对上传的文件进行解析(HTML显示和按照列进行排序);如果有新的文件上传,用新的文件覆盖以前的文件,并对新的文件进行显示和排序。
```php
<?php
// 首先判断是否有上传的文件
if(count(glob("./uploads/*.csv")) == 0) {
echo "暂无上传的CSV文件,请上传文件!";
} else {
// 获取上传的CSV文件名
$csv_files = glob("./uploads/*.csv");
$csv_file = $csv_files[0]; // 只处理第一个CSV文件
// 判断是否有新的文件上传,如果有则覆盖以前的文件
if(isset($_FILES['file'])) {
$new_file_name = $_FILES['file']['name'];
$new_file_tmp = $_FILES['file']['tmp_name'];
$new_file_type = $_FILES['file']['type'];
// 判断文件类型是否为CSV格式
if($new_file_type == 'text/csv') {
// 删除原来的CSV文件
unlink($csv_file);
// 将新的文件移动到指定目录下
move_uploaded_file($new_file_tmp, "./uploads/".$new_file_name);
$csv_file = "./uploads/".$new_file_name;
} else {
echo "上传文件格式不正确,请上传CSV格式文件!";
}
}
// 解析CSV文件并按照列进行排序
$sort_by = isset($_GET['sort_by']) ? $_GET['sort_by'] : '';
$rows = array();
$fp = fopen($csv_file, 'r');
$header = fgetcsv($fp); // 第一行为表头
while($row = fgetcsv($fp)) {
$rows[] = $row;
}
fclose($fp);
// 按照列进行排序
if($sort_by != '') {
$sort_column = array_search($sort_by, $header); // 获取要排序的列索引
usort($rows, function($a, $b) use ($sort_column) {
return $a[$sort_column] > $b[$sort_column];
});
}
// 生成动态的排序链接
$sort_links = '';
foreach($header as $col) {
if($sort_by == $col) {
$sort_links .= "<th>{$col}</th>";
} else {
$sort_links .= "<th><a href='{$_SERVER['PHP_SELF']}?sort_by={$col}'>{$col}</a></th>";
}
}
// 生成HTML表格
$table = "<table border='1'><thead><tr>{$sort_links}</tr></thead><tbody>";
foreach($rows as $row) {
$table .= "<tr>";
foreach($row as $col) {
$table .= "<td>{$col}</td>";
}
$table .= "</tr>";
}
$table .= "</tbody></table>";
// 显示HTML表格
echo $table;
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>解析CSV文件</title>
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
```
3. 表格的展示使用HTML的table标签,只用显示一个表格即可(CSV只存储一个表格)。
上面的代码已经生成了HTML表格并进行了显示。
4. 界面要给用户足够的反馈。
在代码中已经添加了一些提示信息,比如上传成功、上传文件格式不正确、暂无上传的CSV文件等。此外,如果有新的文件上传,则会覆盖以前的文件,并对新的文件进行处理和显示。
阅读全文