Affichage d'un tableau html à partir d'un array

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 802 fois - Téléchargée 30 fois

Contenu du snippet

C'est une fonction qui permet de générer un tableau HTML à partir d'un array passé en paramètre. Elle gère également les array multidimensions. La définition de la présentation du tableau est possible.

Source / Exemple :


<?php
function create_table($tableau, $size, $text_align, $border_style, $border_width, $border_color, $background)
{
	$nblignes=count ($tableau); //On compte le nombre de lignes dans le tableau
	if ($nblignes!=0) { //Si il y a au moins une ligne alors on débutte le processus d'affichage

		$style="";  //Gestion des styles du tableau
		if ($size)  //taille du tableau
			$style.='width:'.$size.';';
		if ($text_align)    //Alignement du texte dans les cellules 
			$style.='text-align:'.$text_align.';';
		if ($border_style)  //Type de bordure
			$style.='border-style:'.$border_style.';';
		if ($border_width)  //Taille de bordure
			$style.='border-width:'.$border_width.';';
		if ($border_color)  //Couleur de bordure
			$style.='border-color:'.$border_color.';';
		if ($background)    //Couleur du background
			$style.='background:'.$background.';';

		echo "\r\n<table";
		if ($style) {    //Si un style est défini
			echo ' style="'.$style.'"';
		}
		echo ">\r\n";

		$i=0;    //Compteur de lignes
		while ($i!=$nblignes) { //Boucle qui affiche les lignes HTML
			echo "\t<tr>\r\n";  //Affichage de la ligne

			if (is_array ($tableau[$i])) {
				$nbcols=count ($tableau[$i]); //On récupère le nombre de colonnes
				$j=0; //Compteur de colonnes
				while ($j!=$nbcols) {    //Boucle qui affiche les colonnes
					echo "\t\t<td>".$tableau[$i][$j]."</td>\r\n";    //Affichage des colonnes
					$j++;
				}
			} else {
				echo "\t\t<td>".$tableau[$i]."</td>\r\n";    //Affichage des colonnes
			}

			echo "\t</tr>\r\n";
			$i++;
		}

		echo "</table>\r\n";
	}
}
?>

Conclusion :


Voilà un exemple pour tester la fonction :
$temp=array (array ("lig0 col0", "lig0 col1", "lig0 col2"), "lig1 col0", array ("lig2 col0", "lig2 col1"));
create_table ($temp, "720px", "center", "solid", "1px", "#000000", "#CCCCCC");

Je compte l'améliorer dans les possiblités d'affichages du tableau.
Je suis ouvert à toute remarque ou bug découvert :)

A voir également

Ajouter un commentaire Commentaires
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
12 juil. 2004 à 23:26
Salut ;-)

ton code pourrait être utile pour un forum je pense.

Reste juste à le rendre compatible XHTML (commence par mettre le nom des balises en minuscules)

Par contre les fonctions ereg() étant assez gourmandes autant ne pas vérifier si le # est présent, tu mets directement ta couleur avec le # comme ça pas de # à rajouter, moins de code et plus de rapidité ;-)

Ce ne sont que des suggestions :-)

a ++
Vince66 Messages postés 28 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 5 octobre 2011
13 juil. 2004 à 07:56
Salut :)
Je ne savais pas que la casse des balises avait une importance dans la compatibilité du code. Je vais changer ça :-)

Pour la fonction ereg, effectivement ça me semblait un peu lourd mais en même temps je souhaitait faire une fonction relativement souple pour le codeur qui l'utilise.
Mais bon, comme tu dis, ce sera plus rapide sans. Il suffit de faire attention à bien passer les paramètres comme il faut.

Merci pour tes suggestions et tes conseils, je vais mettre à jour tout ça ;-)

@+
Vince66 Messages postés 28 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 5 octobre 2011
13 juil. 2004 à 07:59
Je voulais ajouter que c'était effectivement dans le cadre du développement d'un forum que j'ai créé cette fonction.
Bien vu ;-)
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
13 juil. 2004 à 09:30
;-)

Tu peux aussi enlever tous les eregs qui contrôlent les divers pourcentages et alignements, il suffit d'entrer les paramètres correctement dans la fonction. Compares ensuite les deux temps de génération :-)

Et pour accélérer vraiment mais moins qu'un cheveu lol tu peux remplacer les doubles quotes des echo " " par des simples quotes (seulement les echo qui ne contiennent pas les caractères \r\n ou \t\t car ces caractères de retour chariot, retour à la ligne et tabulation ne seront pas interprétés entre les simple quotes, alors qu'entre les doubles quotes ils modifieront le code source final.

Donc quelques echo ou variables à modifier :

$style.='width:'.$size.';';

$style.='text-align:'.$text_align.';';

$style.='border-style:'.$border_style.';';

$style.='border-width:'.$border_width.';';

$style.='border-color:'.$border_color.';';

$style.='background:'.$background.';';

a ++
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
13 juil. 2004 à 09:31
;-)

Tu peux aussi enlever tous les eregs qui contrôlent les divers pourcentages et alignements, il suffit d'entrer les paramètres correctement dans la fonction. Compares ensuite les deux temps de génération :-)

Et pour accélérer vraiment mais moins qu'un cheveu lol tu peux remplacer les doubles quotes des echo " " par des simples quotes (seulement les echo qui ne contiennent pas les caractères \r\n ou \t\t car ces caractères de retour chariot, retour à la ligne et tabulation ne seront pas interprétés entre les simple quotes, alors qu'entre les doubles quotes ils modifieront le code source final.

Donc quelques echo ou variables à modifier :

$style.='width:'.$size.';';

$style.='text-align:'.$text_align.';';

$style.='border-style:'.$border_style.';';

$style.='border-width:'.$border_width.';';

$style.='border-color:'.$border_color.';';

$style.='background:'.$background.';';

a ++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.