Exporter une base de données en HTML
Voici un petit script PHP qui sert à exporter le contenu d'une table (ou n'importe quel objet ou tableau) dans des pages web HTML.
Cela peut-être très utile pour faire un snapshot de tout le contenu d'un site internet (sans sa mise en page CSS, uniquement le contenu) qui soit lisible par un être humain, car toutes les données se présentent sous la forme d'un document HTML et pas d'un obscur dump SQL. Je m'en sers parfois pour déposer du contenu sous copyright (droit d'auteur).
Ce script contient une fonction buildpage auquel on passe un tableau (la liste des champs d'un enregistrement de base de données par exemple), et la fonction génère le code HTML d'une page web avec une mise en page de base.
<?php require 'buildpage.lib.php'; $content = buildpage( array( 'id' => 10, 'titre' => "Tutoriel d'exemple", 'date' => '2013-03-10 14:36:00', 'description' => str_repeat('<div>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam sit amet nisi ipsum.</div>', 15) ), array( 'title' => 'Demo', // <title> de la page web 'baseurl' => 'http://www.finalclap.com/' // Utile pour les liens relatifs et les images ) ); echo $content; ?>
Voici à quoi ressemble la page générée :
Exporter une table en HTML
Voilà un autre exemple qui montre comment utiliser cette fonction pour exporter tous les enregistrements d'une table dans des fichiers HTML séparés :
Si vous voulez en savoir plus c'est par ici : gérer ses comptes avec excel.
<?php require 'buildpage.lib.php'; // Init dossier d'export $exportDir = 'export-faq '.date('Y-m-d'); if( !is_dir($exportDir) ) mkdir($exportDir, 0777, true); // Sélection des enregistrements à exporter $db->connexion(); $result = $db->query("SELECT id, permalien, created, titre, title, contenu FROM faq ORDER BY id ASC"); $db->close(); $i = 0; while( $row = mysql_fetch_object($result) ){ $filename = $row->id.'-'.$row->permalien.'.html'; $filecontent = buildpage($row, array( 'title' => $row->titre, 'baseurl' => 'http://www.finalclap.com/' )); file_put_contents($exportDir.'/'.$filename, $filecontent); $i++; } echo $i." enregistrements exportés."; ?>
Buildpage
Ci-dessous, le code de la fonction buildpage utilisé dans ce tutoriel :
<?php /** * Produit une page HTML qui liste les champs d'un objet */ function buildpage($data, $metadata = array()){ // Normalisation paramétres if( is_array($data) ) $data = (object)$data; if( !is_object($data) ){ trigger_error('$data is not an object nor an array', E_USER_WARNING); return false; } // Mise en cache de la sortie ob_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php echo isset($metadata['title']) ? $metadata['title'] : ''; ?></title> <?php if( !empty($metadata['baseurl']) ): ?> <base href="http://www.finalclap.com/" /> <?php endif; ?> <style type="text/css"> body{font:14px Arial; background-color:#eee; margin:0; padding:10px 20px;} .field{margin:0 0 20px;} .field .name {float:left; width:200px; padding:7px 10px; background-color:#ddd;} .field .value {float:left; padding:4px; min-height:16px; background-color:white; border:3px solid #ddd;} </style> </head> <body> <pre> <?php echo "Date: ".date('Y-m-d H:i:s')."\n"; echo "Script name: ".$_SERVER['SCRIPT_NAME'] ?> </pre> <?php foreach( $data as $key => $val ): if(empty($val)) continue; ?> <div class="field"> <div class="name"><?php echo $key; ?></div> <div class="value"><?php echo $val; ?></div> <div style="clear:left;"></div> </div> <?php endforeach; ?> </body> </html> <?php // Récupération du contenu du cache return ob_get_clean(); } ?>
Découvrez ce tutoriel photoshop : typo papier cartonné à lire tout de suite !