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

Symfony PHP Discussion :

Insertion bdd et formulaires imbriqués [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Par défaut Insertion bdd et formulaires imbriqués
    Bonjour,

    Voila déjà la description de mon projet :

    Je dois créer (pour mon stage) une page d’enquête de satisfaction clients pour mon entreprise sur leur site internet en utilisant symfony.

    J'ai donc choisi d'afficher un formulaire "enquete" qui imbrique plusieurs formulaires "question" qui eux-mêmes imbriquent un seul formulaire "reponse".

    Les formulaire enquete et reponse sont vides et seront remplis par le client alors que les questions sont préalablement définis dans la bdd.

    Mon schéma YML :

    Code php : 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
    #---   Question    -------------------------------------------------------#
    Question:
      columns:
         ennonce: { type: string(255), notnull: true }
         langue: { type: string(2), notnull: true }
     
    #---   Reponse    -------------------------------------------------------#
    Reponse:
      columns:
         note: { type: integer(), notnull: true }
         enquete_id: { type: integer, notnull: true }
         question_id: { type: integer, notnull: true }
      relations:
         Enquete: { onDelete: CASCADE, local: enquete_id, foreign: id }
         Question: { onDelete: CASCADE, local: question_id, foreign: id }
     
    #---   Enquête    -------------------------------------------------------#
    Enquete:
      columns:
         observations: { type: string(255), notnull: true }
         id_reservation: { type: integer(), notnull: true }

    Mon action.class.php de mon module 'enquete' :

    Code php : 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
    class enqueteActions extends sfActions
    {
      public function executeIndex(sfWebRequest $request)
      {
        $this->forme = new EnqueteForm();
      }
     
       public function executeSubmit(sfWebRequest $request)
       {
           $enqueteval = $request->getParameter('enquete');
           print_r($enqueteval);
           $this->setTemplate('index');
       }
     
      protected function processForm(sfWebRequest $request, sfForm $form)
      {
        $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
        if ($form->isValid())
        {
            $form->save();
        }
      }
    }

    Mon EnqueteForm.class.php :

    Code php : 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
    class EnqueteForm extends BaseEnqueteForm
    {
      public function configure()
      {
        $requete = Doctrine_Query::create() // On crée une requête.
            ->select('id')
            ->from('Question') // On veut les enregistrements de la table Question.
    	->execute(); // On exécute la requête.
    	$i=$requete->count();
        $new_question = new BaseForm();
        for($j=1; $j<=$i; $j+=1)
        {
          $question = Doctrine_Core::getTable('Question')->find($j);
          $question_form = new QuestionForm($question);
          $new_question->embedForm($j,$question_form);
        }
         $this->embedForm('NouvelleQuestion', $new_question);
      }
    }

    Mon QuestionForm.class.php :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class QuestionForm extends BaseQuestionForm
    {
      public function configure()
      {
          $rep= new ReponseForm();
          $this->embedForm('NouvelleReponse', $rep);
      }
    }

    Mon index.success.php :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <div align="center">
        <h1 align="center">Evaluation Client</h1>
        <form method="post" action="<?php echo url_for('@enquete_submit') ?>">
            <table>
                <?php echo $forme ?>
            </table>
            <input type="submit" class="submit" value="Envoyer">
        </form>
    </div>

    Ce que contient ma variable $enqueteval après un submit() :

    Code php : 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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    Array
    (
        [observations] => test
        [NouvelleQuestion] => Array
            (
                [1] => Array
                    (
                        [ennonce] => test1 ?
                        [NouvelleReponse] => Array
                            (
                                [note] => 1
                                [id] => 
                                [enquete_id] => 1
                                [question_id] => 1
                            )
     
                        [id] => 1
                        [langue] => fr
                    )
     
                [2] => Array
                    (
                        [ennonce] => test2 ?
                        [NouvelleReponse] => Array
                            (
                                [note] => 1
                                [id] => 
                                [enquete_id] => 1
                                [question_id] => 2
                            )
     
                        [id] => 2
                        [langue] => fr
                    )
     
                [3] => Array
                    (
                        [ennonce] => test3 ?
                        [NouvelleReponse] => Array
                            (
                                [note] => 1
                                [id] => 
                                [enquete_id] => 1
                                [question_id] => 3
                            )
     
                        [id] => 3
                        [langue] => fr
                    )
     
                [4] => Array
                    (
                        [ennonce] => test4 ?
                        [NouvelleReponse] => Array
                            (
                                [note] => 1
                                [id] => 
                                [enquete_id] => 1
                                [question_id] => 4
                            )
     
                        [id] => 4
                        [langue] => fr
                    )
     
            )
     
        [id] => 
        [id_reservation] => 1
        [_csrf_token] => 2dc19fe999f27930eb6d0d09f2bad10c
    )

    Et enfin mon problème :

    Suis-je sur la bonne voie ?

    Je m'explique à partir de ma variable $enqueteval je dois sauvegarder dans ma base de donnée ma nouvelle enquête et les réponses qui lui sont associées alors que les réponses existent déjà (la création des question sera gérée plus tard et donc je dois avoir une gestion dynamique : afficher un choix de réponses par question).

    Je ne peux donc pas utiliser la méthode BindAndSave().

    J'aperçois un début de solution qui serait de parcourir mon tableau $enqueteval pour redéfinir mes objets enquete et reponse pour les insérer ensuite dans la bdd.

    Mais est-ce une bonne solution ? J'ai l'impression que ce serait un peu "brouillon" et j'aimerais savoir si je n'est pas tout simplement fait n'importe quoi au niveau de l'imbrication de mes formulaires ?

    Merci d'avance aux personnes qui vont prendre le temps de me lire et me répondre en espérant avoir été assez clair.

    PS : j'ai mis en pièce joint un aperçu de ma page enquête (la mise en page n'est pas encore finis mais c'est pour vous donner un aperçus).
    Images attachées Images attachées  

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Par défaut
    J'ai finalement pu résoudre mon problème tout seul.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] insertion bdd sans formulaire?
    Par ifiii dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 16/01/2011, 17h23
  2. formulaire + insertion BDD + envoie information autre page
    Par james23 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 02/08/2010, 18h38
  3. Réponses: 8
    Dernier message: 26/05/2009, 12h18
  4. [MySQL] insertion données dans BDD via formulaire
    Par stefanelle dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 23/02/2009, 10h51
  5. [MySQL] Formulaire PHP avec insertion BDD & Session
    Par DjChat dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 23/05/2008, 13h36

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