Soyez le premier à donner votre avis sur cette source.
Snippet vu 8 919 fois - Téléchargée 22 fois
<?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); } } ?>
25 sept. 2008 à 14:04
Je vais implanter ce système de classe héritée comme tu le dit. Mais malheureusement, je ne peux développer de classe en PHP 5 que pour le plaisir, la boite ou je bosse n'utilise que le PHP4, donc coté héritage, je ne sai spas si ca vas fonctionner.
Pour le comptage des élément, c'était dans l'intention de faire une autre classe, qui me permettrai a partir du nombre d'élément de tel ou tel type, et leur nom, de les traiter automatiquement, d'ou la séparation des méthodes file et photo...
Mais bon j'y suis pas encore. Je vais essayer de réfléchir pour les classes étendue pour la création des éléments, mais pour la "décoration" et surtout le stylage (virer le tableau), je ne vois pas par ou commencer
Bonne journée à tous CS
23 sept. 2008 à 14:39
Tu aurais pu faire de l'heritage avec une classe FormElement qui contient permettrai de gerer un input (text, hidden ou autre), un select, textarea, etc.
Les traitements sur le FormElement sont quasi les memes, association d'un label, d'attribut(id, class, name, etc.), une valeur. Il pourrait y avoir une liste des attribut autorisé.
J'aurai fait un truc du genre
Classe Form => ensemble de FormElement
Classe FormElement
Classe FormInput (étendant FormElement)
Classe FormText (étendant FormInput)
Classe FormTextarea (étendant FormElement)
...
- Sur ce, tu pourrais implementer un décorateur permettant de t'occuper de la présentation (sous forme de tableau, de liste, de definition, etc...)
- Tu pourrais aussi implementer un systeme de vérification des valeurs au moment de la validation du formulaire
Ce ne sont que des pistes, par contre, je ne vois pas l'interet de compter les elements par type.
je vois pas pourquoi la fonction vide s'appele comme ca, a la rigueur un appendContent(ajout_contenu) me semble plus correct et plus compréhensible.
My 2 cents
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.