Amélioration de l'affichage du debug. Ça soulage un peu...

This commit is contained in:
Georges Dupéron 2010-10-14 19:08:39 +02:00
parent c0136f67ce
commit bdc1fc7016
3 changed files with 67 additions and 35 deletions

View File

@ -15,7 +15,7 @@ class BDD {
Config::get('db_mot_de_passe') Config::get('db_mot_de_passe')
); );
if (!is_resource(self::$handle)) { if (!is_resource(self::$handle)) {
Debug::error("Échec à la connexion à la base de données"); Debug::erreur("Échec à la connexion à la base de données");
} }
// TODO : begin transaction à la 1ere écriture. // TODO : begin transaction à la 1ere écriture.
self::begin_transaction(); self::begin_transaction();
@ -42,7 +42,7 @@ class BDD {
public static function init() { public static function init() {
self::unbuf_query("create database if not exists " . Config::get('db_base')); self::unbuf_query("create database if not exists " . Config::get('db_base'));
mysql_select_db(Config::get('db_base'), self::$handle) or Debug::sqlerror(); mysql_select_db(Config::get('db_base'), self::$handle) or Debug::erreur_sql();
if (count(self::select("show tables like '" . self::table("_pages") . "'")) == 1) { if (count(self::select("show tables like '" . self::table("_pages") . "'")) == 1) {
Debug::info("La base de données est déjà initialisée, on continue..."); Debug::info("La base de données est déjà initialisée, on continue...");
@ -113,13 +113,13 @@ class BDD {
} }
public static function unbuf_query($q) { public static function unbuf_query($q) {
debug::info("sql : " . $q . ";"); debug::sql($q . ";");
mysql_unbuffered_query($q . ";", self::get()) or Debug::sqlerror(); mysql_unbuffered_query($q . ";", self::get()) or Debug::erreur_sql();
} }
public static function select($q) { public static function select($q) {
debug::info("sql : " . $q); debug::sql($q);
$qres = mysql_query($q, BDD::get()) or Debug::sqlerror(); $qres = mysql_query($q, BDD::get()) or Debug::erreur_sql();
$ret = array(); $ret = array();
while ($row = mysql_fetch_array($qres)) { while ($row = mysql_fetch_array($qres)) {
$ret[] = $row; $ret[] = $row;
@ -131,18 +131,18 @@ class BDD {
public static function select_one($q, $strict = true) { public static function select_one($q, $strict = true) {
$res = self::select($q); $res = self::select($q);
if ($strict && count($res) != 1) { if ($strict && count($res) != 1) {
Debug::error("Un rang de la base de données a été demmandé, mais, soit aucun rang correspondant aux critères n'a été trouvé, soit plusieurs ont été trouvés."); Debug::erreur("Un rang de la base de données a été demmandé, mais, soit aucun rang correspondant aux critères n'a été trouvé, soit plusieurs ont été trouvés.");
return null; return null;
} }
if (count($res) == 0) { if (count($res) == 0) {
Debug::error("Un rang de la base de données a été demmandé, mais, aucun rang correspondant aux critères n'a été trouvé."); Debug::erreur("Un rang de la base de données a été demmandé, mais, aucun rang correspondant aux critères n'a été trouvé.");
} }
return $res[0][0]; return $res[0][0];
} }
public static function modify($q) { public static function modify($q) {
debug::info("sql : $q;"); debug::sql($q . ";");
mysql_unbuffered_query($q . ";", self::get()) or Debug::sqlerror(); mysql_unbuffered_query($q . ";", self::get()) or Debug::erreur_sql();
// http://stackoverflow.com/questions/621369/sql-insert-and-catch-the-id-auto-increment-value // http://stackoverflow.com/questions/621369/sql-insert-and-catch-the-id-auto-increment-value
return mysql_insert_id(self::get()); return mysql_insert_id(self::get());
} }
@ -154,7 +154,7 @@ class BDD {
public static function close() { public static function close() {
if (is_resource(self::$handle)) { if (is_resource(self::$handle)) {
self::commit(); self::commit();
mysql_close(self::get()) or Debug::sqlerror(); mysql_close(self::get()) or Debug::erreur_sql();
self::$handle = null; self::$handle = null;
} }
} }

View File

@ -1,38 +1,69 @@
<?php <?php
class Debug { class Debug {
public static $errors = array(); public static $types_erreur = array(
public static function niy($msg) { "erreur" => '<span style="color:red">Erreur</span>',
array_push(self::$errors, "Not implemented yet : $msg"); "niy" => '<span style="color:brown">Pas encore implémenté</span>',
"info" => '<span style="color:blue">Info</span>',
"sql" => 'Requête SQL',
"erreur_sql" => 'Erreur SQL',
"permission" => '<span style="color:red">Permission non accordée</span>'
);
public static $filtre_erreurs = array(
"erreur" => true,
"niy" => true,
"info" => true,
"sql" => false,
"erreur_sql" => true,
"permission" => true
);
public static $toutes_erreurs = false; // true <=> ignorer le filtre.
public static $erreurs = array();
public static function __callStatic($nom, $args) {
if (!array_key_exists($nom, self::$types_erreur)) {
self::erreur("Type d'erreur inconnu : " . $nom . "\nArguments de Debug::$nom() : " . var_export($args, true));
} elseif (count($args) != 1) {
self::erreur("Mauvais nombre d'arguments pour Debug::$nom().\nArguments : " . var_export($args, true));
} else {
self::push($nom, $args[0]);
} }
public static function info($msg) {
array_push(self::$errors, "Info : $msg");
} }
public static function error($msg) { public static function push($cat, $msg) {
array_push(self::$errors, "Error : $msg"); array_push(self::$erreurs, array($cat, $msg));
self::afficher(true, true, false); }
echo "\n"; public static function erreur($msg) {
self::push("erreur", $msg);
self::die_btrace();
}
public static function erreur_sql() {
self::push("erreur_sql", mysql_error());
self::die_btrace();
}
public static function die_btrace() {
echo self::afficher(true, true, false);
echo '<div style="margin:1em 0 0.5em;background-color: #ffbf80;border-top:thin solid red;border-bottom:thin solid red;">Backtrace</div>';
debug_print_backtrace(); debug_print_backtrace();
self::afficher(false, false, true); echo self::afficher(false, false, true);
die(); die();
} }
public static function sqlerror() {
self::error("MySQL : " . mysql_error());
}
public static function afficher($start = true, $print = true, $end = true) { public static function afficher($start = true, $print = true, $end = true) {
$ret = "";
if ($start) { if ($start) {
echo "<pre>"; $ret .= '<pre style="padding-bottom:0.3em;border:thin solid red;">';
echo '<span style="color:red">Erreurs:</span>' . "\n"; $ret .= '<div style="margin-bottom:0.5em;background-color: pink;border-bottom:thin solid red;">Erreurs</div>';
} }
if ($print) { if ($print) {
foreach (self::$errors as $e) { foreach (self::$erreurs as $e) {
echo $e . "\n"; if (self::$toutes_erreurs === true || self::$filtre_erreurs[$e[0]] === true) {
$ret .= self::$types_erreur[$e[0]] . " : " . $e[1] . "\n";
}
} }
} }
if ($end) { if ($end) {
echo '<span style="color:red">Fin erreurs.</span>' . "\n"; $ret .= "</pre>";
echo "</pre>";
} }
return $ret;
} }
} }

View File

@ -19,14 +19,15 @@ function main() {
} else { } else {
$page = mPage::page_systeme('racine'); $page = mPage::page_systeme('racine');
} }
$rendu = $page->rendu($res);
echo "<pre>"; $rendu = $page->rendu($res);
echo htmlspecialchars($rendu->to_XHTML_5()); $rendu = htmlspecialchars($rendu->to_XHTML_5());
echo "</pre>";
BDD::close(); BDD::close();
Debug::afficher();
echo Debug::afficher();
echo "<pre>";
echo $rendu;
echo "</pre>"; echo "</pre>";
} }