PHP MVC easyUI 写一个上传Excel到数据库的程序 把上传成功的数据库成功多少行,失败的订单有那些
时间: 2024-04-16 15:26:43 浏览: 109
下面是一个使用PHP MVC和EasyUI的示例程序,用于上传Excel文件到数据库并记录上传成功的行数以及失败的订单:
1. 创建一个名为`UploadController`的控制器,在其中编写处理上传操作的方法`uploadExcel()`:
```php
class UploadController extends Controller {
public function uploadExcel() {
// 检查是否有文件上传
if (!isset($_FILES['file'])) {
// 文件上传失败
$this->view->render('upload', ['error' => '请选择要上传的文件']);
return;
}
$file = $_FILES['file'];
// 检查文件类型,这里假设只接受Excel文件
$allowedTypes = ['application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'];
if (!in_array($file['type'], $allowedTypes)) {
// 文件类型不支持
$this->view->render('upload', ['error' => '只支持上传Excel文件']);
return;
}
// 处理上传文件
$filePath = 'uploads/' . $file['name'];
if (move_uploaded_file($file['tmp_name'], $filePath)) {
// 上传成功,处理Excel文件
require_once 'PHPExcel/PHPExcel.php';
$objPHPExcel = PHPExcel_IOFactory::load($filePath);
$worksheet = $objPHPExcel->getActiveSheet();
$highestRow = $worksheet->getHighestRow();
$successCount = 0;
$failOrders = [];
// 遍历每一行数据,将其保存到数据库中
for ($row = 2; $row <= $highestRow; $row++) {
$orderNumber = $worksheet->getCell('A' . $row)->getValue();
$orderStatus = $worksheet->getCell('B' . $row)->getValue();
// 将订单数据保存到数据库中
// 这里假设有一个名为orders的表用于保存订单数据
// 你可以根据你的数据表结构进行修改
$result = $this->model->saveOrder($orderNumber, $orderStatus);
if ($result) {
$successCount++;
} else {
$failOrders[] = $orderNumber;
}
}
// 删除上传的Excel文件
unlink($filePath);
// 渲染上传结果视图
$this->view->render('uploadResult', ['successCount' => $successCount, 'failOrders' => $failOrders]);
} else {
// 文件移动失败
$this->view->render('upload', ['error' => '文件上传失败']);
}
}
}
```
2. 创建一个名为`UploadModel`的模型,其中包含保存订单数据的方法`saveOrder()`:
```php
class UploadModel extends Model {
public function saveOrder($orderNumber, $orderStatus) {
// 将订单数据保存到数据库中
// 这里假设有一个名为orders的表用于保存订单数据
// 你可以根据你的数据表结构进行修改
// 执行插入操作,并返回结果
// 这里假设使用PDO进行数据库操作
$stmt = $this->db->prepare('INSERT INTO orders (order_number, order_status) VALUES (:orderNumber, :orderStatus)');
$stmt->bindParam(':orderNumber', $orderNumber);
$stmt->bindParam(':orderStatus', $orderStatus);
return $stmt->execute();
}
}
```
3. 创建一个名为`upload.php`的视图文件,用于显示上传表单:
```html
<!-- upload.php -->
<form action="/upload/uploadExcel" method="POST" enctype="multipart/form-data">
<input type="file" name="file">
<button type="submit">上传</button>
</form>
```
4. 创建一个名为`uploadResult.php`的视图文件,用于显示上传结果:
```html
<!-- uploadResult.php -->
<?php if ($successCount > 0): ?>
<p>成功上传 <?php echo $successCount; ?> 行订单。</p>
<?php endif; ?>
<?php if (!empty($failOrders)): ?>
<p>以下订单上传失败:</p>
<ul>
<?php foreach ($failOrders as $order): ?>
<li><?php echo $order; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
```
这是一个简单的示例程序,你可以根据你的实际需求进行修改和扩展。另外,请确保你已经安装了PHPExcel库,并按照你的项目目录结构进行相应的调整。