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

PHP & Base de données Discussion :

Insérer des données dans deux tables à partir d'un formulaire en MVC


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Homme Profil pro
    progammeur
    Inscrit en
    Juin 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : progammeur
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Insérer des données dans deux tables à partir d'un formulaire en MVC
    Bonjour chers developpeur,

    je viens vers vous pour obtenir votre aide...
    je dois insérer dans deux tables differentes des données dans ma base de donnees.
    j'utilise le modele mvc ...

    j'ai crée trois dossiers : controlleur, requete et template

    le formulaire se trouve dans le template
    les requetes sont saisie le dossier requetes
    le controleur executes les requetes


    pour revenir a mon sujet :
    1.dans le template jai creer mon formulaite je l'ai renommer boncommande.php le voici:

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    <?php
    session_start();
    require 'header.php'; 
    ?>          
    <div id="site_content"> 
     
          <?php require 'left.php';?>
      <div class="content">
        <h1>Bon de Commande d'un Client</h1>
          <div class="content_item"> 
     
    <form class="form-horizontal" method="POST" action="../controleur/controleurBonCommande.php">
     
    <fieldset>
     
    <!-- Premiere etape de l'enregistrement -->
    <div class="form-group">
      <label class="col-md-4 control-label" for="datecommande">Date Commande</label><div class="col-md-4">
      <input id="datecommande" name="datecommande" type="date" placeholder="Date de la Commande" class="form-control input-md" required="">
      </div>
    </div>
     
     
    <div class="form-group">
      <label class="col-md-4 control-label" for="lieulivraison">Lieu de Livraison</label>  
      <div class="col-md-4">
      <input id="lieulivraison" name="lieulivraison" type="text" placeholder="Lieu de Livraison de la Commande" class="form-control input-md" required="">
      </div>
    </div>
    <!-- Fin Premiere etape de l'enregistrement -->
     
     
     
    <!-- Deuxieme etape de l'enregistrement -->
     
    <div class="form-group">
      <label class="col-md-4 control-label" for="designation">Designation du Produit</label>  
      <div class="col-md-4">
      <input id="designation" name="designation" type="text" placeholder="Designation du produit" class="form-control input-md" required="">
      </div>
    </div>
     
     
    <div class="form-group">
      <label class="col-md-4 control-label" for="prixunitaire">Prix Unitaire</label>  
      <div class="col-md-4">
      <input id="prixunitaire" name="prixunitaire" type="text" placeholder="Prix Unitaire du produit" class="form-control input-md" required="">
      </div>
    </div>
     
     
    <div class="form-group">
      <label class="col-md-4 control-label" for="quantite">Quantite</label>  
      <div class="col-md-4">
      <input id="quantite" name="quantite" type="text" placeholder="Quantite du produit livré" class="form-control input-md" value="" onClick="afficheCout();">
      </div>
    </div>
     
     
     
     
    <div class="form-group">
      <label class="col-md-4 control-label" for="prixfournisseur">Prix Unitaire du Fournisseur</label>  
      <div class="col-md-4">
      <input id="prixfournisseur" name="prixfournisseur" type="text" placeholder="prix fournisseur" class="form-control input-md" required="">
      </div>
    </div>
     
    <!--Fin Deuxieme etape de l'enregistrement -->
     
     
    <!--Troisieme etape de l'enregistrement -->
     
    <!-- Text input-->
    <div class="form-group">
    <label class="col-md-4 control-label" for="modepaiement">Mode de Paiement</label>
          <input type="radio" name="modepaiement" value="Cash" onClick="afficheCash();">Paiement Cash
          <input type="radio" name="modepaiement" value="Credit" onClick="afficheCredit();">Paiement Credit
    </div>
     
    <!-- Text input-->
    <div class="form-group" id="afficheversement">
    <label class="col-md-4 control-label" for="modeversement">Modalite de Versement</label>
    <div class="col-md-4">
       <select class="col-md-4 control-label" name="modeversement"  id="modeversement"  style="width:215px;">
          <option name="choix">Votre Choix</option>
          <option name="premier">Premier versement</option>
          <option name="deuxieme">Deuxieme versement</option>
          <option name="troisieme">Troisieme versement</option>
       </select>
    </div>
    </div>
     
    <!-- Text input-->
    <div class="form-group" id="affichemontantverse">
      <label class="col-md-4 control-label" for="montantverse">Montant Verse</label>  
      <div class="col-md-4">
      <input id="montantverse" name="montantverse" type="text" placeholder="Montant verse" class="form-control input-md" required="">
      </div>
    </div>
     
    <!-- Text input-->
    <div class="form-group" id="affichedateprochain">
      <label class="col-md-4 control-label" for="dateversement">Date Prochain Versement</label>  
      <div class="col-md-4">
      <input id="dateversement" name="dateversement" type="date" placeholder="ex:2016-06-15" class="form-control input-md" required=""> 
      </div>
    </div>
     
    <!-- Fin Troisieme etape de l'enregistrement -->
     
    <!-- Button (Double) -->
    <div class="form-group">
      <label class="col-md-4 control-label" for="button1id"></label>
      <div class="col-md-8">
        <button type="submit" id="button1id" name="Valider" class="btn btn-success">Enregistrer</button>
        <button type="reset" id="button2id" name="Annuler" class="btn btn-info">Annuler</button>
      </div>
    </div>
     
    <!-- Fin Button (Double) -->
     
    </fieldset>
     
    <!-- Debut Javascript -->
    <script type="text/javascript">
              document.getElementById("afficheversement").style.display="none";
              document.getElementById("affichemontantverse").style.display="none";
              document.getElementById("affichedateprochain").style.display="none";
     
     
              function afficheCash(){
              document.getElementById("afficheversement").style.display="none";
              document.getElementById("affichemontantverse").style.display="block";
              document.getElementById("affichedateprochain").style.display="none";
                          }
     
              function afficheCredit(){
              document.getElementById("afficheversement").style.display="block";
              document.getElementById("affichemontantverse").style.display="block";
              document.getElementById("affichedateprochain").style.display="block";
                        }
     
     
    </script>
    <!-- Fin Javascript -->
     
     
      </form>
    </div>
     
    </div>
    </div>
     
    <!-- fin du formulaire d'enregistrement du bon de la commande -->
    <?php
    require 'footer.php'; 
    ?>

    2.jai creer deux requetes dans le dossier requetes : rq_commandecash.php et rq_comandecredit.php les voici


    voici le premier
    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
    62
    63
    64
    65
    66
    <?php
     
    // creation d'une commande a credit
    function createBonCommandeCredit($pdo,$codecmde,$datecommande, $lieulivraison, $designation, $prixunitaire, $quantite, $totalclient, $prixfournisseur, $totalfournisseur, $modepaiement, $montantverse, $modaliteversement, $dateversement)
    {
      $req=$pdo->prepare("INSERT INTO boncommandecash(boncommandecash.codecmde, boncommandecash.datecommande, boncommandecash.lieulivraison, boncommandecash.designation, boncommandecash.prixunitaire, boncommandecash.quantite, boncommandecash.totalclient, boncommandecash.prixfournisseur, boncommandecash.totalfournisseur, boncommandecash.modepaiement, boncommandecash.montantverse, boncommandecredit.modaliteversement, boncommandecredit.dateversement)
    
       VALUES(:codecmde,:datecommande, :lieulivraison, :designation, :prixunitaire, :quantite, :totalclient, :prixfournisseur, :totalfournisseur, :modepaiement, :montantverse, :modaliteversement, dateversement)");
     
       $req->execute(array(  
      ':codecmde'=>$codecmde, 
      ':datecommande'=>$datecommande,
      ':lieulivraison'=>$lieulivraison,
      ':designation'=>$designation,
      ':prixunitaire'=>$prixunitaire,
      ':quantite'=>$quantite,
      ':totalclient'=>$totalclient,
      ':prixfournisseur'=>$prixfournisseur,
      ':totalfournisseur'=>$totalfournisseur,
      ':modepaiement'=>$modepaiement,
      ':montantverse'=>$montantverse,
      ':modaliteversement'=>$modaliteversement,
      ':dateversement'=>$dateversement       
                     ));
      return true;
    }
     
    //fonction pour recuperer le dernier indice des commande enregistrées dans la base de données 
    function ReturnMaxIdd($pdo)
    {
      $req=$pdo->query("SELECT MAX(id_credit) as maxId FROM commandecredit");
      while ($commandecredit=$req->fetch())
      {
        $maxId=$commandecredit['maxId'];    
      }
      $req->closeCursor();  
      return $maxId ;  
    }
     
     
    function RecupCmdeCredit($pdo,$codecmde)
       {     
      $sql = $pdo->prepare("SELECT codecmde FROM commandecash WHERE codecmde = :codecmde");
        $sql->execute(array(':codecmde' =>$codecmde));     
        $res = $sql->fetchAll();    
         return $res;  
       }
     
       //liste des boncommande credit
    function listeCommandeCredit($pdo){
          $req = $pdo->query("SELECT * FROM boncommandecredit");
          $listeboncommandecredit=$req->fetchAll();
          return $listeboncommandecredit;
         }
     
     
       /*function NouvelleCommande($pdo,$lieu)
       {     
      $sql = $pdo->prepare("SELECT lieu FROM commande WHERE lieu = :lieu");
        $sql->execute(array(':lieu' =>$lieu));     
        $res = $sql->fetchAll();    
         return $res;  
       }*/
     
     
    ?>
    voici le dernier:

    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
    62
    63
    64
    <?php
     
    // creation d'une commande cash
    function createBonCommandeCash($pdo,$codecmde,$datecommande, $lieulivraison, $designation, $prixunitaire, $quantite, $totalclient, $prixfournisseur, $totalfournisseur, $modepaiement, $montantverse)
    {
    	$req=$pdo->prepare("INSERT INTO boncommandecash(boncommandecash.codecmde, boncommandecash.datecommande, boncommandecash.lieulivraison, boncommandecash.designation, boncommandecash.prixunitaire, boncommandecash.quantite, boncommandecash.totalclient, boncommandecash.prixfournisseur, boncommandecash.totalfournisseur, boncommandecash.modepaiement, boncommandecash.montantverse)
    	 VALUES(:codecmde,:datecommande, :lieulivraison, :designation, :prixunitaire, :quantite, :totalclient, :prixfournisseur, :totalfournisseur, :modepaiement, :montantverse)");
     
    	 $req->execute(array( 
    	':codecmde'=>$codecmde,	
      ':datecommande'=>$datecommande,
      ':lieulivraison'=>$lieulivraison,
      ':designation'=>$designation,
    	':prixunitaire'=>$prixunitaire,
      ':quantite'=>$quantite,
      ':totalclient'=>$totalclient,
      ':prixfournisseur'=>$prixfournisseur,
      ':totalfournisseur'=>$totalfournisseur,
      ':modepaiement'=>$modepaiement,
      ':montantverse'=>$montantverse       
                     ));
    	 return true;
    }
     
     
    //liste des boncommandecashd 
    function listeCommandeCash($pdo){
         	$req = $pdo->query("SELECT * FROM boncommandecash");
         	$listeboncommandecash=$req->fetchAll();
         	return $listeboncommandecash;
         }
     
     
    //fonction pour recuperer le dernier indice des commande enregistrées dans la base de données 
    function ReturnMaxId($pdo)
    {
      $req=$pdo->query("SELECT MAX(id_cash)  as maxId FROM commandecash");
      while ($commandecash=$req->fetch())
      {
        $maxId=$commandecash['maxId'];    
      }
      $req->closeCursor();  
      return $maxId ;  
    }
     
    function RecupCmdeCash($pdo,$codecmde)
       {     
      $sql = $pdo->prepare("SELECT codecmde FROM commandecash WHERE codecmde = :codecmde");
        $sql->execute(array(':codecmde' =>$codecmde));     
        $res = $sql->fetchAll();    
         return $res;  
       }
     
     
       /*function NouvelleCommande($pdo,$lieu)
       {     
      $sql = $pdo->prepare("SELECT lieu FROM commande WHERE lieu = :lieu");
        $sql->execute(array(':lieu' =>$lieu));     
        $res = $sql->fetchAll();    
         return $res;  
       }*/
     
     
    ?>

    3.dans mon dossier controleur jai creer un fichier controleur(controleurboncommmande.php) ou jappelle mes deux requetes et ma donnees de donnees
    le voici :


    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    <?php
    	/**
    	* 
    	*/
    	/**
    	* register
    	*/
    		session_start();
    		//print_r($_REQUEST);
    		// on appelle la connexion a la base de données
    		require_once('../config/db.inc.php');
    		require_once('../requete/rq_commandecash.php');
                    require_once('../requete/rq_commandecredit.php');
     
     
    	 if(isset($_POST['Valider']) && isset($_POST['modepaiement']) && isset($_POST['codecmde']) && isset($_POST['datecommande']) && isset($_POST['lieulivraison']) && isset($_POST['designation']) && isset($_POST['prixunitaire']) && isset($_POST['quantite']) && isset($_POST['totalclient']) && isset($_POST['prixfournisseur']) && isset($_POST['totalfournisseur']) && isset($_POST['modepaiement']) && isset($_POST['montantverse']))
    	{
     
     
    		//on initialise la variable commande à recuperer
    		$char='CMDE';
    		//On assigne les valeurs du  champ aux variables
    		$codecmde = strtoupper($_POST['codecmde']);
    		$datecommande = strtoupper($_POST['datecommande']);
    		$dateCmde = strtoupper($_POST['dateCmde']);	
    		$lieulivraison = strtoupper($_POST['lieulivraison']);
    		$designation = strtoupper($_POST['designation']);
    		$prixunitaire = (int)($_POST['prixunitaire']);
    		$quantite = (int)($_POST['quantite']);
    		$totalclient = (int)($_POST['prixunitaire'])*(int)$_POST['quantite'];
    		$prixfournisseur = (int)($_POST['prixfournisseur']);
    		$totalfournisseur = (int)($_POST['prixfournisseur'])*(int)$_POST['quantite'];
    		$modepaiement = strtoupper($_POST['modepaiement']);
    		$montantverse = (int)($_POST['montantverse']);
     
     
     
    		// recuperation du numero de commande
    		$maxId=ReturnMaxId($pdo);
    		$maxId++;
    		$codecmde=strtoupper($_POST['datecommande']).".".$char.".".$maxId;
     
    	if(createBonCommandeCash($pdo,$codecmde,$datecommande, $lieulivraison, $designation, $prixunitaire, $quantite, $totalclient, $prixfournisseur, $totalfournisseur, $modepaiement, $montantverse))
    		{	
    			$_SESSION['msgFlash'] = 'Vous avez été enregistré';			
    			$_SESSION['msgStatut'] = 4;			
    			$boncommandecash=RecupCmdeCash($pdo,$codecmde);
    			$_SESSION['codecmde']=$boncommandecash[0]['codecmde'];
    			header('Location:../template/boncommande.php');
    			exit();
    		}
    		else
    		{
    			$_SESSION['msgFlash'] = 'Votre enregistrement a échoué.';
    			$_SESSION['msgStatut'] = 2;
    			header('Location: ../template/accueil.php');
    		}
    	}
     
    	elseif(isset($_POST['Valider']) && isset($_POST['modepaiement']) && isset($_POST['codecmde']) && isset($_POST['datecommande']) && isset($_POST['lieulivraison']) && isset($_POST['designation']) && isset($_POST['prixunitaire']) && isset($_POST['quantite']) && isset($_POST['totalclient']) && isset($_POST['prixfournisseur']) && isset($_POST['totalfournisseur']) && isset($_POST['modepaiement']) && isset($_POST['montantverse']) && isset($_POST['modaliteversement']) && isset($_POST['dateversement'])){
     
     
    		$char='CMD';
    		$codecmde = strtoupper($_POST['codecmde']);
    		$datecommande = strtoupper($_POST['datecommande']);
    		$dateCmde = strtoupper($_POST['dateCmde']);	
    		$lieulivraison = strtoupper($_POST['lieulivraison']);
    		$designation = strtoupper($_POST['designation']);
    		$prixunitaire = (int)($_POST['prixunitaire']);
    		$quantite = (int)($_POST['quantite']);
    		$totalclient = (int)($_POST['prixunitaire'])*(int)$_POST['quantite'];
    		$prixfournisseur = (int)($_POST['prixfournisseur']);
    		$totalfournisseur = (int)($_POST['prixfournisseur'])*(int)$_POST['quantite'];
    		$modepaiement = strtoupper($_POST['modepaiement']);
    		$montantverse = (int)($_POST['montantverse']);
    		$modaliteversement = strtoupper($_POST['montantverse']);
    		$dateversement = strtoupper($_POST['dateversement']);
     
     
    		// recuperation de la commande
    		$maxId=ReturnMaxIdd($pdo);
    		$maxId++;
    		$codecmde=strtoupper($_POST['datecommande']).".".$char.".".$maxId;
     
    		if(createBonCommandeCredit($pdo,$codecmde,$datecommande, $lieulivraison, $designation, $prixunitaire, $quantite, $totalclient, $prixfournisseur, $totalfournisseur, $modepaiement,$montantverse, $modaliteversement, $dateversement)){
     
     
    		    $_SESSION['msgFlash'] = 'Vous avez été enregistré';			
    			$_SESSION['msgStatut'] = 4;			
    			$boncommandecredit=RecupCmdeCredit($pdo,$codecmde);
    			$_SESSION['codecmde']=$boncommandecredit[0]['codecmde'];
    			header('Location:../template/boncommande.php');
    			exit();
    		}
    		else
    		{
    			$_SESSION['msgFlash'] = 'Votre enregistrement a échoué.';
    			$_SESSION['msgStatut'] = 2;
    			header('Location: ../template/accueil.php');
    		}
     
    	}
     
    session_destroy();
    ?>
    Mais impossible jusqu' la d'inserer des les elements poster par le formilaire dans la base de donnees.
    aucune operation ne s'execute

    jattend votre soutiens

    Bravo et Merci d' avance...

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Points : 1 385
    Points
    1 385
    Par défaut
    Merci d'avoir mis les balises CODE.
    Si vous n'avez aucun message d'erreur, c'est que les conditions de votre "if" initial ne sont pas remplies.
    Avez-vous vérifié les valeurs reçues par POST ?

    De plus, vous ne passerez jamais dans le "elseif" car les premières conditions sont exactement celles du "if".

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/10/2013, 16h45
  2. insérer des données dans deux tables liées
    Par joprog dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/12/2010, 19h24
  3. Réponses: 2
    Dernier message: 06/11/2009, 18h41
  4. Réponses: 2
    Dernier message: 15/06/2005, 18h32

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