8792 sujets

Développement web côté serveur, CMS

salut !


je suis a la fin de mon stage, j'aimerais simplifier la creation de mes formulaires. J'ai pensé a la prog objet, mais je m'y connais pas assez, et je n'ais plus de temps pour l'etudier.

J'ai pensé aussi a la solution de faire une fonction par champ de formulaire, qu'en pensez vous ? avez vous d'autres idées ?
Si tu veut j'ai une classe de creation de formulaire je peut si tu le desire te la fournir
elle n'est pas super bien documenté ( mais un peu quand même ) Smiley cligne .. Parcontre elle est tres complete et debuguée elle sers en prod sur pas mal de projets
kiwea a écrit :
Si tu veut j'ai une classe de creation de formulaire je peut si tu le desire te la fournir
elle n'est pas super bien documenté ( mais un peu quand même ) Smiley cligne .. Parcontre elle est tres complete et debuguée elle sers en prod sur pas mal de projets

Et elle produit des formulaires HTML accessibles avec, notamment, des labels explicites ?
Si ça n'est pas le cas, voilà un point à améliorer. Smiley cligne
;) ecoutez je vous envoie la classe et vous propose de l'ameliorer ici même ensemble afin de la rendre clean au yeux de tous vu qu'il ya des experts du HTML ... je n'ai pas toucher aux labels je dois vous avouer que cette classe je l'ai ecrit ya déja 2 ans et que la validité HTML c'est pas tellement mon job .. mais je m'y interesse l'interet premier etait de construire rapidement des formulaires complets et qui marche pour mes devs .... je m'en sers courament
Avant au lieu des return en fin de methode je faisait des Echo mais depuis ajax j'ai du utiliser un modèle qui retourne seulement le code HTML
Voici la petite bête les commentaires sont un peu vieux il se peut qu'ils soient un pe u a coté de la plak par endroit :

<?php
/**
*
*	CLASSE formulaire
*	
*	DESCRIPTION : 
*		classe pour construire Formulaires html elle construit dans un premier temp
*		les balise form les Fonctions ci dessous n'affecte que le constructeur pour
*		connaitre les fonctions de chaque objet de la classe reportez vous aux 
*		commentaires des fonctions.
*	
*	FONCTIONS :
*		new formulaire(string $action, sting $name, string $method, string $js, string $enctype, string $target)
*		Cree une instance de la classe formulaire.
*		Seul les 3 premiers parametres sont obligatoires.
*		* Le parametre $action correspond a l'url du fichier qui traitera notre formulaire	
*		* Le Parametre $name Sera le nom attribuÈ a notre formulaire	
*		* Le Parametre $method Sera la methode d'envoie des variable en General 'POST'	
*		// Les Parametres suivant sont facultatifs mais permettent certaines autres actions	
*		* Le Parametre $js sera l'appel a une fonction javascript lorsque que l'on soummettra le formulaire
*		  ex: 'alert("test")'	
*		* Le Parametre $enctype sera le type d'encodage voulue	
*		* Le Parametre $target definira une cible
*/
class formulaire {
	var $balise;

	/// Fonction constructeur generant un nouveau formulaire
	function formulaire($action, $name, $method, $js="", $enctype="", $target="") {		
		$str = '<form  id="'.$name.'" name="'.$name.'" method="'.$method.'"';		
		
		if($action) { $str .= ' action="'.$action.'"'; }
		if($enctype) { $str .= ' enctype="'.$enctype.'"'; }
		if($js) { $str .= ' onSubmit="'.$js.'"'; }
		if($target) { $str .= ' target='.$target.'"'; }
		$str .= '>';
		$this->balise = $str;
		//return $str;
	}
	
	
	function startForm(){
		return $this->balise;
	}
	/**
	* FONCTION ChampTexte
	*
	* DESCRIPTION : 
	* 	Fonctions creant un element de formulaire de type Input
	*
	* FONCTIONS : 
	*	formulaire->ChampTexte(string $type, sting $name, string $value, string $size, string $maxlength, string $option, string $action)
	*	Seul les 2 premiers parametres sont obligatoires.
	*
	*	* Le parametre $type est le type d'input 
	*		- ex 'text" pour un champ de texte normal
	*		- ex 'password" pour un mot de passe
	*		- ex 'hidden" pour un champ cachÈ etc..
	*	* Le Parametre $name Sera le nom attribuÈ a notre objet
	*	// Les Parametres suivant sont facultatifs mais permettent certaines autres actions
	*	* Le Parametre $value Sera la valeur par defaut contenue dans le champ
	*	* Le Parametre $size sera le nombre de caractere visible du champ
	*	* Le Parametre $maxlenght sera le nombre maximal de caractere inscriptible dans un champ
	*	* Le Parametre $option sers a definir si le champ est activer ou pas
	*	* Le Parametre $action sers a definir une action sur le champ
	*			
	*/
	function ChampTexte($type, $name, $value="", $size="", $maxlength="", $option="", $action="") {
		// Fonction Generant des champs de textes
		$str = '<input type="'.$type.'" name="'.$name.'" id="'.$name.'"';
		// Parametres facultatifs
		if($value) { $str .= ' value="'.$value.'"'; }
		if($size) { $str .= ' size="'.$size.'"'; }
		if($maxlength) { $str .= ' maxlength="'.$maxlength.'"'; }
		if($option) { $str .= $option; }
		if($action) { $str .= $action; }

		$str .= '>';
		return $str;
	}
	
	/**
	* FONCTION checkbox
	*
	* DESCRIPTION :
	*	Fonctions creant une boite a cocher html
	*
	* FONCTIONS : 
	*	formulaire->checkbox(string $name, sting $checked)
	*	Seul le premiers parametres sont obligatoires.		
	*	* Le parametre $name correspond au nom de la boite a cocher 
	*	// Les Parametres suivant sont facultatifs mais permettent certaines autres actions		
	*	* Le Parametre $checked si il existe cochera et verrouillera la boite a cocher
	*
	*/
	function checkbox($name, $checked="") {
		$str = '<input type="checkbox" name="'.$name.'"';
		if($checked) { $str .= ' checked disabled'; }
		$str .= '>';
		return $str;
	}
	
	/**
	* FONCTION radio
	*
	* DESCRIPTION :
	*	Fonctions creant un bouton radio
	*
	* FONCTIONS : 
	*	formulaire->radio(string $name, sting $value, string $checked)
	*	Seul les 2 premiers parametres sont obligatoires.		
	*	* Le parametre $name correspond au nom du bouton radio
	*	* Le parametre $value correspond a la valeur contenue dans le bouton radio
	*	// Les Parametres suivant sont facultatifs mais permettent certaines autres actions
	*	* Le Parametre $checked si il existe cochera et le bouton radio par defautr
	*
	*/
	function radio($name, $value, $checked="") {
		// fonction generant des boutons radios
		$str = '<input type="radio" name="'.$name.'" value="'.$value.'"';
		// parametres facultatifs
		if($checked) { $str .= ' checked'; }
		$str .= '>';
		return $str;
	}
	/**
	* FONCTION menu
	*
	*	DESCRIPTION :
	*	Fonctions creant un menu deroulant
	*
	* FONCTIONS : 
	*	formulaire->menu(string $name, array $liste, string $selected,string $action)
	*	Seul les 3 premiers parametres sont obligatoires.		
	*	* Le parametre $name correspond au nom du menu deroulant
	*	* $liste est un tableau de donnÈe contenant les valeurs du menu
	*	* $selected est le menu selectionÈ par defaut
	*	// Les Parametres suivant sont facultatifs mais permettent certaines autres actions
	*	* Le Parametre $action permet de lancer un javascript a la selection d'un element de menu
	*
	*/
	function menu($name, $liste, $selected=0,$action="") {
		$str = '<select name="'.$name.'"';
		if(isset($action)){ $str .= 'onChange="'.$action.'"';}
		$str .= '>';
		$i = 1;
		//while($objet = each($liste)) {
			//$str .= "\n";
			//$sele = explode ("*****",$objet['value']);  			
  			//if(count($sele)>1){
	  		//	$str .= '<option value="'.$objet['key'].'"';
  			//	$str .= ' selected';
			//	$str .= '>'.$sele[1].'</option>';
  		while(list($k,$v)=each($liste)){
  			if($k == $selected){
  				$str .= '<option value="'.$k.'"';
  				$str .= ' selected';
				$str .= '>'.$v.'</option>';
  		
  			}else{
			
				$str .= '<option value="'.$k.'"';
				$str .= '>'.$v.'</option>';
  			}
		}
		$str .= "\n</select>";
		return $str;
	}
	/**
	* FONCTION textarea
	*
	* DESCRIPTION :
	*	Fonctions creant une zone de texte
	*
	* FONCTIONS : 
	*	formulaire->textarea(string $name, string $texte, string $cols, string $rows)
	*	Seul le premier parametre est obligatoire.	
	*	* Le parametre $name correspond au nom de la zone de texte
	*	// Les Parametres suivant sont facultatifs mais permettent certaines autres actions
	*	* Le Parametre $texte est le texte par defaut contenue dans la zone de texte
	*	* Le Parametre $cols est le nombre de colone en caractere de la zone de texte
	*	* Le Parametre $rows est le nombre de rangee en caractere de la zone de texte
	*/
	function textarea($name, $texte="", $cols="", $rows="") {
		$str = '<textarea name="'.$name.'"';
		if($cols) { $str .= ' cols="'.$cols.'"';}
		if($rows) { $str .= ' rows="'.$rows.'"';}
		$str .= ' id="'.$name.'">'.$texte.'</textarea>';
		return $str;
		return "\n";
	}
	/**
	* FONCTION fin
	*
	* DESCRIPTION :
	*	Fonction fermant les balise </form>
	*
	* FONCTIONS : 
	*	formulaire->fin()
	*	Aucun parametre pour cette fonction	
	*
	*/
	function fin() {
		return "</form>";
	}
	
	/**************************************************************************************
	FONCTION INACTIVE POUR LINSTANT
	
	FONCTION fieldset
	
	DESCRIPTION :
		Fonctions creant un fieldset
	
	FONCTIONS : 

	function fieldset($position, $legend="") {
		// fonction generant des fieldset
		if($position == "debut") {
			echo "<fieldset>";
			if($legend) {
				echo "<legend>$legend</legend>";
			}
		} else {
			echo "</fieldset>";
		}
	}

	function bouton($name, $type, $value) {
		echo '<input name="'.$name.'" type="'.$type.'" id="'.$name.'"';
		echo ' value="'.$value.'">';
	}
	
		function fileinput($name, $type, $value) {
		echo '<input name="'.$name.'" type="'.$type.'" id="'.$name.'"';
		echo ' value="'.$value.'">';
	}

	**************************************************************************************/
}
?>

Enfin voila c'est pas grand chose mais je prendrais du plaisir a ameliorer ca je vois déja plein de choses a optimiser mais pas vraiment le temps
Evidement il n'y a pas de gestion d'erreur ou de verification .. je pense que dans la majorité des projets les modeles d'evenements sont trop differents .. je ne vois ici qu'une classe d'affichage html .. mais qu'elle soit bien faite et vraiment implementable facilement
Smiley cligne
Modifié par kiwea (05 Mar 2007 - 08:06)