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

Zend Framework PHP Discussion :

Zend_form envoie vers plusieurs BDD


Sujet :

Zend Framework PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 19
    Par défaut Zend_form envoie vers plusieurs BDD
    Bonjour a tous,

    Voici mon problème j'ai créer un formulaire d'inscription le seule problème c'est que les infos contenue dans le formulaire part vers plusieurs table différentes de la BDD. On m'a parler de SubForm mais je ne sais pas tu tout comment sa marche et la doc n'ai pas clair sur son utilisation et surtout si c'est adapter mon probleme.

    Merci a tous pour l'aide.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Par défaut
    Bonjour,

    Ce n'est pas ton formulaire qui doit renseigner ta BDD, mais ton controller qui doit s'occuper de cela.
    Au niveau de ton controller, les étapes à suivre :
    - Mon formulaire est posté
    - Je valide mon formulaire
    - Début de la transaction ($db->beginTransaction()
    - insertion datas dans table1
    - insertion datas dans table2, etc
    - fin de la transaction

    Tu peux également utiliser une procédure stockée pour soulager la base.

    Concernant subForm, la mise en place n'est pas trop compliqué mais j'ai rencontré des difficultés pour récupérer les données des sous formulaires et de plus dans ton cas ce n'est pas la solution.

  3. #3
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Si j'ai bien compris. dans l'action ou tu submit ton formulaire tu dois filtrer les donné et inserer dans chaque table les données nécessaire.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 118
    Par défaut
    Oui un truc comme çà
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <?php
     /**
         * Ajouter 
         */
    	public function ajouterAction () {
    		
    		// Appel de mon formulaire
    		$Form = new my_Form();
    		// Modification du formulaire
    		$Form->submit->setLabel('Ajouter');
    		
    		// Si mon formulaire est posté
    		if ($this->_request->isPost()) 
    		{
                // Récupération des informations saisies dans le formulaire
    			$formData = $this->_request->getPost();
                // je valide mes data J'utilise Zend_Filter_input
                $formValid = new My_Filter_Input ($formData);
                // Si validation du formulaire 
                if ($formValid->isValid()) {
    	        	// Début de la transaction
    				$this->_db->beginTransaction();
    				try { // Essai d'execution des requêtes
    				    // Tableau des données
                        $data1 = array (   'nom'  => $formValid->getUnescaped('nom')
                                       );
                        $data2 = array (   'profession'  => $formValid->getUnescaped('profession')
                                       );
    
    					// Insertion dans la base		
                        $this->_Table1->insertData($data1);  		
                        $this->_Table2->insertData($data2);  		
    				    // Validation de la transaction
                        $this->_db->commit();
                      	// je reviens sur ma liste
    					$this->_redirect('/lister');    	 	
    				} catch  (Exception $e) {
    			         $this->_db->rollBack();   
    				     $message = My_Exception::log ($e, 'sqllog' , __FILE__ , __CLASS__ , __FUNCTION__ , __LINE__ );
         		    	 // Popup dialog jquery UI
    					 $this->_helper->Dialog($message);
    				} // Eof :: Fin de la transaction                
                    
                } // Eof :: Si Formulaire Valide
    
                // Si le formulaire n'est pas valide
                    // repeuple le formulaire
    				$Form->populate ($formData);
    				// Popup dialog jquery UI
    				$this->_helper->Dialog($formValid->getMessagestoString());
                		    
            } // Eof::  Formulaire posté  
    		
    		// Assignation de mes différents éléments à ma vue
    		$this->view->form = $Form;
    		
    		// Appel automatique de ma vue views/scripts/xxxx/ajouter.phtml
    		
    	}//Eof::ajouterAction
    ?>
    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
     
    <?php
    /**
     * Extension de Zend_Filter_Input
     */
    ?>
    <?php 
    class Zf_Filter_Input extends Zend_Filter_Input {
     
     
    	public function __construct($filters, $validators, $data, $options) {
     
    		// Appel du contructeur parent avec les paramètres définit ici
    		// $data -> données brutes à filtrer
    		parent::__construct($filters, $validators, $data, $options);
     
    	} //Eof:: __construct
     
     
     
    	/**
    	 * retourne sous forme de chaine de caratère
    	 * le tableau PHP retourner par getMessages
    	 */
    	public function getMessagestoString() {
     
    		$messages = parent::getMessages();
    		$strRules = "";
    		Foreach ($messages as $keyRule => $tabError)
    		{
    			Foreach ($tabError as $keyError => $rule)
    			{
    				$tabRules = array ($keyRule => $rule);
    				$strRules .= $rule."<br />";
    			}
    		}
     
    		return $strRules;
     
    	}//Eof:: getMessagestoString
     
    }//Eof:: Zf_Filter_Input

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 19
    Par défaut
    ok je vais essayer sa merci pour vos reponses

Discussions similaires

  1. [AC-2003] Envoi email sous access vers plusieurs destinataires
    Par sebflex dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/11/2009, 18h44
  2. Réponses: 10
    Dernier message: 12/06/2006, 16h45
  3. Réponses: 5
    Dernier message: 05/03/2006, 13h21
  4. L'envoi d'un sms depuis un téléphone portable vers une BDD
    Par mayna dans le forum Développement
    Réponses: 2
    Dernier message: 10/02/2006, 20h51
  5. [Mapping]relation plusieurs-vers-plusieurs
    Par berret dans le forum Hibernate
    Réponses: 2
    Dernier message: 21/01/2005, 18h44

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