FORMULAIRE : 4 EN 1

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 18 oct. 2007 à 16:03
bigood2323 Messages postés 2 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 26 décembre 2015 - 17 avril 2010 à 01:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44432-formulaire-4-en-1

bigood2323 Messages postés 2 Date d'inscription dimanche 7 juin 2009 Statut Membre Dernière intervention 26 décembre 2015
17 avril 2010 à 01:40
Le cœur y est, étant un débutant en la matière, au vu de la quantité de lignes ( et que je pige pas le concept de la chose...), je te dit courage et respect pour ton travail.

Vous devriez être moins indulgents avec lui, il s'en est donné la peine et vous lui envoyé des tas de trucs dans la tronche.

M'enfin Tartuffe courage ;)
maagicien Messages postés 3 Date d'inscription vendredi 19 décembre 2003 Statut Membre Dernière intervention 2 novembre 2009
6 août 2008 à 12:45
moi j'aime bien!
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
14 nov. 2007 à 11:48
Moi je n'aime pas non plus.

Tous tes textes sont statiques.
Pour ma par un site web digne de se nom est multilingues.
Donc ton formulaire (code) serait bien trop compliquer à mètre à jour.

Pour finir je crois que des classes seraient plus intéressantes que de ce retrouvé avec 856 lignes de code.

Pour les débutants attention je croie que ton HTML n’est pas des plus Initié.

Désoler
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 oct. 2007 à 07:36
Je réponds aussi, point par point :
- select, checkbox, ce ne sont pas des éléments courants ? Personnellement, j'utilise bien plus souvent des select que des textarea. Pour le onmouseover, j'y reviens.
- Ton script ne génère pas de tableau, SAUF si on le lui demande. Ce qui revient à dire qu'il le fait, quoi. Mais les balises , tu décides de les laisser à l'extérieur. Enfin bref, ça c'est insignifiant.
- pas de formulaire donc, seulement 3 types de champs. Je continue à dire que c'est très restrictif : tu partages un code, tu penses qu'il sera utile à d'autres. Enfin, ce devrait être le but. Et pourtant, tu limites son utilisation à tes choix très restrictifs. Ca t'aurait coûté quoi d'être complet afin d'être vraiment utile au plus grand nombre ? Puisque, à priori, si tu postes ici, c'est pour ça.
- Si je n'utilise pas mysql, je dois changer : tes contrôles d'échappement et tes requêtes. Ca comment à faire beaucoup. Même s'ils sont dans la partie "exemple"...et c'est ce qui me gène : ta partie "exemple" est plus grosse que le reste du code. Plus bordélique aussi, pas de fonction, rien. C'est franchement incompréhensible. Si c'est pour avoir seulement une 3 fonctions qui génèrent 3 types d'input (avec ce html, j'insiste, et ce javascript)...ça ne sert plus à grandchose. Et si tu décides que cette partie "exemple" fait partie du code, alors elle n'est pas adaptée car il y a des tonnes de modifications à faire dedans, sans aucune facilité apportée.
-tu sais cve que tu attends dans ton GET, en effet. Donc si tu crées un tableau de correspondances valeurs => variables à mettre à jour...tu y gagnes bien un paquet de lignes.
- Ah...donc, ton code, ce ne sont que les 3 fonctions ? Le reste, c'est comment les utiliser...? Bref, ton code ne fait qu'afficher 3 input.

Tartuffe...ce code n'est adaptable à peu près que par toi, et 2-3 débutants qui s'y essayeront. Ton exemple est bordélique, propriétaire, difficile à comprendre. Et dans ton exemple, il y a le côté fonctionnel de ton code! C'est là que tu traites tes valeurs, que tu les contrôles, que tu joues avec la session pour pallier aux refresh...bref, ça fait partie de ton code, puisqu'il met en place des fonctionnalités promises.
Je pense donc en effet que tu n'as pas compris la notion de réutilisabilité, de portabilité. Tu n'as pas pensé ce code pour les autres, mais uniquement pour toi. C'est bien ce que je te reproche. Si mettre un onmouseover, un popup, et 3 attributs dans un élément de formulaire c'est, pour toi, un de ces "bouts de codes complets mais restrcitifs car attachés à une problématique fonctionnelement précise et particulièrement individuelle, donc inexploitable par un tiers,", c'est en effet qu'il y a un soucis.

" Je code si vieux que ca ?" Faut croire!

"J'insite, mais vu que ce code est adaptable, on peut virer l'intrus sans souci, non ?"
Mais si je modifie tout ton code, puisqu'il est si adaptable...il sert à quoi, au juste?

Quoi que tu en penses, ce que je reproche à ton code ce n'est pas l'intention, c'est la manière. Je suis un développeur web. Depuis longtemps...et je pense que tu peux me croire si je te dis que ton code n'aidera pas grand monde (à quelques exceptions près hein...il y en a toujours), parce que tu as omis de le rendre vraiment portable, simple à utiliser, propre, générique. Tu penses l'avoir fait, mais ce n'est pas le cas. Il faut modifier 95% de ce que tu as écrit pour pouvoir l'utiliser dans son propre système. Y compris les fonctions. Ca fait beaucoup.
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
20 oct. 2007 à 02:00
J'ai relu ton code et non je n'adhere toujours pas...
Peut être parce que un formulaire c'est rapide à faire en soit et que quand c'est un formulaire "complexe" il vaut mieux savoir ce qu'on fait (code propre et typé et facilement adaptable)
Désolé de ne pas être partisan du moindre effort et d'aimer les choses bien faite... Tu peux en effet ne pas être d'accord avec mon propos mais...
Si j'avais du faire ton truc deja, j'aurais fait une/des classes.
Surement une pour chaque type "d'input" déjà (avec une factory peut être) et donc des methodes pour assainir les variables entrées par l'utilisateur et informer l'utilisateur en cas de mauvais choix ou de choix obligatoire.
Ces assainissements feront reference a une bdd (mysql,mssql,...) afin de faire les bons assainissements d'une part mais aussi pour simplifier le requetage vers ma bdd.
Des fonctions jetées comme ça et une methode a touiller pour faire ci ou ça n'a jamais fait grand miracle et n'a jamais eveillé beaucoup d'esprit et c'est cela que je regrette le plus dans cette source.
Attention néanmoins, je ne crache pas sur les framework qui fournissent de bons outils de manière générale mais ils sont généralement fait en classes...
cs_Tartuffe Messages postés 39 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 18 février 2008 3
20 oct. 2007 à 01:33
Sinon...

"Ah si, on a la liberté d'utiliser des attributs html dépréciés depuis belle lurette, ..."
Je code si vieux que ca ?

"... et un javascript particulièrement invasif"
J'insite, mais vu que ce code est adaptable, on peut virer l'intrus sans souci, non ?
cs_Tartuffe Messages postés 39 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 18 février 2008 3
20 oct. 2007 à 01:24
Peut-être me suis mal expliqué...

- Mon source propose en effet seulement 3 fonctions (les plus courantes d'utilisation ; radio button, textarea et text) qui permettent via les paramètres de se créer comme je leur demande avec un JS d'aide sur onmouseover dans mon cas (addslashe, étant pour le passage des " ' " via php qui fusil l'affichage dans le JS (j'aime pas JS) ; dans le doute je le rajoute (ce qui est utile si le message d'aide vient d'une BdD)).
- Le php NE GENERE PAS de TD (sauf si on choisi ce format d'affichage pour les RB). Par contre, j'ai choisi dans mon HTML de mettre mon formulaire en TD...
- Le code ne génère pas de formulaire, en effet.
Par contre l'architecture exposée permet de générer 4 formats de formulaire (en fait 3 formats : vierge, contrôle des saisies, modification, et la page de fiche d'iinfo issu du formulaire.
- en effet c'est PHP + MySQL, donc a adapter avec d'autre BdD....
- IF, ELSEIF, ELSE...
Je suis sur d'une chose et seulement de celle-là, c'est ce que je dois recevoir. Je ne peux rein contrôler d'autre. Donc, afin d'éviter les plantages ou les affichages abscons en recevant autre chose, je teste effectivement les IF et ELSIF des possibles, et met un ELSE pour tous les autres cas.
Je suis donc certain de n'afficher mes infos UNIQUEMENT pour les valeurs attendues des variables contrôlées par ce type de boucle. Bref si un malin s'amuse à me balancer une valeur 'idiote (45 par exemple), il sera traité par le ELSE... Et y'en a des malins ^^
- Comme je disais, je ne donne RIEN concernant les contrôles des données vers la BdD, ni concernant le création de la requête, cela pour ne pas être trop restrictif... Et on me traite de laxiste du coup ^^
Et en effet, si on utilise autre chose que MySQL, on refait ces requêtes (et gare aux stripslashes), CQFD !

Bref, j'ai fais un code ouvert au possible en virant les trucs PROPRIETAIRE de BdD sauf les stripslashes (les addslashes gèrent du PHP HTML JS dans ce cas).
J'ai donné un exemple en découpant 1 à 1 les points principales de construction de la page :
- Contrôle des valeurs GET ou POST d'une autre page ou de la même.
- Gestion du <form></form> et des Boutons d'envoie du formulaire
- exemple d'utilisation de chacune des fonctions (dans un formulaire mis en TABLEAU, et alors, si j'aime ca ?)
Je fournis SEULEMENT une architecture des possibles d'utilisation afin qu'à un formualire soit lié 1 et 1 seule page qui gère de plus le format d'affichage différent selon qu'on attende 1 page formulaire ou une page fiche-de-formulaire.

Bref un truc SIMPLE, pas PERILLEUX pour 2 sous, ADAPTABLE, parce que son concepteur à imaginé un truc ultra basique...

Et on me pouille sur des TABLE et des TD !
Sur le fait que je sois telle ou telle BdD...

Soit je n'ais pas compris le concept du réutilsable dans le LIBRE, car adaptable facilement,
Soit PHPCS attend des bouts de codes complets mais restrcitifs car attachés à une problématique fonctionnelement précise et particulièrement individuelle, donc inexploitable par un tiers,
Soit vous n'étiez pas réveillé en lisant ce code,
soit il est trop complexe pour le commun des mortels et je suis un génie (Yes !!!!!!!!)..

Bref, je me trouve bien marie de vouloir aider en publiant du code qui ne vaut pas tripettes, certes, mais dons l'utilisation vaut son pesant d'or (m'est avis que...)

Faudra m'expliquer quelque trucs là...

Tartuffe plus endormi, quoique...
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 oct. 2007 à 00:04
Au passage, je viens de percuter ce que signifiait l'entité html dans ta phrse : "OPTIONNEL.
Saissisez içi toutes les informations concernant la fiche.".
ICI ne prend pas de C cédille...ici...iça, oui...mais pas ici ;-)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
20 oct. 2007 à 00:02
Hello,

moi, je n'aime pas. Mais je vais étayer mes propos :
- le php ne génère peut-être pas de tableau, mais il génère un paquet de <td>..., et de toute manière, un maximum de html...sans laisser beaucoup de liberté à l'utilisateur. Ah si, on a la liberté d'utiliser des attributs html dépréciés depuis belle lurette, et un javascript particulièrement invasif.
- ce code est extrèmememt limitatif. Il ne génère absolument pas des formulaires...il génère 3 types de champ. C'est vraiment restrictif et ne va pas convenir à énormément d'utilisations.
- ce code balance des addslashes et des stripslashes sans trop savoir pourquoi. A vrai dire, ce code balance beaucoup de trucs qui rendent son utilisation très périlleuse et complexe si jamais on dévie un tant soi peu de ce que son auteur a imaginer. Et si, moi, à tout hasard, je n'utilise pas mysql...? Je modifie toutes tes fonctions de db, ET tes addlashsles et compagnie (vu que l'échappement est différent sur ce serveur de DB)? Mouais. Autant refaire mon propre code.
- on a de jolis noms de fonctions voire de variable...et un code pourtant carrément laxiste. Pas de comparaison stricte, aucun typage donc avec les risques que cela comporte lors du traitement de données utilisateur.
- utilisation abusive des if elseif else (ça me rappelle un de mes staigaires qui utilisaient des tableaux à outrance, pour boucler dessus, et tester chacune des valeurs possibles du tableau dans la boucle...private joke). Tu ferais mieux, là justement, d'utiliser des tableaux paramétrés.
- $aide=addslashes('OPTIONNEL.
Saissisez içi toutes les informations concernant la fiche.'); Il sert à quoi, le addslahes, là ? T'as peur des caractères que tu mets en dur dans ta chaîne...?
- le code est franchement complexe pour ce qu'il fait. Il ne donne pas envie de le décortiquer pour parvenir à l'utiliser.

Je finis sur des notes plus douces maintenant, parce que l'intention y est. TU fais des tests, des isset() etc...ce n'est pas toujours le cas.
Tu as pris la peine de créer des fonctions (pas beaucoup, peu de choix, mais au moins, il y en a).
T'as suffisemment commenté.
@NGStudio => on ne valide pas la conformité de données saisies dans un formulaire en javascript. Surtout pas. On les pré-valide éventuellement pour donner un confort à l'utilisateur (y a pas au moins 10 chiffres dans ton numéro de téléphone ? Tiens, je te le dis sans raffraîchir la page), mais la validation définitive pour insertion en bdd, dans un fichier, ou autre, se fait côté serveur (en php dans notre cas). Parce que le javascript, ça se passe côté client. Et côté client, tu ne contrôles pas grand chose...alors que le client, lui, il contrôle tout...J'ai vu des formulaires sur le site de grosses boîtes (très grosses) validés uniquement en javascript... et qui permettaient du coup avec très peu d'astuce de leur faire insérer en base absolument n'importe quoi. Suis sympa, j'attaque pas...et je ne déconce pas histoire qu'ils ne se fassent pas hacker à tout va, mais c'est quand même une erreur grossière que de faire ça. Donc le principe de ce code est correct de ce côté-ci.
Frank9321 Messages postés 56 Date d'inscription samedi 4 février 2006 Statut Membre Dernière intervention 12 janvier 2008
19 oct. 2007 à 16:20
Pas mal...J'aime bien
Juste un petit truc:
# <?PHP if($type!=0) { ?>
# " />
# <?PHP if($type==2) { ?>
#
# <?PHP } else { ?>
#
# <?PHP } } else { ?>
#
# <?PHP } ?>
trop de <?php ?>

Frank
NGStudio Messages postés 6 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 29 janvier 2009
19 oct. 2007 à 14:21
Bonjour,

Moi j'aurai plutot gérer le formulaire en javascript ! sauf bien sur si les champs doivent etres renplis à l'affichage alors oui pour du PHP...par ailleur les tableaux ne sont plus trop recommandé en HTML sauf bien sur si l'on ne peut pas faire autrement...sinon c'est balise DIV avec du CSS....
cs_Tartuffe Messages postés 39 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 18 février 2008 3
19 oct. 2007 à 13:47
Teclis,
1/ si t'as pas compris, je ne peux pas t'aider.
2/ c'est pas 1 minute par champs, c'est 452,41 minutes !
3/ si tu ne veux pas de tableau, tu n'en fais pas. Le PHP ne génère aucun tableau.
4/ 1 formulaire c'est simple ; 4 versions d'un même formulaire sur le même page, c'est plus compliqué.
cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 1
19 oct. 2007 à 12:30
Tu devrais peut être jeuter un coup d'oeil a PEAR et HTML_QuickForm2 sut http://pear.php.net
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
18 oct. 2007 à 16:03
euh pas compris a quoi ça sert ...un formulaire reste un formulaire et il est par définition facile à faire.
Là le php génère du html qui prend 1 minute par champ et chose plus moche il sort un formulaire en table (eurk:p)
Donc pour moi pas d'interêt
Rejoignez-nous