GÉNÉRATEUR DE FORMULAIRE [AJAX][PHP5]

codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 - 20 mars 2008 à 13:43
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 - 21 juin 2010 à 17:06
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/46124-generateur-de-formulaire-ajax-php5

Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
21 juin 2010 à 17:06
J'ai entierement revu la conception de la generation depuis pour palier a la lourdeur de ce generateur ici :
http://www.phpcs.com/codes/ABSTRACTHTML-GENERATOR_51916.aspx
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
21 juin 2010 à 17:04
J'ai entierement revu la conception de la generation depuis pour palier a la lourdeur de ce generateur ici :
http://www.phpcs.com/codes/ABSTRACTHTML-GENERATOR_51916.aspx
boudzz Messages postés 9 Date d'inscription samedi 14 mai 2005 Statut Membre Dernière intervention 18 juin 2010
18 juin 2010 à 13:36
Une vraie usine à gaz. Mais si ça peut aider certains...
cs_ossatueur Messages postés 2 Date d'inscription dimanche 12 juin 2005 Statut Membre Dernière intervention 25 janvier 2010
25 janv. 2010 à 23:02
meme PB FileScanner_scan_FILE_NOT_FOUND

:(
maldone974 Messages postés 1 Date d'inscription mercredi 27 février 2008 Statut Membre Dernière intervention 21 décembre 2009
21 déc. 2009 à 18:28
Bonjour très bon générateur de formulaire !! impressionant.

J'ai dut renommer tous les fichiers et tous les liens vers les fichiers en .php5

J'ai bloqué dès la connexion à la base de donnée qui est en "failed", blocage contourné en bidouillant le fichier DBM.php.
mon but étant de générer des formulaires, si la connexion à la base ne se fait pas, ce n'est pas si grave, dc me voila devant l'interface et je vous avoue que je bloque à la création des listes déroulantes!!
la méthode script, comment l'utiliser?
incas1k Messages postés 1 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 14 septembre 2009
14 sept. 2009 à 09:46
Bonjour,
Je me garderai bien de toute critique, n'étant pas en mesure d'en faire autant.
Bravo pour ce travail même s'il y a des imperfections, c'est toujours facile de critiquer , plus difficile à réaliser donc bravo.
J'ai cherché à mettre en oeuvre, la connexion à la base est OK, mais je n'arrive pas à faire les liens avec js et css.
Quelle est l'erreur? Merci pour votre aide.
J'utilise "easyphp" version 2+
J'attends votre réponse avec impatience, car c'est vraiment l'outil que je recherchais.
Merci par avance
Cordialement
Incas
cs_guismo1er Messages postés 76 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 12 mars 2009
25 janv. 2009 à 13:39
Arf :(

Je n'arrive pas à lier les css et le js. avec cette erreur du filescanner.

Que faut il faire?? (mettre un chmod ou quoi?)

sinon j'arrive pas à accéder à ma base, car j'ai une base du type

Serveur: mysql5-11 via TCP/IP

Donc impossible de la renommer. (problèmes avec les tirets)

Que puis je faire pour que ça fonctionne?

- Probleme js/css scan
- pas d'accès à ma table, car "-" dans ma base (et non dans mes tables).

Un grand merci
cs_guismo1er Messages postés 76 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 12 mars 2009
25 janv. 2009 à 13:25
oups, je viens de voir qu'il fallait mettre en php5

Sous OVH:

Pour changer la version de php qui va exécuter un fichier .php, il suffit de creer un .htaccess dans le repertoire de votre site. Avec le bloc note de Windows ou tout autre éditeur de texte, tapez :

SetEnv PHP_VER 5

Enregistrez ce fichier et uploadez le sur votre ftp dans le répertoire concerné et renommez le en .htaccess. Les fichiers .php seront alors exécutés avec la version 5 de php.
cs_guismo1er Messages postés 76 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 12 mars 2009
25 janv. 2009 à 13:15
j'ai installé tel quel sur mon serveur sans rien modifier.

Et j'ai cette erreur:

Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in ****/Form/class/DBM.php on line 6

Pourquoi? Que se passe t'il?
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
28 août 2008 à 14:48
Coucou tout le monde ^^

Effectivement j'ai complètement oublié ce genre d'erreur cf les table avec des "-" dans leur noms xD
Personnellement je ne marche qu'au "_" :p

Je profite de mon furtif passage pour faire un mea-culpa sur l'animation de démo, à la fin quand vous voyez "Double cliquez sur : frm_nom_de_votre_formulaire.php" en fait c'est juste que j'ai ouvert le fichier généré dans le dossier "files" de l'application ^_^

@Azounet : cette exception viens de la classe FileScanner et veut tout simplement dire que le fichier que tu à spécifié est introuvable (peu être du à une erreur de frappe après sélection), en tout cas elle est levée dans ce cas la :
if(!file_exists($file_path)) throw new myException(__CLASS__.'_'.__FUNCTION__.'_FILE_NOT_FOUND');
$file_path étant le chemin spécifié dans le champ file.
Je ne sais pas si sa va t'aider mais je peu malheureusement pas faire mieux.
htaxil Messages postés 4 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 9 mars 2009
27 août 2008 à 18:20
Problème résolu.

Comme vernoneure, le problème était lié au nommage d'une de mes tables : son nom comportait un tiret '-'. En remplaçant ce tiret par un underscore '_' la prophétie s'est accomplie, la liste des tables est apparue.

Cordialement,
Hubert
htaxil Messages postés 4 Date d'inscription lundi 9 mars 2009 Statut Membre Dernière intervention 9 mars 2009
27 août 2008 à 16:01
Bonjour,

L'utilitaire a l'air très intéressant.

Je l'ai installé avec un serveur WAMP 2.0 mais je rencontre un problème lorsque je veux afficher la liste des tables de ma base MySQL : Le programme me renvoie une erreur : "Une erreur est survenue dans le fichier appellé ou le XML retourné est mal formé".

D'après les posts précédents, j'ai pu voir qu'une erreur similaire apparaissait lorsqu’'on avait un problème de connexion à la base de données, mais le code a été corrigé depuis et il ne me semble pas avoir de problème de connexion.

Auriez-vous une idée de l'origine de cette erreur ?
Faut-il activer certains modules d'Apache ou modifier la config PHP de base ?

Merci
Hubert
cs_Azounet Messages postés 1 Date d'inscription mercredi 20 août 2008 Statut Membre Dernière intervention 20 août 2008
20 août 2008 à 11:14
Bonjour,

Ce générateur m'a l'air vraiment excellent.
Je viens de l'essayer mais autant la connexion à la base de données se déroule sans problème autant la liaison du css ou du js est impossible :
FileScanner_scan_FILE_NOT_FOUND

L'install a été faite à partir du zip (donc tout inclus i presume)
Les deux fichiers sélectionnés sont respectivement :
- blabla\FormGenerator-1.0\inc\js\basic_functions.js
- blabla\FormGenerator-1.0\css\style.css

Suis-je donc le seul? :p

Encore bravo!
vernoneure Messages postés 3 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 19 août 2008
19 août 2008 à 16:18
bon l outil fonctionne mais ne me crée pas le fichier.php lorsque le formulaire est fini.

La dernière action de l'exemple swf "double cliquez sur frm_nomdufichier.php qui affiche ensuite le code ne fonctionne pas sur ma machine (ubuntu mysql apache2 php5).

Le double clique à l'endroit du fichier exemple ne donne rien, je reste donc avec un fichier frm_ qui ne me permet pas d'avancer, car rien ne permet l'écriture des données du formulaire vers ma table mysql.

Si quelqu un pouvait m'aider a comprendre (désolé d être un boulet hein (boléen?) )
vernoneure Messages postés 3 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 19 août 2008
14 août 2008 à 11:35
Bon alors j'ai fini par trouver autant pour moi
lors de la connexion a la base (qui existait bien) se faisait correctement, ensuite le problème venait d'un nommage plus que mauvais de mes tables.

mysql acceptant mes noms de tables je ne pensais pas que cela poserait problème.
Une fois mes tables renommées tout fonctionne :)

Merci pour cette outil performant !
vernoneure Messages postés 3 Date d'inscription mercredi 15 novembre 2000 Statut Membre Dernière intervention 19 août 2008
14 août 2008 à 10:54
Bonjour tout d'abord superbe travail,

malheureusement je reste bloqué pour l'utilisation.
Comme JOELEL je fut d'abord gêné par le petit problème dans DBM.php
Une fois passé cet écueil je suis confronté à la même erreur à l'étape suivante :
"Une erreur est survenue dans le fichier appellé ou le XML retourné est mal formé"
mais cette fois dans la page dbstructure.php lors que je clique sur le développement de
"Tables de la base de données dbname(nom de ma table pour tester)"
Le fichier DBM.php a été corrigé, il s'agit d'un problème de session a t il perdu la connexion à ma base après le login? je suis plutot débutant en php si une bonne âme pouvait m'aider :)

(je continue de chercher de toute façon un outil pareil je veux le faire fonctionner, précision je suis sous linux)
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
11 mai 2008 à 03:19
De rien en espérant que ce projet te servira ;) Bonne continuation à toi aussi :)
joelel Messages postés 2 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 9 mai 2008
9 mai 2008 à 22:42
Merci beaucoup pour le petit conseil. Ca fonctionne maintenant. Bonne continuation.
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
9 mai 2008 à 12:05
Hello Joelel !

D'abord l'erreur vien du fait que tu as essayé de te connecter à une base de donnée qui n'existe pas ;)

Ensuite le pourquoi sa bug ? Ben c'est ma faute ^_^ Comme quoi copier coller c'est le mal !

Explication : Pourquoi l'erreur "Une erreur est survenue dans le fichier appellé ou le XML retourné est mal formé" ?

Dans ce cas la c'est "Une erreur est survenue dans le fichier appellé" car voila ce que retourne le fichier en essayant de se connecter à une base qui n'existe pas :

<root>

Fatal error: Access to undeclared static property: SingletonDBM::$db_name in C:\AtWork\WebDev

\wamp\www\FormGenerator-1.0\class\DBM.php on line 70

Ooooopsss ^_^
Ligne 70 ? J'accède à une propriété statique non dévlarée ??

if($this->db_res == false){ throw new myException('DB ['.self::$db_name.'] isn\'t in range or don\'t exist'); }

... Ah bah vi ... self::$db_name <---- Voila la faute de copier coller... C'est sur on peu pas accéder à une propriété statique qui n'existe pas :p

Solution : et bien il te suffit de remplacer self::$db_name par $this->db_name et tout fonctionne ^^

Petit détail néanmoins important, il te faut une base de donnée même si tu l'utilise pas pour générer tes formulaires (je sais c'est bête de ma part mais je suis parti sur la base que on allai générer des formulaire à partir d'une base ^^) donc créé en une même vide, tu t'y connecte et c'est parti :)
joelel Messages postés 2 Date d'inscription dimanche 10 décembre 2000 Statut Membre Dernière intervention 9 mai 2008
8 mai 2008 à 22:08
Salut, j'ai vu la demo de ton générateur de formulaire et je te félicite c'est vraiment bien fait. J'ai juste un problème de débutant: Une fois installé, lorsque j'essaye de rentrer un nom de la base comme "test" ça m'affiche un message d'erreur:
"Une erreur est survenue dans le fichier appellé ou le XML retourné est mal formé"
Bon je pense que l'erreur est qu'il fasse modifier qlqchose dans le fichier class/DBM.php. Peut tu m'aider? merci
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
25 mars 2008 à 23:08
C'est que ton EasyPHP 1.8 tourne en PHP4 au lieu de PHP5 que tu as ce message d'erreur. Il faut donc que tu utilises PHP5. Pour cela, soit tu télécharges et installes EasyPHP 2 ou bien WAMP Server 2 que je te recommande.

++
gxm Messages postés 1 Date d'inscription mercredi 11 août 2004 Statut Membre Dernière intervention 25 mars 2008
25 mars 2008 à 22:44
Bonsoir,

Je viens de télécharger ton code pour essayer de voir ce fabuleux travail que tu as réalisé, mais au démarrage de ce massage s'affiche :

Parse error: parse error, expecting `T_OLD_FUNCTION' or `T_FUNCTION' or `T_VAR' or `'}'' in c:\program files\easyphp1-8\www\formgenerator-1.0\class\DBM.php on line 6

Sachant que je ne suis pas expert est ce que tu pourrais m'aider.
Merci d'avance.
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
24 mars 2008 à 19:00
@depression : mais si on veut une application évolutive, on préfèrera utiliser un itérateur avec filtre modifiable dynamiquement... enfin c'que j'en dis...
Utilisateur anonyme
24 mars 2008 à 12:53
J'ai regardé la démo et non les sources, le résultat est tout simplement génial !
cs_depression Messages postés 100 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 13 juillet 2009
23 mars 2008 à 18:10
Enfin bon après, pour différencier un .js d'un .css, je pense qu'un substr() éventuellement couplé avec strtolower() serait plus rapide...
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
20 mars 2008 à 18:29
Sur le lien que je t'ai filé, preg_match est plus de 5x plus rapide que ereg... Je trouve que c'est pas négligeable, surtout quand on applique la règle à tous les fichiers d'un répertoire...

Historiquement, les PCRE ont été introduites dans PHP comme extension, donc pas toujours présentes par défaut... L'utilisation de ereg et eregi étaient alors justifiées. Maintenant, elles font partie intégrante de PHP, leur utilisation n'est plus vraiment légitime...
C'est mon point de vue...

Sinon, y'a la fonction glob() qui existe, mais qui ne permet pas l'utilisation d'itérateurs, à moins d'en avoir un ArrayIterator sur le résultat de glob()... Faudrait peut-être faire des benchs pour comparer...
Bon et puis je vais pas polluer les commentaires alors que pour l'instant, je n'ai finalement rien de plus à dire lol
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
20 mars 2008 à 17:59
Merci neigedhiver, n'hésite pas à me contacter une fois que tu l'auras testé ^^
Pour le preg_match c'est vrai que c'est plus rapide je me suis posé la question mais bon je pense que le gain de performance est minime sur une chaine de la taille d'un nom de fichier alors j'ai choisi eregi pour faire un peu d'expression régulières :p
Bon oki je sort c'est pas une excuse valable j'aurais du faire un preg_match ^^
J'aime beaucoup la source que tu as posté je vais regarder sa surtout que ma recherche dans les fichiers est loin d'être parfaite ;)
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
20 mars 2008 à 17:42
Salut,

J'ai pas regardé en détail, mais j'ai commencé à jeter un oeil à la démo. Ca a l'air sympa, joli, réfléchi, y'a du boulot derrière.
En plus, en survolant le code, j'ai cru voir que c'était propre et pas mal documenté.

Une remarque d'après quelque chose que j'ai vu et qui m'a marqué : dans la classe FileScanner
Tu utilises eregi pour savoir si un fichier est un .js ou un .css
eregi, pour un motif comme ça, j'aurai tendance à préférer une PCRE avec preg_match. A motif identique, ce sera FORCEMENT plus rapide (des benchs existent qui le prouvent, cf http://lumadis.be/regex/tuto_pcre.php#rapide )

Ta source est PHP5, tu aurais avantage à utiliser un DirectoryIterator avec filtre pour lister les fichiers css/js. J'avoue que je ne sais pas si on y gagne en perfs, mais on y gagne certainement en lignes de code et donc en lisibilité (en plus, utiliser la SPL c'est jamais une mauvaise chose à mes yeux, puisque des fonctions/classes codées en C seront forcément plus rapides que du code en PHP. Pour illustrer, j'ai fait une source dans ce sens (un truc trop complet, mais en ne prenant qu'une classe et en utilisant un filtre non dynamique comme j'ai fait, ça doit être plus intéressant... Pis si ça peut te donner des idées... : http://www.phpcs.com/codes/LISTING-REPERTOIRE-AVEC-FILTRES_45125.aspx )

Voilà pour l'instant ce que je peux en dire... Mais du coup, ça donne envie d'essayer... Chose que je ferai probablement dès le début de la semaine prochaine. Bon et puis j'en profiterai (quand je serai re-chez moi) pour regarder un peu plus en détail tout ton code.
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
20 mars 2008 à 16:32
Et voila une petite démo rapide :
http://sd-1.archive-host.com/membres/up/35381551644790854/
DemoFormGenerator/FormGenerator.swf
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
20 mars 2008 à 14:32
Tout d'abord je vous remercie :D
Codefalse : que de bonnes remarques ^^ je fait encore trop d'erreurs du style que tu as relever :p

Pour la classe myException à l'origine je devais retourner plus de chose que
$this->getMessage() mais pour une question de lisibilité j'ai fini par garder que $this->getMessage() et effectivement cette classe ne me sert plus à grand chose sauf garder l'opportunité de réafficher les détails que j'ai enlevé (comme la ligne par exemple)

Le file scanner me sert à trouver le nom des fonctions javascript d'un fichier js et les styles dans un fichier css n'ayant pas trouvé de fonction ou autre pouvant me permettre de les lister j'ai du le faire à la main, sa marche correctement sauf quand il y à beaucoup de commentaire dans un fichier css :p

pour la dernière partie au niveau du DBM tu as raison aussi je vais corriger sa :p

Webdeb : Non malheureusement je n'ai pas intégré de validateur mais l'idée est bonne il faudra que je le fasse

Pour l'exemple et bien je ne sais pas trop comment vous le donner enfin sous quelle forme vu que tout se fait au clic :D Je vais essayer quand même ^^
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
20 mars 2008 à 13:47
J'aimerai bien voir un exemple en ligne moi si c'est possible. Autre chose : peut-on appliquer des règles de validation sur les champs de formulaire ?
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
20 mars 2008 à 13:43
La première chose que j'aurai à dire c'est "Où est l'exemple ??" :p

Je n'ai pas parcouru tout ton code mais j'aurai quelques remarques par rapport à ce que j'ai trouvé :

class myException : public function __exception() n'est qu'une surcouche, tu n'en a pas besoin puisque tu appele $this->getMessage(); Bon du coup il va falloir modifier tout ton code :p

A quoi te sert concretement FileScanner ?

Dans la classe DBM, toute les fonctions commencant par un __ sont statique (d'apres ce que j'ai pu voir). Et pour chaques, tu teste si self::$instance n'est pas nul, dans le cas contraire, tu appele le singleton.
Tu te complique la vie je trouve :

Si je prends
# public static function __set_sql($sql){
# if(empty(self::$instance)) self::create_singleton();
# self::$instance->set_sql($sql);
# }

Ta fonction __set_sql fait appel à la fonction set_sql de l'instance en cours de DBM. Pourquoi ne pas faire :

public static function getInstance () {
if (!self::$instance instanceof DBM)
self::$instance = new DBM ();

return self::$instance;
}

et ensuite dans ton code tu fait DBM::getInstance ()->set_sql ();
Ca te prends trois charactères mais tu gagne en lisibilité.

Vivement l'exemple ! ;)
Rejoignez-nous