PHPでCSVインポート機能を作る方法
PHPでCSVインポート機能を作る方法を紹介します。このサンプルでは、ユーザーが選択したCSVファイルをサーバーへアップロードし、データを読み込んで取り込むことができます。管理画面への一括データ登録や商品情報の取り込み、会員情報の移行などを行いたい場合に利用できます。
コードについて
本記事のコードはサンプルコードです。ご利用前に必ず動作確認を行ってください。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
免責事項 本コードの利用により発生した損害について、当サイトは一切の責任を負いません。
デモ
CSVインポート
コードをコピーして使おう!
<?php
$message = '';
// インポートしたCSVは元のファイル名で保存します
$save_file = '';
// フォーム送信時の処理です
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// CSVファイルが選択されているか確認します
if (
isset($_FILES['csv_file']) &&
$_FILES['csv_file']['error'] === UPLOAD_ERR_OK
) {
// アップロードされたファイル名を取得します
$file_name = basename($_FILES['csv_file']['name']);
// 拡張子を取得します
$extension = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
// CSVファイルかどうかを確認します
if ($extension === 'csv') {
// アップロードされたCSVを元のファイル名で保存します
$save_file = $file_name;
if (move_uploaded_file($_FILES['csv_file']['tmp_name'], $save_file)) {
$message = $file_name . ' をインポートしました。';
} else {
$message = 'CSVファイルのインポートに失敗しました。';
}
} else {
$message = 'CSVファイルを選択してください。';
}
} else {
$message = 'CSVファイルを選択してください。';
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>CSVインポート</title>
<style>
body{
font-family:sans-serif;
background:#f8fafc;
margin:40px;
}
.php-csv-import_wrap{
max-width:700px;
margin:0 auto;
padding:24px;
border:1px solid #e5e7eb;
border-radius:18px;
background:#ffffff;
}
.php-csv-import_title{
font-size:22px;
font-weight:bold;
margin-bottom:20px;
}
.php-csv-import_file{
width:100%;
margin-bottom:16px;
}
.php-csv-import_button{
width:100%;
height:46px;
border:none;
border-radius:10px;
background:#0b6bff;
color:#ffffff;
font-weight:bold;
cursor:pointer;
}
.php-csv-import_result{
margin-top:16px;
padding:14px;
border:1px solid #bbf7d0;
border-radius:12px;
background:#f0fdf4;
color:#15803d;
}
</style>
</head>
<body>
<div class="php-csv-import_wrap">
<div class="php-csv-import_title">
CSVインポート
</div>
<form method="post" enctype="multipart/form-data">
<input
class="php-csv-import_file"
type="file"
name="csv_file"
accept=".csv"
>
<button class="php-csv-import_button" type="submit">
CSVをインポートする
</button>
</form>
<?php if ($message !== ''): ?>
<div class="php-csv-import_result">
<?= htmlspecialchars($message, ENT_QUOTES, 'UTF-8') ?>
</div>
<?php endif; ?>
</div>
</body>
</html>
ファイル構成と設置方法
このサンプルでは、index.php を配置するだけで利用できます。ユーザーが選択したCSVファイルは、元のファイル名のまま index.php と同じフォルダへ保存されます。
sample/
└── index.php
(CSVインポート後の例)
sample/
├── index.php
└── sample.csv
index.php をサーバーへアップロードし、ブラウザからアクセスしてください。CSVファイルを選択して「CSVをインポートする」をクリックすると、選択したCSVファイルが元のファイル名のままサーバーへ保存されます。同じ名前のCSVファイルが存在する場合は上書きされます。
コメント