Exporter une base de données en HTML

Avril 2013

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 :

Tester /ressources/exemple/faq/buildpage-demo.html
Demo buildpage
Export des champs d'un tableau dans une page web HTML

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 !

0 commentaire
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré