IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

Création formulaire PHP / MySQL


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Par défaut Création formulaire PHP / MySQL
    hello à tous,
    hello à tous,
    Voici mon problème: je souhaite crée des formulaires par ajout "automatique" soit de 1 champ à 40 champs par exemple par un bouton 'ajouter un nouveau champ' qui s'insera dans la table

    ma base sql, certainement à changer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    CREATE TABLE `creation_formulaire` (
    `id` SMALLINT NOT NULL AUTO_INCREMENT,
    `question` TEXT NOT NULL ,
    `proposition1` VARCHAR( 100 ) NOT NULL ,
    `proposition2` VARCHAR( 100 ) NOT NULL ,
    `proposition3` VARCHAR( 100 ) NOT NULL ,
    `proposition4` VARCHAR( 100 ) NOT NULL ,
    `proposition5` VARCHAR( 100 ) NOT NULL ,
    `resultats1` SMALLINT NOT NULL ,
    `resultats2` SMALLINT NOT NULL ,
    `resultats3` SMALLINT NOT NULL ,
    `resultats4` SMALLINT NOT NULL ,
    `resultats5` SMALLINT NOT NULL ,
    PRIMARY KEY ( `id` )
    et mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <form method="post" action="proposersondage.php">
        <p>
    	Question : <br/>
    	<input type="text" name="question" /><br/>
    	Propositions :<br/>
    	1 : <input type="text" name="proposition1" /><br/>
    	2 : <input type="text" name="proposition2" /><br/>
    	3 : <input type="text" name="proposition3" /><br/>
    	4 : <input type="text" name="proposition4" /><br/>
    	5 : <input type="text" name="proposition5" /><br/>
    	6 : <input type="text" name="proposition6" /><br/>
    	7 : <input type="text" name="proposition7" /><br/>
    	8 : <input type="text" name="proposition8" /><br/>
    	9 : <input type="text" name="proposition9" /><br/>
    	10 : <input type="text" name="proposition10" /><br/><br/>
    <?php
    	//On verifie si les infos existent
    	if (isset($_POST['question']) AND isset($_POST['proposition1'])   )
    	{
    	       //On verifie si elles ne sont pas nulles
    	       if ($_POST['question'] != "" AND $_POST['proposition1'] != "" )
    	       {
     
     
    	                //On change la question et les propositions pour les enregistrer dans la BDD
    		        $modif_question = mysql_real_escape_string($_POST['question']);
    			$modif_prop1 = mysql_real_escape_string($_POST['proposition1']);
    			$modif_prop2 = mysql_real_escape_string($_POST['proposition2']);
    			$modif_prop3 = mysql_real_escape_string($_POST['proposition3']);
    			$modif_prop4 = mysql_real_escape_string($_POST['proposition4']);
    			$modif_prop5 = mysql_real_escape_string($_POST['proposition5']);
    			$modif_prop6 = mysql_real_escape_string($_POST['proposition6']);
    			$modif_prop7 = mysql_real_escape_string($_POST['proposition7']);
    			$modif_prop8 = mysql_real_escape_string($_POST['proposition8']);
    			$modif_prop9 = mysql_real_escape_string($_POST['proposition9']);
    			$modif_prop10 = mysql_real_escape_string($_POST['proposition10']);
     
     
    	                //Enfin on enregistre les infos de notre sondage
    		        mysql_query("INSERT INTO sondage SET
    	                             question = '" . $modif_question . "',
    	                             proposition1 = '" . $modif_prop1 . "',
    	                             proposition2 = '" . $modif_prop2 . "',
    	                             proposition3 = '" . $modif_prop3 . "',
    	                             proposition4 = '" . $modif_prop4 . "',
    								 proposition5 = '" . $modif_prop5 . "',
    								 proposition6 = '" . $modif_prop6 . "',
    								 proposition7 = '" . $modif_prop7 . "',
    								 proposition8 = '" . $modif_prop8 . "',
    								 proposition9 = '" . $modif_prop9 . "',
    								 proposition10 = '" . $modif_prop10 . "' ")  or die(mysql_error());
    aurait-il quelqu'un, une ae sympathique qui pourrait m'expliquer, me montrer
    merci d'avance de votre aide

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonjour Sam,

    Je n'ai pas saisi ton problème, quelle difficulté rencontres-tu ?

    Aussi, la base de données que tu as créé ne correspond pas vraiment à ton besoin, il aurait été plus aisée de créer une BDD ressemblant à ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE TABLE `formulaire` (
    `id` SMALLINT NOT NULL AUTO_INCREMENT,
    `nom` VARCHAR(100) NOT NULL ,
    PRIMARY KEY ( `id` )
    );
    CREATE TABLE `formulaire_propositions`(
    `id` SMALLINT NOT NULL AUTO_INCREMENT,
    `nom` VARCHAR(100) NOT NULL,
    `type` VARCHAR(50) NOT NULL,
    `proposition_id` SMALLINT NOT NULL
    );
    À un formulaire est associé une multitude de propositions.
    Une proposition est définie par un nom et un type (textbox, radio button etc.)


    Pour finir, en quoi un formulaire a-t-il besoin d'un résultat ?

    Ne souhaiterais-tu pas créer un formulaire pour ajouter un nouveau sondage plutot qu'un générateur de formulaire ?

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Par défaut
    merci pour cette information.
    ce que j'aimerais faire et apprendre en php , c'est de pouvoir crée autant de champ formulaire possible à inséré dans la base et les affiché dans une autre page puis enfin d'avoir une page résultat des formulaire envoyé par les visiteurs.

    en clair une page admin qui me permettrait de selectionné et remplir x formulaire par type (radio, text, file,.....), insertion dans la base.

    puis d'afficher aux visiteurs le formulaire pour qu'ils puissent répondre venant de la bdd et compté en pourcentage ces résultats.

    enfin une page archive des résultats du formulaire.

    donc le code d'avant, mais qui serait assez lourd.

    merci de votre aide par avance.
    sam

  4. #4
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Tu as un problème fondamental de structure dans ta base...

    Une base de données bien conçue est une base de donnée ou l'on a en aucun cas besoin d'un nombre dynamique de champs dans une table...

    Si comme dans ton cas, on peut avoir un nombre indéterminé de "propositions", il n'est pas judicieux de tout mettre dans la même table...

    LA BONNE SOLUTION :

    Il te faut 3 tables, et non 1 seule :
    1 table pour stocker ta question,
    1 table pour stocker tes propositions
    1 table pour stocker les réponses d'un utilisateur


    tu peux les définir comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    formulaire (INT id_formulaire, TEXT question)
     
    proposition (INT id_proposition, INT formualire_associe, TEXT nom_proposition)
     
    reponse(INT user, INT propositio, INT formulaire) // le INT User est optionnel, dans le cas ou tu voudrais associer la réponse a un utilisateur de ta BDD...
     
    // tu mets l'auto increment sur tous les id_kkchose
    De cette façon, tu cré 1 seul enregistrement formulaire pas question à poser... Ex : "aimez-vous les choux ?". Ton enregistrement aura donc une clef unique id_formulaire. Pour l'exemple, on va prendre 1000 comme id.

    Ensuite, tu créé autant de proposition que tu le veux, le tout étant que toutes les propositions associés a ta question recoivent dans formulaire_associe l'id de la question que tu viens de poser... donc dans notre ex, 1000.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    insert into proposition(formulaire_associe, nom_proposition) values (1000, "oui, en salade");
    insert into proposition(formulaire_associe, nom_proposition) values (1000, "non, plutot crever");
    insert into proposition(formulaire_associe, nom_proposition) values (1000, "oui, sous la torture");
    insert into proposition(formulaire_associe, nom_proposition) values (1000, "c'est quoi des choux ?");
    Donc du coup, a chaque fois que tu voudra poser ta question, tu pourras écrire (optimisation mise a part pour le moment) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $r = mysql_query('select * from formulaire') or die(mysql_error());
    while($f = mysql_fetch_assoc($r))
    {
       echo $f['question'].' : <br>';
       $r2 = mysql_query('select * from proposition where formulaire_associe = '.$f['formulaire_associe'].'') or die(mysql_error());
       while($p = mysql_fetch_assoc($r2))
       {
          echo '<input type="radio" name="radio_n'.$f[id_formulaire].'" value="'.$p['id_proposition'].'" >'.$p['nom_proposition'].'<br>';
       }
    }
    Une fois le formulaire de réponse soumis, tu n'as plus qu'a enregistrer dans reponse les association formulaire-proposition (et user si tu veux associé la réponse a un utilisateur)... Avec 1 ligne par réponse.

    En esperant t'avoir aidé...

    Edit : un peu grillé...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Par défaut
    merci beaucoup, très utile
    comment je pourrais créer dans la partie admin un formulaire qui pourrais ajouter des champs selon le type (radio, text,...) par un bouton ajouter par exemple puis de les inserer dans la base?

    merci

  6. #6
    Membre chevronné
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Par défaut
    Il faut que tu rajoute dans ta table formulaire un champ type.
    En fonction de ce champ type, tu pourras choisir entre un affichage par radio ou par checkbox (genre tu pose type=1 correpond a des radio, type=2 corrrespond a des checkbox).

    Pour le code, on ne peut pas tout rédiger ici... Il faut que tu te lance, et on t'aidera sur des extraits donnés quand besoin se fera sentir.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 284
    Par défaut
    le formulaire associée correspond à quoi?
    je pensais au type de champ du formulaire?

  8. #8
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    C'est pas dans la table formulaire qu'il faut ajouter le champ type, mais bien dans la table proposition. Car chaque proposition peut avoir un type différent, l'une peut-être une date, l'autre un champ de texte.

    Le mettre dans formulaire induit que tous les champs d'un formulaire sont du meme type...

    Pour finir, je trouve vraiment que la structure suivante répond à ton besoin :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    CREATE TABLE `formulaire` (
    `id` SMALLINT NOT NULL AUTO_INCREMENT,
    `nom` VARCHAR(100) NOT NULL ,
    PRIMARY KEY ( `id` )
    );
     
    CREATE TABLE `formulaire_champs`(
    `id` SMALLINT NOT NULL AUTO_INCREMENT,
    `nom` VARCHAR(100) NOT NULL,
    `type` VARCHAR(50) NOT NULL,
    `formlaire_id` SMALLINT NOT NULL,
    PRIMARY KEY ( `id` )
    );

Discussions similaires

  1. [MySQL] Formulaire PHP ->MySQL
    Par shub dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 09/02/2010, 22h42
  2. [MySQL] Probléme de apostrophe a mettre en formulaire php/mysql
    Par mecmec dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/06/2007, 20h42
  3. [MySQL] Formulaire PHP --> MySQL
    Par Badaboumpanpan dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 23/06/2006, 17h19
  4. Formulaire PHP-MySQL
    Par fara morgana dans le forum Langage
    Réponses: 11
    Dernier message: 09/05/2006, 15h46
  5. [MySQL] Bug Formulaire PHP-MySQL
    Par Davboc dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 01/03/2006, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo