Location: PHPKode > scripts > Image SQL manager > image-sql-manager/php_tbl.class.inc.php
<?php
/*!
@copyrights b23|prod:Tiana Bruno RAKOTOARIMANANA - 2004 (all rights reserved to b23|prod)
@author	Tiana Bruno RAKOTOARIMANANA
@date	Sat Sep 18 14:43:50 CEST 2004 @572 /Internet Time/
@filename php_tbl.class.inc
*/


/* comment ecrire un tableau HTML?
/ un tableau en HTML ici est un objet PHP contenant parmi ses variables un tableau a double entree qui s'agrandit a chaque nouvelle ligne/cellule
/ *nouveau tableau* -> tbl;
/ tbl->setCell(tbl_nouv_ligne,tbl_nouv_cell,'contenu');
/				tbl_nouv_ligne et cell renvoient les indices de la nouvelle case dans le tableau
/ - pour donner le contenu d'une cellule:
/				String s = tbl->getCell(indiceLigne,indiceColonne);
/ - refermer un tableau et l'afficher (ecrire le code HTML):
/				tbl->fin();
/ **DEBUG** pour indiquer des commandes de debugging
*/

if (!isset($classeTableau)) {
	$classeTableau = 1;
	
	require("php_module_html.inc.php");
	
	class Tableau {
		
		var $HTML, $options; // la variable $options est un tableau indexé
		var $nbLignes, $nbColonnes;
		var $opt_ligne; // pour pouvoir attribuer des options aux lignes
		var $tableau;
		var $id;
		var $caption;
		
		function Tableau ($nL, $nC, $id = "Tableau") {
			$this->nbLignes = $nL;
			$this->nbColonnes = $nC;
			// init. options pour les lignes TR
			for($i=0; $i<$nL; $i++)
				$this->opt_ligne[$i] = array("HTML" => array());
			$this->id = $id;
			$this->caption = "";
			// Definition des options PAR DEFAUT d'un tableau HTML.
			$this->options = array("HTML" => array("ALIGN" => "CENTER",
												   "BORDER" => 1,
												   "CELLSPACING" => 0)
								   );
			
			if(!($this->init_Tableau($nL,$nC))) 
				echo "tbl:Tableau: Erreur lors de l'initialisation du tableau";
		}
		
		
		/* ----- partie privee ----- */
		
		
		
		
		
		
		/* ----- parite publique ----- */
		
		function setCaption($s, $position="bottom") {
			$this->caption = "<CAPTION ALIGN='$position'>$s</CAPTION>";
		}
		
		function init_Tableau($n,$m) {
			//initialisation du tableau
			for ($i = 0; $i < $n; $i++) {
				for ($j = 0; $j < $m; $j++) {
					// Definition d'une cellule d'un tableau HTML
					$this->setCellule($i,$j, array('options' => array(),
												   // HTML EN MAJUSCULES, css en minuscules
												   
												   'contenu' => ''));
				}
			}
			return $this->actualiserProprietes_Tableau();
			
		}
		
		function is_upper($s) {
			if(strToLower($s) === $s) { //echo "**DEBUG**S est MINUSCULES";
				return FALSE;} //$s est en minuscules
			if(strToUpper($s) === $s) return TRUE; //$s est en majuscules
			return FALSE;
		}
		
		function actualiserProprietes_Tableau() {
			$n = count($this->tableau); //lignes
			$m = count($this->tableau[0]); //colonnes
			
			if($this->nbLignes < $n) {debug("tbl.class:actualiserProprietesTableau(): le tableau $this->id n'était pas correctement initialisé en nombre de lignes! risque de boucle infinie!"); die();}
			if($this->nbColonnes < $m) {debug("tbl.class:actualiserProprietesTableau(): le tableau $this->id n'était pas correctement initialisé en nombre de colonnes! risque de boucle infinie!"); die();}
			return TRUE;
		}
		
		function setCellule($i,$j,$c=array('options' => array(),
										   'contenu' => '')) {
			$this->tableau[$i][$j] = $c;
			$this->actualiserProprietes_Tableau();
		}
		
		function getCellule($i,$j) {
			if ($i<$this->nbLignes && $j<$this->nbColonnes) {
				//debug("tbl.class80: nbLignes = $this->nbLignes, nbColonnes = $this->nbColonnes, tbl.nom = $this->id.");
				return $this->tableau[$i][$j];
			}else return array("options" => array(),
							   "contenu" => "");
		}
		
		function getOptionsArray() {
			return $options;
		}
		
		function setOptionsArray($options = array("HTML" => array(),
												  "css" => array(),
												  "javascript" => array()
												  )
								 ) {
			$this->options = $options;
		}
		
		function setContenu_Cellule($i,$j,$s='',$o=-1) {
			
			if($o != -1)//?? Gestion codage string -> HTML ??
				$options = $o;
			else
				$options = array();
			
			$c = array("options" => $options,
					   "contenu" => $s);
			
			$this->setCellule($i,$j,$c);
		}
		
		function getContenu_Cellule($i,$j) {
			$c = $this->getCellule($i,$j);
			return $c['contenu'];
		}
		
		function getOptionsArray_Cellule($i,$j) {
			$c = $this->getCellule($i,$j);
			return $c['options'];
		}
		
		function setOptionsArray_Cellule($i,$j,$o=array()) {
			$this->setCellule($i,$j,array('options' => $o,
										  'contenu' => $this->getContenu_Cellule($i,$j))
							  );
		}
		
		function setOptionsArray_Ligne($n,$o=array()) {
			$this->opt_ligne[$n] = $o;
		}
		
		function getOptionsArrayToHTML($i=-1,$j=-1) {
			//pour le tableau
			if($i==-1 && $j==-1) {
				$options = $this->options;
			} elseif ($i != -1 && $j != -1)// pour une certaine cellule
				$options = $this->getOptionsArray_Cellule($i,$j);
			elseif ($i != -1 && $j == -1)
				$options = $this->opt_ligne[$i];
			else
				$options = array();
			$options = optionsArrayToHTML($options);
			return $options["HTML"].$options["css"].$options["javascript"].$options["class"];
		}
		
		function writeHTML() {
			echo $this->HTML;
		}
		
		function fin($mode='0') { // Ecriture du code HTML du tableau; mode = 1: la meth renv. la chaine de car. HTML. si mode 1, faire passer fin(1) dans un stripslashes!!
			$this->HTML = "<!-- BEGIN MODULE TABLE id ".$this->id."-->\n\t<TABLE ID=\"".$this->id."\" "; // retour à  la ligne pour la lisibilité du code source HTML
					 // options du tableau (style, ...) avec transcryptage en HTML/styleCSS     
			
			$this->HTML .= $this->getOptionsArrayToHTML().'>';
			
			// caption
			$this->HTML .= $this->caption;
			
			for ($i=0;$i<$this->nbLignes;$i++) {
				$this->HTML .= "\n\t\t<TR ".@$this->getOptionsArrayToHTML($i).'>';
				for ($j=0;$j<$this->nbColonnes;$j++) {
					$this->HTML .= "\n\t\t\t<TD ".$this->getOptionsArrayToHTML($i,$j).' >'. $this->getContenu_Cellule($i,$j).'</TD>';
				}
				$this->HTML .= "\n\t\t</TR>";
				// ecriture ligne apres ligne
				if($mode == '0') {
					$this->writeHTML();
					$this->HTML = "";
				}
			}
			
			$this->HTML .= "\n\t</TABLE><!-- END MODULE TABLE id ".$this->id.'-->';
			//La méthode peut retourner le code HTML ou l'écrire directement sur la sortie standard
			if($mode == '0') {
				$this->writeHTML();
			} elseif ($mode =='1') return $this->HTML;
			
			
		}   
	}
	
}

?>
Return current item: Image SQL manager