Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CRÉATION DE FORMULAIRE SIMPLIFIÉE


Information sur la source

Catégorie :Formulaires Classé sous : php, formulaire, génération, framework, alignement automatique Niveau : Initié Date de création : 22/09/2008 Date de mise à jour : 04/10/2008 10:39:33 Vu / téléchargé: 4 684 / 323

Note :
Aucune note

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Comme l'indique le titre, ce code va vous permettre de gagner du temps lors de la création de vos formulaires.
Cette source s'adresse à des membres débutants connaissant la programmation orienté objet.

Pour utiliser cette source placez le dossier moteur et son contenu dans le dossier de votre projet, un simple require("moteur/config.php"); suffit pour l'utiliser.

J'ai mis la doc doxygen dans la source bien que le code ne soit pas très long, cela vous gagnera du temps de compréhension.

Le but de la source :
* économiser du temps lors de la création d'un formulaire(génération simplifiée, alignement des inputs automatique, ...)

Ce code va me servir pour un autre projet, il me sert de test, je vous le met à disposition s'il peut aider quelqu'un.

A+
 

Source

  • <?php
  • //Exemple d'utilisation
  • require("moteur/config.php");
  • $form1 = new Form();
  • $text1 = new InputText("text1");
  • $text1->SetLabel("Test 1")->setName("toto");
  • $text2 = new InputText("text2");
  • $text2->SetLabel("Test long 2");
  • $form1->AddElement($text1,$text2);
  • echo $form1;
  • ?>
<?php
	//Exemple d'utilisation
        require("moteur/config.php");
	
	$form1 = new Form();
	
	$text1 = new InputText("text1");
	$text1->SetLabel("Test 1")->setName("toto");
	$text2 = new InputText("text2");
	$text2->SetLabel("Test long 2");
	
	$form1->AddElement($text1,$text2);			
	echo $form1;
?>

Conclusion

Bonne utilisation à tous.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

28 septembre 2008 19:04:14 :
Intégration des idées de webdeb, le développement continue.
04 octobre 2008 10:39:35 :
Ajout de InputSubmit et InputButton et correction de quelques bugs

Commentaires et avis

signaler à un administrateur
Commentaire de webdeb le 22/09/2008 23:52:05

Hum on ne peut faire que des inputs dans ton formulaire ? Où sont les hidden, select, radio, checkboxes... ?

C'est loin d'être terminé et encore utilisable comme code. Pour générer mes formulaires, je préfère davantage m'appuyer sur le composant Zend_Form du framework Zend ou bien sur le framework de création de formulaire du framework symfony.

++

signaler à un administrateur
Commentaire de Galip le 23/09/2008 09:37:32

Comme je l'ai dit cette source m'a servi de test pour voir si c'était possible de faire facilement un formulaire qui s'aligne automatiquement.
Maintenant, je vais continuer en faisant mon moteur de template.
De plus, il est possible de mettre des hidden, radio, checkbox, tu peux spécifier le type dans le constructeur du input.

A+

PS : Si tu as compris la source tu verras qu'il est assez simple de rajouter des select, ...

signaler à un administrateur
Commentaire de neigedhiver le 23/09/2008 10:05:53

Salut,

J'ai pas regardé ton code, mais tu peux jeter un oeil là, éventuellement pour t'inspirer : http://www.phpcs.com/codes/GENERATEUR-FORMULAIRE-AJAX-PHP5_46124.aspx

signaler à un administrateur
Commentaire de webdeb le 23/09/2008 11:15:15

>> De plus, il est possible de mettre des hidden, radio, checkbox, tu peux spécifier le type dans le constructeur du input.

Ce n'est pas très "user friendly" comme syntaxe. Personnellement, je préfère avoir une méthode, voire même une classe, pour chaque type d'objet. Par exemple :

Une classe InputText
Une classe InputRadio
Une classe InputCheckbox
...

Chacune de ces classes dérivent d'une classe abstraite FormElement et implémente des interfaces communes (Renderable par exemple). Ainsi ton code sera beaucoup plus lisible en ayant ce genre de syntaxe :

$oForm = new Form('action','method');
$oInputTextNom = new InputText('nom');
$oInputTextNom->setLabel('Votre nom');
$oInputTextNom->setId('nom');

$oInputTextPrenom = new InputText('prenom');
$oInputTextPrenom->setLabel('Votre prénom');
$oInputTextPrenom->setId('prenom');

$oInputTextMentions = new InputCheckbox('mentions');
$oInputTextMentions->setLabel('Accepter les mentions');
$oInputTextMentions->setValue("J'accepte les mentions');
$oInputTextMentions->setChecked(false);
$oInputTextMentions->setDefaultValue('off');

$oForm->addElement($oInputTextNom);
$oForm->addElement($oInputTextPrenom);
$oForm->addElement($oInputTextMentions);

echo $oForm (appel implicite à __toString() qui appelle une méthode render() qui appelle même chaque méthode render() de chaque élément du formulaire).

C'est quand plus sympa comme syntaxe tu ne trouves pas ?

Tu peux même t'amuser à faire des retours d'instance dans tes méthodes. Tu ajoutes à la fin de tes méthodes "return $this;" pour pouvoir utiliser cette syntaxe :

$oInputTextMentions = new InputCheckbox('mentions');
$oInputTextMentions->setLabel('Accepter les mentions')->setValue("J'accepte les mentions')->setChecked(false)->setDefaultValue('off');

Ainsi tu peux chaîner les appels de méthodes sur un même objet.

++

signaler à un administrateur
Commentaire de Galip le 23/09/2008 13:29:57

Bonjour, comme je l'ai dit dans la description ce code m'a simplement servi de test, donc je le voulais le plus simple possible, bien entendu une classe abstraite Input aurait été préférable avec ensuite comme classe dérivé InputText, InputCheckBox, ...

L'intéret de cette source est la fonction javascript. Il suffit de lui passer les id des inputs à aligner est automatiquement, le style des inputs est modifié pour qu'ils apparaissent alignés. Plus besoin de tatonner pour trouver le bon nombre de pixels à mettre.

Merci pour la source Neigedhiver j'ai regardé la démo ça à l'air très complet comme générateur.

++

signaler à un administrateur
Commentaire de neigedhiver le 23/09/2008 14:06:15

De rien.
Juste une petite remarque... Tu dis :
"L'intéret de cette source est la fonction javascript."
Est-ce que PHPCS est alors le meilleur endroit ? ;)

Puis tant que j'y suis, je viens de jeter un oeil à cette fonction JS, et j'ai une petite remarque...
Utiliser un JS pour aligner, ça ne me parait pas une très bonne idée. En fait, dans la pratique, j'ai tendance à n'utiliser JS pour ce genre de chose QUE quand je ne peux pas faire autrement... Mais avec des CSS bien foutus, ça n'arrive jamais...

signaler à un administrateur
Commentaire de Galip le 23/09/2008 16:31:28

Oui, j'avoue que j'aurais du poster seulement la fonction javascript dans la section appropriée parce que le code PHP ne présente pas grand intéret dans l'état actuel.

Si tu as un code qui permet d'aligner automatiquement les inputs d'un formulaire en CSS je suis preneur.

A+ et merci de tes remarques.

signaler à un administrateur
Commentaire de neigedhiver le 23/09/2008 17:23:36

Bin...

Ca dépend du code HTML en fait... et de ce à quoi tu veux que ça ressemble.

Par exemple, si tu veux deux colonnes, avec à gauche le libellé du champ et à droite le champ de saisie, tu peux au choix :
- utiliser un tableau <table>, mais il faut avouer que c'est quand même assez bof...
- utiliser deux <div>

La première option étant plutôt mauvaise d'un point de vue sémantique, on va s'attarder sur la deuxième.
Un div conteneur pour chaque ligne, et dans chaque ligne, un div à gauche, un div à droite.

<div class="ligne_formulaire">
  <div class="libelle_formulaire">Pseudo : </div>
  <div class="champ_formulaire"><input type="text maxlength="255" size="30" name="pseudo" /></div>
</div>

Evidemment, on aura pris soin d'ouvrir la balise <form> plus tôt dans le code, histoire d'avoir un formulaire correctement déclaré.

Voilà pour le HTML.
Sans CSS, les deux div vont apparaitre l'un en dessous de l'autre.
Donc, dans le CSS :

.libelle_formulaire {float:left; width: 200px;} /* On fait flotter le libellé à gauche du champ */

Je pense que c'est bon, même si j'ai pas testé ce code précisément. Si ce code précis ne fonctionne pas, y'a au moins l'idée...
Après, on peut varier à volonté les classes CSS pour afficher correctement des checkbox (qui s'affichent traditionnellement l'une en dessous de l'autre, avec le texte à droite plutôt qu'à gauche), des radio, etc.

signaler à un administrateur
Commentaire de Galip le 28/09/2008 19:15:12

Après réflexion je vais au moins finir cette source. Pour l'instant, il n'y a pas de grandes améliorations par rapport à l'ancien code (quoique). J'ai intégré les idées de webdeb. Seule l'implémentation du input de type text est faîte je continuerai quand j'aurai du temps libre.

A+

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

php et html [ par Vinz ] Salut,Voila, j'utilise un formulaire qui me lance un php. Dans ce formulaire j'ai un &lt;input type=file name='monFile'&gt;.Mon probleme c'est que j'a html ep php [ par manueg ] Bonjour, je débute en déve PHP et je me pose les questions suivantes....J'utilise Dreamweaver et EasyPHP et ApacheMon approche est la suivante: je fai PHP 4.2.3 sous Linux [ par JosueClement ] Bonjour à tous...Je viens de réinstaller mon PC sous linux et j'ai installé apache et PHP 4.2.3maintenant j'ai un problème avec les formulaires:// Pag recorset sous dream mx [ par sbailay ] salut je debute en PHP et je rame à max pour faire un recordset un peu particulier:sur la premiere page "recherche.php" j'ai un formulaire "form_reche Combiner Cookie et Session [ par apz ] salut,en fait je voudrais ajouter une zone membres dans mon site.je voulais combiner cookie et session : le cookie sert au login automatique de l'util SVP : Aide pour mon premier formulaire. [ par davggy ] Salut à tous.Je suis tout tout débutant et très intrigué par les capacités du PHP.Mon premier souhait est de récupérer par mail les informations fourn formulaire [ par LeoLS ] Bonjour ,Voilà j'ai un problème ...Je voudrais faire via l'admin un formulaire sur la page formulaire_demon.php et que cela s'écrit sur une page du st Formulaire [ par DeAtHCrAsH ] Salut,J'ai un formaulaire avec plusieurs bouton : Supprimer le fichier, Editer la description du fichier et Ajouter le commentaire.Ces 3 boutons font PHP : help sur fonction d'upload via un formulaire [ par ijlprat ] Bonjour,j'ai un formulaire qui me permet de choisir un fichier en local à uploader sur un espace ftp.Le traitement du formulaire bloque et j'obtiens l INSERT puis UPDATE [ par bricethenetman ] Salut j'ai un formulaire d'inscription qui aurait pu se réduire à une page mais pour des soucis d'esthetique je l'ai divisé en deux form_inscr.php et


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,562 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.