Page 1 sur 1

Enregistrement de formulaires personnalisés.

Posté : 23 août 2011, 16:21
par AoSiX
Bonjour,

J'aimerai créer un générateur de formulaire, stocker le formulaire créé, le proposer à des utilisateurs , et finalement stocker le résultat en ligne.

J'ai déjà pensé à une architecture, mais je ne suis pas sur que ce soit la bonne manière...voilà ce que je m'était dit :

Une table formulaire, qui contient un Formulaire ID, puis un tableau sérialisé, qui devrait ressemble à ça :
[0] = array(
    "Type"=>"Text",
     "Title"=>"Who are the test variables ?",
    "Name"=>"foo",
    "Value"=>"Bar",
    "Required"=>false);
<label for="element1"><strong>Who are the test variables ?</strong>   <input type="text" id="element0" "name="foo" value="bar" />
[1] = array(
    "Type"=>"radio",
     "Title"=>"Wazzup?",
    "Name"=>"baz",
    "Value"=>array([0] => array ("value"=>1, title=>'"yo")),
    "Required"=>true);
 <strong id="element1">Wazzup?</strong>   <input type="radio" id="element1-0" "name="baz" value="1" /><label for="element1-0">yo</label>..
Voilà pour la partie stockage de formulaire.


Pour la partie stockage du résultat, c'est à peu près la même chose :
Formulaire_Resultat_ID
Formulaire_ID->réf au formulaire créé au dessus
Utilisateur_ID
Resultats-> où le résultat serait un tableau sérialisé avec les résultats

[0] => (Name=>"foo",Value="J'ai modifié la réponse")
[1] => (Name=>"baz",Value="1")


ça vous semble correct, ou je dois m'y prendre autrement ?

Re: Enregistrement de formulaires personnalisés.

Posté : 23 août 2011, 18:31
par xTG
Pas vraiment d'autres méthodes, la création dynamique de table est un vrai gouffre à mémoire. ;)
Un conseil cependant, si tu prévois nombre de champs utilises plutôt ta propre serialisation que celle de PHP, cela prendra moins de place.

Re: Enregistrement de formulaires personnalisés.

Posté : 25 août 2011, 17:58
par AoSiX
J'ai pas de sérialisation à moi ..... Comment puis-je faire ça ? je ne suis pas sûr d'avoir bien compris ton propos.

Re: Enregistrement de formulaires personnalisés.

Posté : 26 août 2011, 10:41
par xTG
PHP possède une fonction de serialisation des objets et tableaux. Cependant elle augmente significativement la taille de la chaîne finale.
Si tu as des chaînes respectant des règles tu peux te faire tes propres fonctions et économiser des caractères.

Exemple avec serialize :
Array
(
[0] => pleh
)
a:1:{i:0;s:4:"pleh";}
Exemple avec un système plus simple (avec un # pour séparateur) :
pleh#
Ou bien un peu mieux (avec l'index) :
0:"pleh"#
Le principe est surtout de mettre en place des règles afin d'avoir des caractères qui ne seront pas utilisés dans les variables et qui pourront servir de séparateur.

Re: Enregistrement de formulaires personnalisés.

Posté : 26 août 2011, 18:43
par stealth35
pourquoi pas du json ou du yaml ?

Re: Enregistrement de formulaires personnalisés.

Posté : 26 août 2011, 22:17
par Nagol
serialize/unserialize c'est ce qui se fait de mieux selon moi, le typage des valeurs est garantie, la chaine est relativement courte comparée à d'autre méthode (soap par exemple).

Je ne recommanderais pas ce que propose xTG (désolé) le fait d'utiliser des encodages persos c'est pas une mauvaise idée en soi, mais ca sera beaucoup plus difficile d'éviter les corruptions de données (caractère non prévu dans tes vrais données)

Je ne recommanderais pas Json non plus, il est très faible en matière de respect de typage des données, en d'autres termes quand tu encodes, puis décode une donnée suffisamment complexe tu n'auras pas la même structuration de cette donnée.

Re: Enregistrement de formulaires personnalisés.

Posté : 26 août 2011, 22:22
par xTG
Je suis d'accord avec toi, je soulevais juste ce point pour des données gigantesques.
Un conseil cependant, si tu prévois nombre de champs utilises plutôt ta propre serialisation que celle de PHP, cela prendra moins de place.
Car bien structurer les données c'est bien quand c'est petit, quand c'est énorme c'est même pas la peine.
C'est l'art de réserver une salle pour stocker la statue de la liberté pour finalement y stocker une boite de bonbon (en exagérant). On fini par avoir autant de contenant que de contenu.
Pourquoi réserver 100 000 octets quand il suffit de 20 000 ?

Et pis la corruption de données... Les locks sont là pour ça. ;)

Re: Enregistrement de formulaires personnalisés.

Posté : 27 août 2011, 15:25
par stealth35
on pas besoin de typage puisqu'a la fin tout sera du type string

Re: Enregistrement de formulaires personnalisés.

Posté : 27 août 2011, 18:49
par AoSiX
Bonjour,

Merci pour votre contribution à ce sujet, je suis toujours aussi heureux quand un débat se crée, on y apprend beaucoup !

Effectivement, tout sera stocké en tant que string. Et quand j'ai dit serialize, je pensais en fait à JSON ( histoire de pouvoir exploiter facilement les données sur plusieurs supports différents ).

Je vais rester sur un blob avec les données en JSON, je ne vois pas de meilleure solution... Merci de m'avoir aidé :)