Simple table function

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 990 fois - Téléchargée 29 fois

Contenu du snippet

Petite fonction simple sans pretention.... On lui passe 2 arrays (1 pour les entetes et 1 autre pour les data) avec en option le nom d'un style pour l'entete et pour la table elle-meme...
la fonction n'affice rien mais renvoi un tableau qu'il suffit ensuite d'imprimer.

Source / Exemple :


<style>
TABLE.smtTable{
	border-left:1px black solid;
	border-right:1px solid black;
	border-bottom:1px solid black;
	border-top:1px solid black;
	margin-right:15px;
	width:800px;
	font-size:11pt;
}

TR.smtRowOdd{
	
	background-color:lightgrey;
}
TR.smtRowEven{
	background-color:white;
}
TR.smtHeader{
	background-color:#2d1663;
	background-color:#F0F0F0;
	color:#2d1663;
	font-weight:bold;
	font-size:13pt;
}
</style>

<?php

function DisplayTable($tablehead,$tabledata,$styletable='smtTable',$stylehead='smtHeader')
{
	
	//Creating HTML table 
	$table='<table class=' . $styletable .'>'."\n";
	$table.='<tr class=' . $stylehead . '>' . "\n";
	
	//now displaying table head
	$col=count($tablehead);
	
	//Looping inside tableheaders and displaying them
	foreach ($tablehead as $t)
	{
		if (empty($t)) {$t='_';}$table.='<td>' .$t.'</td>'."\n";
	}
	$table.='</tr>'."\n";
	
	
	//now displaying data with row colors
	$numel=count($tabledata); //amount of cells
	$rows=intval($numel/$col);  // line count is cells/col
	$pointeur=0;   //pointeur for data
	//first loop, we are going through each row, row length is based on number of Header element
	for ($i=0;$i<$rows;$i++)
	{
		//changing row color.  Using modulo function (always returns 1 or 0)
		if ($i%2 == 0) $s="smtRowEven"; else $s="smtRowOdd";
		$table.='<tr class=' . $s . '>' . "\n";
		//We display each cells in the row.  Number of Colums is based on number of header as set above
		for ($j=0;$j<$col;$j++)
		{
			$d=$tabledata[$pointeur];
			
			if (empty($d)) {$d='_';}$table.='<td >' . $d . '</td>' . "\n";
			$pointeur++; // moving to next element on tableset
		}
		$table.='</tr>'."\n";
	}
	$table.='</table>'."\n";
	return $table;
}

$head=array("head1","head2","head3","test1");
$data=array("r1d1","r1d2","r2d1","r2d2","r3d1","r3d2","r2d2","r3d1","r3d2");
$d=DisplayTable($head,$data);
print $d;
print "done";

?>

Conclusion :


J'ais cree ce code car j'avais besoin d'une petite fonction me permettant d'afficher simplement un tableau sans fioriture (essentiellement 1 ou 2 lignes)... Suggestion/amelioration sont bien entendu les bienvenues ...

A voir également

Ajouter un commentaire Commentaires
Messages postés
84
Date d'inscription
mercredi 7 mai 2003
Statut
Membre
Dernière intervention
12 juin 2006

Merci pour les commentaires ...
Je viens de remettre le code a jour ...
Les ' au lieu des " c'est vrai que c'est mieux mais je trouvais un peu lourd comme j'aime bien mettre des "\n" a la fin des lignes, histoire d'avoir un code html lisible ...

J'ai rajoute quelques commentaires ... (desole mais je code toujours en anglais ... mais je veux bien traduire si cela pose probleme ..)

Merci
Messages postés
11
Date d'inscription
mardi 30 novembre 2004
Statut
Membre
Dernière intervention
26 novembre 2005

Salut, une petite erreur : la division "/" en php n'est pas
une division entière...
remplace $rows=$numel/$col; par $rows=intval($numel/$col);
cela evite d'avoir l'erreur :
Notice: Undefined offset: 9

Sinon bien
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Lu, bonne idée.
Mais il y a possibilité de fortement l'amelioré :
- Argument html entre " "
- priviligié les ' aux " ( array('head1', 'head2', 'head3 ', 'test1'); - $table.= '<tr class="' . $s . '">' . "\n"; ou "tr class="' . $s . '">\n" ...)
Sinon bien dans l'esemble :p
Messages postés
112
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
11 octobre 2006

sympatique!
enfin une source, qui peux servir,
apprendre des trucs aux autres,
et qui m'as l'air plutot bien codé.

voila , je montre aussi que je suis pas tj là
pour casséeeer / les autres.

sinon, un poil plus d'explication ne ferait peut
etre pas de mal.

voila , tchuss.
je te noterai correctement, si personne le fait.

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.