编写PHP页面实现如下功能:一个CSV文件的上传;上传后对CSV进行解析,并以HTML的方式对CSV文件进行展示。另外,文件上传并显示成功后可以按照某个列(用户可选择)的升序或者降序(用户可选择),再生成一个展示界面
时间: 2023-06-27 16:06:41 浏览: 43
以下是一个简单的PHP页面,实现了上传CSV文件并展示的功能。同时,用户可以选择以哪一列为排序依据,以升序或降序方式展示。
```php
<!DOCTYPE html>
<html>
<head>
<title>CSV Parser and Sorter</title>
</head>
<body>
<h1>CSV Parser and Sorter</h1>
<?php
// Check if CSV file has been uploaded
if(isset($_FILES["csv_file"])) {
// Define allowed file extensions
$allowed_ext = array("csv");
// Get file extension
$file_ext = strtolower(end(explode(".", $_FILES["csv_file"]["name"])));
// Check if file extension is allowed
if(in_array($file_ext, $allowed_ext)) {
// Upload file to server
move_uploaded_file($_FILES["csv_file"]["tmp_name"], "uploads/" . $_FILES["csv_file"]["name"]);
// Open uploaded CSV file
$csv_file = fopen("uploads/" . $_FILES["csv_file"]["name"], "r");
// Parse CSV data
$csv_data = array();
while (($data = fgetcsv($csv_file, 1000, ",")) !== FALSE) {
$csv_data[] = $data;
}
// Close CSV file
fclose($csv_file);
// Check if sort column has been selected
if(isset($_POST["sort_column"])) {
// Get sort column index
$sort_column_index = $_POST["sort_column"];
// Check if sort order has been selected
if(isset($_POST["sort_order"])) {
// Get sort order
$sort_order = $_POST["sort_order"];
// Sort CSV data by sort column and sort order
usort($csv_data, function($a, $b) use ($sort_column_index, $sort_order) {
if($sort_order == "asc") {
return $a[$sort_column_index] <=> $b[$sort_column_index];
} else {
return $b[$sort_column_index] <=> $a[$sort_column_index];
}
});
}
}
// Display CSV data as HTML table
echo "<table border='1'>";
foreach($csv_data as $row) {
echo "<tr>";
foreach($row as $cell) {
echo "<td>" . htmlspecialchars($cell) . "</td>";
}
echo "</tr>";
}
echo "</table>";
} else {
echo "Invalid file extension. Only CSV files are allowed.";
}
}
?>
<form method="post" enctype="multipart/form-data">
<label for="csv_file">Upload CSV file:</label>
<input type="file" id="csv_file" name="csv_file"><br>
<label for="sort_column">Sort by column:</label>
<select id="sort_column" name="sort_column">
<option value="">--Select--</option>
<option value="0">Column 1</option>
<option value="1">Column 2</option>
<option value="2">Column 3</option>
<!-- Add more options for additional columns -->
</select><br>
<label for="sort_order">Sort order:</label>
<select id="sort_order" name="sort_order">
<option value="">--Select--</option>
<option value="asc">Ascending</option>
<option value="desc">Descending</option>
</select><br>
<input type="submit" value="Upload and Parse CSV">
</form>
</body>
</html>
```
该页面包括以下功能:
1. 检查上传的文件是否为CSV格式,如果是则将其上传到服务器上的uploads目录中。
2. 打开上传的CSV文件并解析其中的数据,存储在一个二维数组中。
3. 如果用户选择了排序列和排序方式,则按照指定的列和方式对CSV数据进行排序。
4. 将CSV数据以HTML表格的形式展示在页面上,并且允许用户选择排序列和排序方式。