alpha_full/admin/themes/theme.functionDump.php
2026-04-06 22:58:51 +02:00

112 lines
4.7 KiB
PHP
Executable File

<?php
$nomFicAppelant = basename(__FILE__);
// if (empty($host)) include("../_conf/dbc.php");
// -----------------------------------------------------
// Connexion PDO
// -----------------------------------------------------
// try {
// $dsn = "mysql:host=$host;dbname=$bdd;charset=utf8";
// $db = new PDO($dsn, $user, $pass);
// $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Gestion des erreurs
// } catch (PDOException $e) {
// echo "Erreur : Impossible de se connecter à MySQL. " . PHP_EOL;
// echo "Erreur de débogage : " . $e->getMessage() . PHP_EOL;
// exit;
// }
// -----------------------------------------------------
// Initialisation des variables
// -----------------------------------------------------
$repD = './themes/dumpTheme/dump-' . $nomTableCibleCss . '.sql';
// -----------------------------------------------------
// Creation de la structure par recup du modele actif
// -----------------------------------------------------
$creation = '';
$creation .= "-- -----------------------------\n";
$creation .= "-- Création de la table " . $nomTableCibleCss . "\n";
$creation .= "-- -----------------------------\n";
try {
// Récupération de la structure de la table src avec PDO
$query = $idPdo->query("SHOW CREATE TABLE " . $nomTableSourceCss);
$createTable = $query->fetch(PDO::FETCH_ASSOC);
$creation .= $createTable['Create Table'] . ";\n\n";
} catch (PDOException $e) {
if (isset($debug[2]) && $debug[2] == '1' ) $debugMsg .= monDebug(2, ['PDOException structure' => $e->getMessage()],'theme.functionDump' ) ;
}
$creation = str_replace($nomTableSourceCss, $nomTableCibleCss, $creation);
// -----------------------------------------------------
// Enregistrement dans le fichier dump
// -----------------------------------------------------
$fichierDump = fopen($repD, "wb");
if ($fichierDump) {
fwrite($fichierDump, $creation);
fclose($fichierDump);
}
// -----------------------------------------------------
// Recup des données et ajout dans le fichier dump
// -----------------------------------------------------
$insertions = '';
$insertions .= "-- -----------------------------\n";
$insertions .= "-- Insertions dans la table " . $nomTableCibleCss . "\n";
$insertions .= "-- -----------------------------\n";
try {
// Utilisation d'un curseur pour parcourir les données en lots
$stmt = $idPdo->query("SELECT * FROM " . $nomTableSourceCss);
while ($mysqlValue = $stmt->fetch(PDO::FETCH_ASSOC)) {
$insertions .= "INSERT INTO " . $nomTableCibleCss . " VALUES(";
$values = [];
foreach ($mysqlValue as $i => $valeur) {
if ($valeur === null) {
$values[] = "NULL";
} else {
$type = gettype($valeur);
// Si c'est une chaîne, ajouter des guillemets
if ($type === 'string') {
$values[] = "'" . addslashes($valeur) . "'";
} else {
$values[] = $valeur;
}
}
}
$insertions .= implode(", ", $values) . ");\n";
// Optimisation de l'écriture en fichier en évitant de stocker tout dans une variable
if (strlen($insertions) > 1024 * 1024) { // Par exemple, 1 Mo
// Écriture partielle dans le fichier pour réduire l'utilisation mémoire
file_put_contents($repD, $insertions, FILE_APPEND);
$insertions = ''; // Réinitialiser la variable
}
}
} catch (PDOException $e) {
if (isset($debug[2]) && $debug[2] == '1' ) echo 'PDOException datas=' . $e->getMessage();
}
// -----------------------------------------------------
// Enregistrement dans le fichier dump
// -----------------------------------------------------
if ($insertions) {
// Écriture finale si des données restent dans la variable
file_put_contents($repD, $insertions, FILE_APPEND);
}
// -----------------------------------------------------
// Debug
// -----------------------------------------------------
if (isset($debug[2]) && $debug[2] == '1') { $debugMsg .= monDebug(2, ['table creation' => $creation], '');}
if (isset($debug[2]) && $debug[2] == '1') { $debugMsg .= monDebug(2, ['table insertions' => $insertions], '');}
// // Fonction pour obtenir le type d'un champ avec PDO
// function pdo_field_type($resConn, $field_offset) {
// // Utilisation de PDO pour obtenir le type d'un champ
// $stmt = $resConn->query("DESCRIBE " . $resConn->getTableName());
// $fields = $stmt->fetchAll(PDO::FETCH_ASSOC);
// return $fields[$field_offset]['Type'] ?? null;
// }
?>