Classe de création de formulaire

Contenu du snippet

j'ai créer cette classe (PHP 5 ?) pour générer des formulaires plus simplement. J'attend les admin CS pour me tuer, et surtout pour me dire ce qui ne vas pas (sauf si la liste est trop longue ^^)

Source / Exemple :


<?php

	class formulaire
	{
		var $titre;
		
		function __construct($style_tableau,$action,$titre='',$nom='',$onsubmit='',$classe_bouton,$champs,$classe_libele,$champs_obligatoire,$classe_libele_obligatoire)
		{
			$this->conteneur = array();
			$this->nb_composants = 0;
			
			$this->bouton = $classe_bouton;
			$this->champs = $champs;
			$this->libele = $classe_libele;
			$this->champs_obligatoire = $champs_obligatoire;
			$this->libele_obligatoire = $classe_libele_obligatoire;
			
			/*---	Compteur pour la génération automatique du traitement	---*/
			$this->compteur_text = 0;
			$this->valeurs_text = array();
			$this->compteur_pass = 0;
			$this->valeurs_pass = array();
			$this->compteur_photo = 0;
			$this->valeurs_photo = array();
			$this->compteur_files = 0;
			$this->valeurs_files = array();
			$this->compteur_hidden = 0;
			$this->valeurs_hidden = array();
			$this->compteur_check = 0;
			$this->valeurs_check = array();
			$this->compteur_radio = 0;
			$this->valeurs_radio = array();
			$this->compteur_textarea = 0;
			$this->valeurs_textarea = array();
			$this->compteur_select = 0;
			$this->valeurs_select = array();
			$this->compteur_captcha = 0;
			$this->valeurs_captcha = array();
			
			/*---	Création du formulaire	---*/
			$this->conteneur[] = '<form action="'.$action.'" name="'.$nom.'" onSubmit="'.$onsubmit.'" method="post" enctype="multipart/form-data">'."\n";
			if(!empty($titre))
				$this->conteneur[] = "\t".$titre."\n";
			$this->conteneur[] = "\t".'<table style="'.$style_tableau.'">'."\n";
			if(sizeof($this->conteneur) === 0)
				throw new Exception('Erreur lors de la création du formulaire : aucune donnée n\'as été créer dans le conteneur.');
			return $this->conteneur;
		}
		
		private function creer_libele($lib,$obl)
		{
			if($obl == true)
				$tempo = "\t\t".'<tr><td align="right"><label class="'.$this->libele_obligatoire.'">'.$lib.' : </label></td>';
			else
				$tempo = "\t\t".'<tr><td align="right"><label class="'.$this->libele.'">'.$lib.' : </label></td>';
			
			if(!isset($tempo) || empty($tempo))
				throw new Exception('Erreur lors de la création du liblelé "'.$lib.'".');
			return $tempo;
		}
		
		private function calculer_param($type,$lib)
		{
			switch($type)
			{
				case 0:
					$this->compteur_text++;
					$this->valeurs_text[] = $lib;
				break;
				case 1:
					$this->compteur_pass++;
					$this->valeurs_pass[] = $lib;
				break;
				case 2:
					$this->compteur_photo++;
					$this->valeurs_photo[] = $lib;
				break;
				case 3:
					$this->compteur_files++;
					$this->valeurs_files[] = $lib;			
				break;
				case 4:
					$this->compteur_hidden++;
					$this->valeurs_hidden = $lib;
				break;
				case 5:
					$this->compteur_check++;
					$this->valeurs_check[] = $lib;
				break;
				case 6:
					$this->compteur_radio++;
					$this->valeurs_radio[] = $lib;
				break;
				case 7:
					$this->compteur_select++;
					$this->valeurs_select[] = $lib;
				break;
				case 8:
					$this->compteur_captcha++;
					$this->valeurs_captcha[] = $lib;
				break;
				case 9:
					$this->compteur_textarea++;
					$this->valeurs_textarea[] = $lib;
				break;
			}
		}
		
		public function text($libele,$nom,$obl=false,$value='',$max=255)
		{
			formulaire::calculer_param(0,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,$obl);
				if($obl == false)
					$this->conteneur[] = '<td align="left"><input type="text" name="'.$nom.'" maxlenght="'.$max.'" value="'.$value.'" class="'.$this->champs.'" /></td></tr>'."\n";
				else
					$this->conteneur[] = '<td align="left"><input type="text" name="'.$nom.'" maxlenght="'.$max.'" value="'.$value.'" class="'.$this->champs_obligatoire.'" /></td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs texte "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function password($libele,$nom,$obl=false,$max="255")
		{
			formulaire::calculer_param(1,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,$obl);
				if($obl === false)
					$this->conteneur[] = '<td align="left"><input type="password" name="'.$nom.'" maxlenght="'.$max.'" class="'.$this->champs.'" /></td></tr>'."\n";
				else
					$this->conteneur[] = '<td align="left"><input type="password" name="'.$nom.'" maxlenght="'.$max.'" class="'.$this->champs_obligatoire.'" /></td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs password "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function photo($libele,$nom,$obl=false)
		{
			formulaire::calculer_param(2,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,$obl);
				if($obl === 0)
					$this->conteneur[] = '<td align="left"><input type="file" name="'.$nom.'" class="'.$this->champs.'" /></td></tr>'."\n";
				else
					$this->conteneur[] = '<td align="left"><input type="file" name="'.$nom.'" class="'.$this->champs_obligatoire.'" /></td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs photo "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function fichier($libele,$nom,$obl=false)
		{
			formulaire::calculer_param(3,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,$obl);
				if($obl === 0)
					$this->conteneur[] = '<td align="left"><input type="file" name="'.$nom.'" class="'.$this->champs.'" /></td></tr>'."\n";
				else
					$this->conteneur[] = '<td align="left"><input type="file" name="'.$nom.'" class="'.$this->champs_obligatoire.'" /></td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs fichier "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function hidden($libele,$nom,$value)
		{
			formulaire::calculer_param(4,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = "\t\t".'<tr><td colspan="2"><input type="hidden" name="'.$nom.'" value="'.$value.'" /></td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs caché "'.$nom.'".');
			return $this->conteneur;
		}		
		
		public function check($libele,$nom,$tableau,$obl=false)
		{
			formulaire::calculer_param(5,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,$obl);
				$this->conteneur[] = '<td align="left">';
				foreach($tableau as $cle => $value)
				{
					$this->conteneur[] = '<input type="checkbox" value="1" name="'.$nom.'_'.$cle.'" />'.$value.' ';
				}
				$this->conteneur[] = '</td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs checkbox "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function check_cu($libele,$nom,$tableau,$selection,$obl=false)
		{
			formulaire::calculer_param(5,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,$obl);
				$this->conteneur[] = "\t\t".'<td align="left">';
				foreach($tableau as $cle => $value)
				{
					if(in_array($cle,$selection))
						$this->conteneur[] = '<input type="checkbox" value="1" checked="checked" name="'.$nom.'_'.$cle.'" />'.$value.' ';
					else
						$this->conteneur[] = '<input type="checkbox" value="1" name="'.$nom.'_'.$cle.'" />'.$value.' ';
				}
				$this->conteneur[] = '</td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs checkbox "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function radio($libele,$nom,$tableau,$obl=false)
		{
			formulaire::calculer_param(6,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,$obl);
				$this->conteneur[]= '<td align="left">';
				foreach($tableau as $cle => $value)
				{
					$this->conteneur[] = '<input type="radio" value="'.$cle.'" name="'.$nom.'" />'.$value.' ';
				}
				$this->conteneur[] = '</td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs radio "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function radio_cu($libele,$nom,$tableau,$search,$obl=false)
		{
			formulaire::calculer_param(6,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,$obl);
				$this->conteneur[]= '<td align="left">';
				foreach($tableau as $cle => $value)
				{	
					if($search == $cle)
						$this->conteneur[] = '<input type="radio" checked="checked" value="'.$cle.'" name="'.$nom.'" />'.$value.' ';
					else
						$this->conteneur[] = '<input type="radio" value="'.$cle.'" name="'.$nom.'" />'.$value.' ';
				}
				$this->conteneur[] = '</td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs radio "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function select($libele,$nom,$tableau,$obl=false)
		{
			formulaire::calculer_param(7,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,$obl);
				$this->conteneur[]= '<td align="left">';
				$this->conteneur[] = '<select name="'.$nom.'">'."\n";
				foreach($tableau as $cle => $value)
					$this->conteneur[] = "\t\t\t".'<option value="'.$cle.'">'.$value.'</option>'."\n";
			$this->conteneur[] = '</select></td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs select "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function select_cu($libele,$nom,$tableau,$search)
		{
			formulaire::calculer_param(7,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,0);
				$this->conteneur[]= '<td align="left">';
				$this->conteneur[] = '<select name="'.$nom.'">'."\n";
				foreach($tableau as $cle => $value)
				{
					if($cle == $search)
						$this->conteneur[] = "\t\t\t".'<option selected="selected" value="'.$cle.'">'.$value.'</option>'."\n";
					else
						$this->conteneur[] = "\t\t\t".'<option value="'.$cle.'">'.$value.'</option>'."\n";
				}
				$this->conteneur[] = '</select></td></tr>'."\n";				
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs select "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function captcha($nom)
		{
			formulaire::calculer_param(8,$nom);
			$this->conteneur[] = '<tr>'."\n";
			$this->conteneur[] = '<td align="left">';
			$this->conteneur[] = '<label class="'.$this->classe_libele_obligatoire.'"><img src="Captcha/validation.php" border="0" /></label></td>'."\n";
			$this->conteneur[] = '<td align="left"><input class="'.$this->champs_obligatoire.'" type="text" name="'.$nom.'" /></td>'."\n";
			$this->conteneur[] = '</tr>'."\n\n";
		}
		
		public function textarea($libele,$nom,$value='',$cols=25,$rows=5)
		{
			formulaire::calculer_param(9,$nom);
			$taille_deb = sizeof($this->conteneur);
				$this->conteneur[] = formulaire::creer_libele($libele,0);
				$this->conteneur[]= '<td align="left"><textarea class="'.$this->champs.'" name="'.$nom.'" cols="'.$cols.'" rows="'.$rows.'">'.$value.'</textarea></td></tr>'."\n";
			$taille_fin = sizeof($this->conteneur);
			if($taille_fin <= $taille_deb)
				throw new Exception('Erreur lors de la création du champs select "'.$libele.'" ('.$nom.').');
			return $this->conteneur;
		}
		
		public function vide($content)
		{
			$this->conteneur[] = $content;
			return $this->conteneur;
		}
		
		public function fckeditor($label,$contenu='',$nom="message",$width="100%",$height="300",$toolbar='Default')
		{
			include_once("fckeditor/fckeditor.php");
			$editeur = new FCKeditor($nom);
			$editeur->BasePath='fckeditor/';
			$editeur->Value = $contenu;
			$editeur->ToolbarSet=$toolbar;
			$editeur->Width  = $width;
			$editeur->Height = $height;
			$this->conteneur[] = '<tr><td align="center" colspan="2">'.$label.'</td></tr><tr><td align="center" colspan="2">'.$editeur->Create().'</td></tr>';
			return $this->conteneur;
		}
		
		public function afficher($text,$reset=false)
		{
			if($reset == true)
				$this->conteneur[] = '<tr><td align="center" colspan="2"><input type="reset" value="RAZ" class="'.$this->bouton.'" /><input type="submit" value="'.$text.'" class="'.$this->boutons.'" /></td></tr>';
			else							  
				$this->conteneur[] = '<tr><td align="center" colspan="2"><input type="submit" value="'.$text.'" class="'.$this->bouton.'" /></td></tr>';	
			
			$this->conteneur[] = '</table></form>';
			foreach($this->conteneur as $cle => $value)
				echo $value;
		}
		
		function __destruct()
		{
			unset($this->conteneur);
		}
		
	}

?>

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.

Du même auteur (cs_spoonisback)