begin process at 2012 05 27 16:36:56
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > AFFICHAGE D'UN TABLEAU HTML À PARTIR D'UN ARRAY

AFFICHAGE D'UN TABLEAU HTML À PARTIR D'UN ARRAY


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :affichage, tableau, html, array Niveau :Débutant Date de création :12/07/2004 Date de mise à jour :25/04/2005 09:35:27 Vu :9 896

Auteur : Vince66

Ecrire un message privé
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

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

  • <?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";
  • }
  • }
  • ?>
<?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 :)


 Historique

13 juillet 2004 08:06:15 :
Suite au commentaire de Anthomicro : - J'ai mis les balises en minuscules alors qu'elles étaient en majuscules. - J'ai retiré les ereg pour vérifier la présence du # pour les couleurs du style .
13 juillet 2004 08:13:36 :
Correction de quelques erreurs dues à un oubli :)
13 juillet 2004 10:03:25 :
- Mise entre quote de certains echo. - Suppression des ereg pour le contrôle des paramètres passés
25 avril 2005 09:30:15 :
modification de la syntaxe des If pour une meilleur lisibilité.
25 avril 2005 09:35:27 :

 Sources du même auteur

CLASSE MYSQL UTILISANT LES FONCTIONS PDO
GÉNÉRATEUR DE LISTE DÉROULANTE

 Sources de la même categorie

Source avec une capture MODULE JOOMLA 1.5 NOW LISTENING par Alcantornet
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK

 Sources en rapport avec celle ci

PARCOURS DE TABLEAU À L'AIDE D'ATTRIBUTS HTML "NAME par choy
Source avec Zip EXÉCUTER DES REQUETE STYLE SQL SUR UN ARRAY par prince418
EQUIVALENT DE INNERHTML JAVASCRIPT, MAIS GLOBAL par 8Tnerolf8
DÉTERMINATION DU CHEMIN D'INDEXAGE MENANT À UNE VALEUR DANS ... par 8Tnerolf8
Source avec Zip XML ET TABLEAUX : UNE CLASSE COMPLÈTE QUI CONVERTIT UN DOCUM... par DaCodeManiak

Commentaires et avis

Commentaire de Anthomicro le 12/07/2004 23:26:42

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 ++

Commentaire de Vince66 le 13/07/2004 07:56:35

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 ;-)

@+

Commentaire de Vince66 le 13/07/2004 07:59:27

Je voulais ajouter que c'était effectivement dans le cadre du développement d'un forum que j'ai créé cette fonction.
Bien vu ;-)

Commentaire de Anthomicro le 13/07/2004 09:30:55

;-)

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 ++

Commentaire de Anthomicro le 13/07/2004 09:31:34

;-)

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 ++

Commentaire de Anthomicro le 13/07/2004 09:38:07

oups

Commentaire de Vince66 le 13/07/2004 10:10:02

Merci pour tes suggestions, encore quelques choses que j'apprend comme le coup des quotes qui accelere (même d'un cheveu) le processus par rapport aux doubles quotes. Même si je reste sceptique sur ce fait, j'ai fait la mise à jour, cela rend le code un peu plus propre :-)
J'ai également enlevé les ereg, tu as raison, il suffit de savoir utiliser la fonction correctement :-P

Pour la gestion des styles j'ai pensé à utiliser une classe STYLE.  Je vais essayer de travailler l'idée...

Commentaire de Anthomicro le 13/07/2004 10:48:31

C'est sûr que l'accélération procurée par les simples quotes est plus que négligeable, mais au moins tu es sûr d'avoir le code le plus rapide possible, (et encore je crois que de mettre des virgules à la place des points accélère encore un peu)

Commentaire de Anthomicro le 13/07/2004 10:56:53

Sinon pour tester tu fais un array avec une quantité très importante d'éléments (10.000 par exemple) et tu testes les temps de génération avec les scripts dispos sur phpcs, poste ensuite les résultats des différentes méthodes stp ;-)

Commentaire de Anthomicro le 13/07/2004 23:43:11

J'ai fait quelques tests :

l'incrémentation en $i+=1 est plus rapide que $i++

les simples quotes sont plus rapides que les doubles quotes, et les virgules sont légèrement encore plus rapides.

a +

Commentaire de Vince66 le 14/07/2004 02:06:41

Voilà des tests interessants... mais est-ce vraiment utile de faire ces changements ? Gagne t'on 1 seconde ou seulement quelques centièmes ? Je ferais un essai.

Par contre, pour le test d'un tableau imposant, je n'ai pas encore de base à exploiter et je me vois mal saisir un tableau de 10 000 lignes :-S

En tout cas, merci pour ton interêt pour mon code, ça fait toujours plaisir.
@+

Commentaire de Anthomicro le 14/07/2004 10:05:09

Bah tu ne gagnes que quelques centièmes ou millilièmes, mais tout ça mis bout à bout tu allèges quand même ton serveur. Pour les expressions régulières par contre le gain est plus notable.

a +

Commentaire de yann_solo le 01/09/2004 11:02:04

merci pour ce code sympathique et agreable.
De mon cote j ai enleve tout ce qui concerne le style pour laisser faire le css.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

afficher une longue variable php sur plusieurs lignes dans un tableau html [ par bastiencb ] je ne parvient pas à ce que les variables trop longues (un texte entier)que j'extrait de ma base de données mysql s'affichent dans un tableau html sur tri tableau 2 dimensions [ par lebobby ] Bonjour je voudrais savoir comment je pourrais faire pour trier ce tableau :$tab[0]=array("i"=&gt;"23", "c" =&gt; "rge", "date" =&gt;'2002-08-03 12:00 Affichage html & cadre [ par lastwhirlwind ] (&#168;:._LastWhirlwind_.:&#168;) Salut a tous voila G une page possedant plusieur ta [MySQL] Sauvegarde d'un tableau dans une table [ par cedvoyage ] Bonjour,J'aimerais sauvegarder un tableau (multimensionnel) dans ma base MySQL.Or quand j'essaye je n'ai que 'Array' de marquer dans le champ de ma ta tableau html vers Mysql [ par logbird1 ] je cherche une fonction qui me permettrais de charger dans une table Mysql un tableau html directement ?qqn a-t-il deja fait cela ?logbird MySql-Tableau HTML formattée [ par carlitos_brown ] Bonjour à tous,J'ai une table MySql (composée d'un champ titre et d'autres champs ligne1,ligne 2, ligne 3, etc) sur laquelle je fais une reqûete SELEC Affichage...suite de tableau [ par Brikse ] Hello tout le monde.... Je rencontre un problème au niveau de l'affichage dans mon code PHP. Alors, le truc est simple.J'ai un code qui insère une ima Balises HTML et affichage ... [ par Tomcube ] Existe-t-il des scripts qui permettent d'ajouter une mise en forme aux messages de la même manière que le permet le HTML, mais avec une syntaxe plus s pb tableau HTML [ par Joez ] Bonjour voila, je dois remplir un tableau HTML ( 4 x 4 ) en remplissant ligne par ligne. Comment faire pour remplir d'abord les 4 premieres cellules d Tableau (array) (pour les pros du PHP) [ par jockos ] Bonjour,J'ai 2 questions très techniques auxquel je n'ai trouvé AUCUNE réponse sur les nombreux sites et manuels PHP.Est-ce que les élements d'un tabl


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales