| Current Path : /home/h/a/p/happyrenas/myreco.online/administration/panel/ |
Linux webd005.cluster105.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 |
| Current File : /home/h/a/p/happyrenas/myreco.online/administration/panel/importation_resultat.php |
<?
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/../');
include("../../configuration.php");
setlocale(LC_TIME, 'fr_FR.UTF-8');
function getColonnesTable($nomTable, $connexion) {
$sql = "
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '$nomTable'
AND TABLE_SCHEMA = DATABASE()
ORDER BY ORDINAL_POSITION
";
$result = $connexion->get_results($sql); // avec ezSQL
$colonnes = [];
foreach ($result as $row) {
$colonnes[] = $row->COLUMN_NAME;
}
return $colonnes;
}
$champs_obligatoires = [
'name',
'latitude',
'longitude',
'postal_code',
'city',
'country_code',
'rating',
'reviews',
];
// Vérifie que le fichier a été uploadé
if (!isset($_FILES['fichier']) || $_FILES['fichier']['error'] !== UPLOAD_ERR_OK) {
die("Erreur lors de l'upload du fichier.");
}
require_once 'phpspreadsheet/PhpOffice/autoload.php';
use PhpOffice\PhpSpreadsheet\Reader\Csv;
use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
$fichier = $_FILES['fichier']['tmp_name'];
$extension = strtolower(pathinfo($_FILES['fichier']['name'], PATHINFO_EXTENSION));
try {
if ($extension === 'csv') {
$reader = new Csv();
$reader->setInputEncoding('UTF-8'); // ou ISO-8859-1 si ton CSV est Windows
$reader->setDelimiter(','); // ✅ bon séparateur
$reader->setEnclosure('"'); // ✅ important pour parser correctement les valeurs entre guillemets
} elseif ($extension === 'xlsx') {
$reader = new Xlsx();
} else {
die("Format de fichier non supporté.");
}
$spreadsheet = $reader->load($fichier);
$sheet = $spreadsheet->getActiveSheet();
$donnees = $sheet->toArray(null, true, true, true);
} catch (Exception $e) {
die("Erreur lors de la lecture du fichier : " . $e->getMessage());
}
// Convertir les en-têtes de colonnes en noms
$entetes = array_shift($donnees);
$entetes_assoc = [];
foreach ($entetes as $col) {
$col = trim($col);
$col = trim($col, "\"'"); // supprime les guillemets doubles et simples
$entetes_assoc[] = $col;
}
echo "<pre>";
print_r($entetes_assoc);
echo "</pre>";
$colonnes_bd = getColonnesTable('vis', $db);
$erreurs = [];
$donnees_valides = [];
// Validation des entêtes
foreach ($champs_obligatoires as $champ) {
if (!in_array($champ, $entetes_assoc)) {
$erreurs[] = "Champ obligatoire manquant dans le fichier : <strong>$champ</strong>";
}
}
if (!empty($erreurs)) {
foreach ($erreurs as $err) echo "<p style='color:red;'>$err</p>";
exit;
}
// Traitement ligne par ligne
foreach ($donnees as $index => $ligne) {
$ligne_assoc = array_combine($entetes_assoc, array_values($ligne));
$ligne_erreurs = [];
// Vérification des champs obligatoires
foreach ($champs_obligatoires as $champ) {
if (empty($ligne_assoc[$champ])) {
$ligne_erreurs[] = "Ligne " . ($index + 2) . " : champ <strong>$champ</strong> vide.";
}
}
if (empty($ligne_erreurs)) {
$donnees_valides[] = $ligne_assoc;
} else {
$erreurs = array_merge($erreurs, $ligne_erreurs);
}
}
// Résultat de la validation
if (!empty($erreurs)) {
echo "<h3>Erreurs détectées :</h3>";
foreach ($erreurs as $err) echo "<p style='color:red;'>$err</p>";
echo "<p><a href='javascript:history.back()'>⤺ Retour</a></p>";
exit;
}
// Insertion des données validées
foreach ($donnees_valides as $ligne) {
$champs = [];
$valeurs = [];
foreach ($champs_obligatoires as $champ) {
$champs[] = "`$champ`";
$valeurs[] = "'" . $db->escape($ligne[$champ]) . "'";
}
$sql = "INSERT INTO vis (" . implode(',', $champs) . ") VALUES (" . implode(',', $valeurs) . ")";
echo $sql."<br>";
//$db->query($sql);
}
// À ce stade : $donnees_valides contient toutes les lignes OK
session_start();
$_SESSION['import_donnees'] = $donnees_valides; // on stocke temporairement
echo "<h3>Données prêtes à être importées :</h3>";
echo "<form method='POST' action='valider_import.php'>";
echo "<table border='1' cellpadding='5' cellspacing='0'><thead><tr>";
// En-têtes
foreach (array_keys($donnees_valides[0]) as $col) {
echo "<th>$col</th>";
}
echo "</tr></thead><tbody>";
// Lignes
foreach ($donnees_valides as $ligne) {
echo "<tr>";
foreach ($ligne as $val) {
echo "<td>" . htmlspecialchars($val) . "</td>";
}
echo "</tr>";
}
echo "</tbody></table>";
echo "<br><button type='submit'>✅ Confirmer l’importation</button>";
echo "</form>";
?>