Contoh Program PHP
Berikut adalah contoh program PHP yang akan:
- Mencari file Excel terbaru di direktori tertentu.
- Mengonversi file Excel ke CSV menggunakan
xlsx2csv.
- Membuat koneksi ke MySQL menggunakan MySQLi.
- Membuat tabel
alamat di database data_alamat jika belum ada.
- Memasukkan data dari file CSV ke dalam tabel menggunakan prepared statement agar insert data dilakukan dengan aman.
Contoh kode:
<?php
// Konfigurasi koneksi MySQL
$host = "localhost";
$user = "root";
$password = "password"; // Ganti dengan password MySQL kamu
$database = "data_alamat";
// Membuat koneksi menggunakan MySQLi
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) {
die("Koneksi gagal: " . $conn->connect_error);
}
// Membuat tabel 'alamat' jika belum ada
$createTable = "CREATE TABLE IF NOT EXISTS alamat (
id INT AUTO_INCREMENT PRIMARY KEY,
nama VARCHAR(255),
alamat TEXT,
kota VARCHAR(100),
kodepos VARCHAR(20)
)";
if (!$conn->query($createTable)) {
die("Gagal membuat tabel: " . $conn->error);
}
// Fungsi untuk mendapatkan file Excel terbaru dari direktori
function getLatestExcelFile($directory) {
$files = glob($directory . "*.xlsx");
if (empty($files)) return false;
usort($files, function($a, $b) {
return filemtime($b) - filemtime($a);
});
return $files[0];
}
// Tentukan direktori file Excel
$excelDir = "/path/to/excel/files/"; // Ganti dengan path direktori file Excel
$latestFile = getLatestExcelFile($excelDir);
if (!$latestFile) {
die("Tidak ada file Excel yang ditemukan!");
}
echo "File yang diproses: $latestFile\n";
// Konversi file Excel ke CSV menggunakan xlsx2csv
$csvFile = "/path/to/csv/output.csv"; // Ganti dengan path output CSV yang diinginkan
$command = "xlsx2csv " . escapeshellarg($latestFile) . " > " . escapeshellarg($csvFile);
system($command);
echo "Perintah konversi: $command\n";
// Pastikan file CSV berhasil dibuat
if (!file_exists($csvFile) || filesize($csvFile) == 0) {
die("File CSV kosong atau tidak ditemukan setelah konversi!");
}
// Membuka file CSV dan memasukkan data ke database dengan prepared statement
if (($handle = fopen($csvFile, "r")) !== FALSE) {
// Membaca header (asumsi baris pertama adalah header)
$header = fgetcsv($handle, 1000, ",");
// Menyiapkan prepared statement untuk insert data
$stmt = $conn->prepare("INSERT INTO alamat (nama, alamat, kota, kodepos) VALUES (?, ?, ?, ?)");
if (!$stmt) {
die("Gagal menyiapkan statement: " . $conn->error);
}
$stmt->bind_param("ssss", $nama, $alamat, $kota, $kodepos);
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// Asumsikan file CSV memiliki kolom: Nama, Alamat, Kota, KodePos (urutan kolom 0, 1, 2, 3)
if (count($data) < 4) continue;
$nama = trim($data[0]);
$alamat = trim($data[1]);
$kota = trim($data[2]);
$kodepos = trim($data[3]);
// Eksekusi statement untuk setiap baris
if (!$stmt->execute()) {
echo "Error: " . $stmt->error . "\n";
}
}
fclose($handle);
$stmt->close();
echo "Data berhasil dimasukkan ke dalam database.\n";
} else {
die("Gagal membuka file CSV!");
}
$conn->close();
?>