[ASTUCE] Afficher un tableau print_r de façon sympa

Eléphant du PHP | 77 Messages

18 nov. 2013, 22:21

Si vous utilisez de façon régulière les var_dump et autres print_r, parfois je trouve leur affichage pas toujours très 'friendly'.

Je vous propose cette petite fonction:
/** Fonction d'affichage préformaté de variable non typée pour nos débuggages
 * @param unknow $var        : variable, tableau, objet... à afficher
 * @param string $pIsSQL     : True => Mode affichage SQL / String => Couleur du conteneur
 * @param bool $pIsOpen      : True => Conteneur déplié par défaut
 * @return Code HTML d'un conteneur dépliable / repliable avec scrollbar auto
 */
function printr($var, $pIsSQL=false, $pIsOpen=true){
	$lColor = (is_string($pIsSQL)?$pIsSQL:($pIsSQL===true?'#FFF5DD':'#F2FFEE'));
	$pIsSQL = ($pIsSQL===true || $lColor=='#FEE');
	$var = ($pIsSQL===true?wordwrap($var.";\n", 100):$var);
	$lHeight = ($pIsSQL===true?'100px':'200px');
	$lUniqId = uniqid(md5(rand()));
	echo '<table cellspacing="0" cellpadding="0" style="width:100%;border:1px dashed gray;background-color:'.$lColor.';">
            <tr><td><a style="display:block;padding:4px;" href="javascript:void(0);"
                  onClick="var tr = document.getElementById(\'printr_'.$lUniqId.'\');
                        if (tr.style.display!=\'none\') tr.style.display = \'none\';
                        else tr.style.display = \'table-row\';"><img
                  src="../img/sort_down.jpg" border="none" /></a></td></tr>
            <tr style="display:'.($pIsOpen?'table-row':'none').';"
                  id="printr_'.$lUniqId.'"><td><textarea
                  style="padding:2 5px;width:100%;overflow:auto;height:'.$lHeight.';background-color:transparent;
                  border:none;border-top:1px dashed gray;font-size:11px;font-family:monospace;"
                  title="Affichage avec print_r() pour debug" '.($pIsSQL===true?' onFocus="select();"':'').'>';
	@print_r($var);
	echo '</textarea></td></tr></table>';
}
Copiez là dans un fichier config de votre site, c'est à dire un fichier qui es loadé depuis toutes les pages.

Vous pourrez ainsi l'appeler depuis n'importe quel script PHP de votre site.

Elle affiche le contenu de votre tableau de façon plus sympa et en plus vous avez un bouton vous permettant de la plier/déplier.

Il vous suffit de faire printr($Montableau) pour afficher le détail de montableau.
Voici un exemple:
Image

Plus sympa non ?

Rapide:

1. Copiez le code ci-dessus à la fin d'un fichier config appelé partout dans vos scripts.

2 Copiez la petite image sort_down.jpg (en pièce jointe) à copier dans un répertoire /img (A vous de bien spécifier le chemin vers cette image dans la fonction printr. Ici, on a mit printr dans un répertoire config et l'image dans un répertoire même niveau que config noté img/
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par franckm le 19 nov. 2013, 00:12, modifié 1 fois.
Développeur PHP/Javascript/HTML

Mes sites perso :
construire une piscine => http://www.construire-sa-piscine.com
Le cadre végétal => http://www.cadre-vegetal.org

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 nov. 2013, 23:48

ou sinon, il faut installer xdebug
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

19 nov. 2013, 21:22

:mrgreen:
Il en faut peu pour être heureux ......