Classe constructeur de tableau html en php (revu et corrigé)

Contenu du snippet

Cette classe développée en php permet de construire simplement un tableau Html...

Cette classe n'est peut être pas optimisée au mieux mais fonctionne...

Je suis étudiant en BTS informatique et ce code est ma première contribution à cette communauté.
Je reste donc ouvert à toute suggestion, remarque, conseil...

En espérant avoir apporté quelque chose d'utile...

Demonstorm

Source / Exemple :


<?php
	class Tableau
	{
		private $_Header= '';
		private $_DebutTab= '<table border=';
		private $_FinTab= '</table>';
		private $_MonTableau= '';
		private $_MesLignes= array();
		private $_TabValide= false;
		
		public function Tableau($MonHeader, $nbcols, $border)
		{
			$this->_DebutTab .= $border;
			$this->_DebutTab .= '>';
			
			$this->_Header = '<th colspan='.$nbcols.'>';
			$this->_Header .= $MonHeader;
			$this->_Header .='</th></tr>';//on construit notre header
		}
		
		public function AjouterLigne(array $MesValeursRecues)
		{
			$UneLigne = new Ligne($MesValeursRecues);//on créé une ligne avec pour argument(s) un tableau de valeur(s)
			array_push($this->_MesLignes, $UneLigne);//on ajoute cette ligne au tableau de lignes
			$this->_TabValide = false;
		}
		
		public function Finalize()
		{
			$this->_MonTableau=$this->_DebutTab;//on commence à construire notre tableau
			$this->_MonTableau.=$this->_Header;//on ajoute le header
			foreach ($this->_MesLignes as $LigneEnCours => $this->_MesLignes[$LigneEnCours]) //pour chaque ligne dans le tableau de ligne(s)
			{
				$this->_MonTableau .= $this->_MesLignes[$LigneEnCours]->Finalize();//on ajoute à notre tableau la ligne en cours constituée
			}
			$this->_MonTableau.=$this->_FinTab;//on ferme notre tableau
			$this->_TabValide = true;
		}
		
		public function Center()
		{
			if($this->_TabValide == true)
			{
				$this->_MonTableau = '<center>'.$this->_MonTableau.'</center>';
			}
			else
			{
				echo 'Tableau non validé!<br>Veuillez vallider votre tableau avant de le centrer...';
			}
			
		}
		
		public function Show()
		{
			if($this->_TabValide == true)
			{
				echo $this->_MonTableau;//affiche le tableau
			}
			else
			{
				echo 'Tableau non validé!<br>Veuillez vallider votre tableau avant de l\'afficher...';
			}
		}
		

		public function ShowCode()
		{
			if($this->_TabValide == true)
			{
				echo(htmlentities($this->_MonTableau));//Affiche le code Html du Tableau constitué!
			}
			else
			{
				echo 'Tableau non validé!<br>Veuillez vallider votre tableau avant de d\'afficher son code Html...';
			}
			
		}
	}

	class Ligne
	{
		private $_MaLigne='';
		private $_DebLigne='<tr>';
		private $_FinLigne='</tr>';
		private $_MesColonnes=array();
		
		public function Ligne(array $MesColonnesRecues)//on attend un array de valeur(s)(chaque valeur deviendra une cellule
		{
			foreach ($MesColonnesRecues as $UneColonne => $MesColonnesRecues[$UneColonne]) //pour chaque valeurs de l'array de valeur(s)
			{
				$NouvelleColonne = new Colonne($MesColonnesRecues[$UneColonne][0], $MesColonnesRecues[$UneColonne][1]);//on instancie une cellule avec pour argument la valeur en cours
				array_push($this->_MesColonnes, $NouvelleColonne);//on ajoute cette cellule au tableau de cellules
			}
		}
		
		
		public function Finalize()
		{
			$this->_MaLigne=$this->_DebLigne;//on commence a construire notre ligne
			foreach($this->_MesColonnes as $ColonneEnCours => $this->_MesColonnes[$ColonneEnCours])//pour chaques cellules existante dans le tableau de cellules
			{
				$this->_MaLigne .=$this->_MesColonnes[$ColonneEnCours]->Finalize();//on ajoute a notre ligne la cellule constituée 
			}
			$this->_MaLigne.=$this->_FinLigne;//on termine notre cellule on obtient alors <tr><td>contenu</td></tr>
			
			return $this->_MaLigne;//on renvoi notre ligne constituée
		}
	}
		
	class Colonne
	{
		private $_MaColonne='';
		private $_DebutCol='<td colspan=';
		private $_FinCol='</td>';
		
		public function Colonne($MaValRecue, $MaColsRecue)//on attend le contenu de la cellule
		{
			$this->_DebutCol .= $MaColsRecue;
			$this->_DebutCol .= '>';
			$this->_MaColonne = $this->_DebutCol;
			$this->_MaColonne .= $MaValRecue;
			$this->_MaColonne .=$this->_FinCol;//on construit notre cellule <td>contenu</td>
		}
		
		public function Finalize()
		{
			return $this->_MaColonne;//on renvoi notre cellule constituée
		}
	}

?>

Conclusion :


Pour l'utiliser :

1) rajouter ceci au sommet (a l'intérieur de la balise <?php ) de la page qui devra utiliser des tableaux :

include($path."tabconstruct.php");

2) créer un objet de type tabconstruct comme ceci :

$montabconstructor = new tabconstruct();

3) exemple d'utilisation :

$UnHeader = 'Mon Tableau';
$UnHeaderColSpan = "100%";
$UnHeaderBorder = 2;

$UnTableau = new Tableau($UnHeader, $UnHeaderColSpan, $UnHeaderBorder);

$arrLigne = array(array("Ligne1 Colonne1", "50%"), array("Ligne1 Colonne2", "50%"));//(ici 2 colonnes)
$UnTableau->AjouterLigne($arrLigne);
$arrLigne=0;

$arrLigne = array(array("Ligne2 Colonne1", "33%"), array("Ligne2 Colonne2", "34%"), array("Ligne2 Colonne3", "33%")); //le pourcentage correspond au cols pan et s'obtient comme suit : 100/nombre de colonne que cela recouvre (ici 3 colonnes)
$UnTableau->AjouterLigne($arrLigne);
$arrLigne=0;

$arrLigne = array(array("Ligne3 Colonne1", "25%"), array("Ligne3 Colonne2", "25%"), array("Ligne3 Colonne3", "25%"), array("Ligne3 Colonne4", "25%"));// (ici 4 colonnes)
$UnTableau->AjouterLigne($arrLigne);
$arrLigne=0;

$arrLigne = array(array("Ligne4 Colonne1", "20%"), array("Ligne4 Colonne2", "20%"), array("Ligne4 Colonne3", "20%"), array("Ligne4 Colonne4", "20%"), array("Ligne4 Colonne5", "20%"));// (ici 5 colonnes)
$UnTableau->AjouterLigne($arrLigne);
$arrLigne=0;

$UnTableau->Finalize();
$UnTableau->Center();
$UnTableau->Show();
  • BONUS *


Cette méthode vous permet d'afficher le code html de votre tableau (ca peut servir pour certains)

$UnTableau->ShowCode();

A voir également

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.