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

Laravel PHP Discussion :

Insertion simultanée dans deux tables


Sujet :

Laravel PHP

  1. #1
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut Insertion simultanée dans deux tables
    Bonsoir! J'ai un formulaire sur lequel j'ai des données qui doivent être insérer dans deux tables différentes à savoir la table calendrier et la table demande. Mais le soucis est que quand je soumet le formulaire je n'ai aucun retour même un dd ne marche pas.
    Voici le code de mon formulaire:
    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
    <form action="{{route('demande.store')}}" method="POST">
                @csrf
                <fieldset>
                <h2><legend>Confirmation de la demande de crédit</legend></h2>
                <br>
                <div class="form-group">
                  <label for="idTypeCredit">Vous avez choisi : </label>
                  <select name="idTypeCredit" class="form-control" id="idTypeCredit" readonly="true">
                    <option value="{{ $credit->id }}">{{ $credit->libelle }}</option>
                  </select>
                </div>  
     
                <div class="form-group">
                  <label for="montant">Montant</label>
                  <input name="montant" type="text" class="form-control" id="montant" readonly="true" value="{{ $montant }}">
                </div>  
                <div class="form-group">
                  <input type="hidden" class="form-control" name="id_client" value="{{ $id_client }}">
                  <input type="hidden" class="form-control" name="dateCredit" value="{{ $today }}">
                </div>
     
                <div class="form-group">
                  <label for="objetFinancement">Objet de financement</label>
                  <select id="objetFinancement" name="objetFinancement" class="form-control" readonly="true">
                    <option value="{{ $objetFinancement }}">{{ $objetFinancement }}</option>
                  </select>
                </div>
     
                <div class="form-group">
                  <label for="argumentation"> Votre Argumentation</label>
                  <textarea class="form-control" id="argumentation" name="argumentation" rows="3" readonly="true">{{ $argumentaire }}</textarea>
                </div>
                <div class="form-group">
                  <button type="submit" class="btn btn-success">Confirmer</button>
                  <button type="reset" class="btn btn-warnind">Annuler</button>
                </div>
              </fieldset>
            </form>
    le code de mon controller :
    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
    public function store(Request $request)
    	{
    		$this->validate($request,[
    			'id_client' => 'required',
    			'dateCredit' => 'required',
    			'idTypeCredit' => 'required',
    			'montantCredit' => 'required',
    			'objetFinancement' => 'required',
    			'argumentation' => 'required'
     
    		]);
     
    		$calendrier = new App\Calendrier;
    		$calendrier->dateCredit = $request->dateCredit;
    		$calendrier->save();
    		//dd($calendrier);
     
    		$demande = new App\Demande;
    		$demande->id_client = $request->id_client;
    		$demande->id_typeCredits = $request->idTypeCredit;
    		$demande->id_date =  $calendrier->id;
    		$demande->montantCredit = $request->montant;
    		$demande->objetFinancement = $request->objetFinancement;
    		$demande->argumentation = $request->argumentation;
    		//dd($demande);
    		$demande->save();
     
    		//dd($demande);
     
    		return "C'est bien enregistrer";
    	}
    et voici le code de ma route:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Route::post('confirm','DemandeController@store')->name('demande.store');
    .

    Une aide ne serait pas du tout de refus. Merci d'avance

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour, d'où viennent toutes vos variables de votre formulaire ?

  3. #3
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut
    Bonjour, mes variables proviennent de mon controleur.
    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
    public function confirm(Request $request)
    	{
    		$id_client=Auth::user()->id_client;
     
            $clients = Clients::Where('id', $id_client)->first();
     
            $compte = Compte::Where('id_client', $id_client)->first();
     
            $agence = Agence::Where('id', $clients->id_agence)->first();
     
    		$credit = TypeCredit::Where('id', $request->idTypeCredit)->first();
     
    		$Interet = ($request->montant * $credit->tauxInteret)/100;
     
    		$caution = ($request->montant * $credit->tauxCaution)/100;
     
    		$commission = ($request->montant * $credit->tauxComission)/100;
     
    		$today = date("d/m/Y");
     
    		$duree=$credit->dureeMaxRembours;
     
    		$montant = $request->montant;
     
    		$argumentaire = $request->argumentation;
     
    		$objetFinancement = $request->objetFinancement;
     
    		//dd($montant);
    		if ($montant< $credit->montantMin) {
     
    			return redirect()
    					->back()
    					->withInput()
    					->with('error','Montant trop inférieur');
    		}
    		elseif ($montant > $credit->montantMax) {
     
    			return redirect()
    					->back()
    					->withInput()
    					->with('error','Montant trop supérieur');
     
    		}
     
    		else{
     
    			return view('confirm', compact('clients','compte','agence', 'credit', 'Interet', 'caution', 'commission', 'montant', 'argumentaire','objetFinancement','today','duree', 'id_client'));
    		}
     
    	}

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bon alors commençons par le début, vérifions que vous rentrez dans la bonne méthode:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    public function store(Request $request)
    {
     
    dd('je suis ici');
     
    .......
     
     
    }

  5. #5
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut
    le dd('je suis ici') marche parfaitement.
    Nom : dd124.png
Affichages : 1541
Taille : 1 002 octets

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Ok, on va un peu modifier votre validation et voir si ça passe.

    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
     
     
    public function store(Request $request)
    	{
    		$request->validate([
    			'id_client' => 'required',
    			'dateCredit' => 'required',
    			'idTypeCredit' => 'required',
    			'montantCredit' => 'required',
    			'objetFinancement' => 'required',
    			'argumentation' => 'required'
     
    		]);
    dd('je suis ici')
    }

  7. #7
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut
    après modification le dd('je suis ici') ne marche pas. Quand je valide le formulaire rien ne s'affiche.

  8. #8
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Ok, cela veux donc dire que cela ne passe pas la validation.
    On va faire un dd sur request pour voir ce qui ne passe pas.

    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
     
     
    public function store(Request $request)
    	{
    dd($request)
    		$request->validate([
    			'id_client' => 'required',
    			'dateCredit' => 'required',
    			'idTypeCredit' => 'required',
    			'montantCredit' => 'required',
    			'objetFinancement' => 'required',
    			'argumentation' => 'required'
     
    		]);
    dd('je suis ici')
    }

  9. #9
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut
    Je viens de répérer l'erreur et le dd('je suis ici') passe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public function store(Request $request)
    	{
     
    		$request->validate([
    			'id_client' => 'required',
    			'dateCredit' => 'required',
    			'idTypeCredit' => 'required',
    			'montant' => 'required',
    			'objetFinancement' => 'required',
    			'argumentation' => 'required'
     
    		]);
              }
    j'avais mis montantCredit au lieu de montant.

    Maintenant que le dd() marche, j'ai un autre problème après ma validation
    Nom : foreign.png
Affichages : 1584
Taille : 108,2 Ko

  10. #10
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut
    Voici mes migrations.
    Migrations de la table calendrier
    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
     
    class CreateCalendrierTable extends Migration
    {
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('calendrier', function (Blueprint $table) {
     
                $table->date('dateCredit');
                $table->primary('dateCredit');
                $table->timestamps();
            });
        }
    Migration de la table demande
    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
    public function up()
        {
            Schema::create('demandes', function (Blueprint $table) {
                $table->bigIncrements('id');
     
                $table->unsignedBigInteger('id_client');
                $table->foreign('id_client')
                ->references('id')
                ->on('clients')
                ->onDelete('cascade')
                ->onUpdate('cascade');
     
                $table->unsignedBigInteger('id_typeCredits');
                $table->foreign('id_typeCredits')
                ->references('id')
                ->on('type_credits')
                ->onDelete('cascade')
                ->onUpdate('cascade');
     
                $table->date('dateCredit');
                $table->foreign('dateCredit')
                    ->references('dateCredit')
                    ->on('calendrier')
                    ->onDelete('cascade')
                    ->onUpdate('cascade');
     
                $table->string('montantCredit');
                $table->string('objetFinancement');
                $table->text('argumentation');
     
                $table->timestamps();
            });

  11. #11
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    C'est un autre souci, cela dit que vous avez un problème d'intégrité dans vos base de données.
    Typiquement le type de crédit n'as pas l'air d'exister et du coup on vous dit que c'est pas possible.

    Faite un dd de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    dd($request->idTypeCredit)
    et comparer la résultat avec la table Type_Credit pour voir si cela existe.

  12. #12
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut
    Le dd sur l'id du type credit a marché.
    Voilà ce que ça m'a renvoyé:
    Nom : ddd.png
Affichages : 1508
Taille : 471 octets

    S'il vous plait jeter un oeil sur la migration de la table calendrier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public function up()
        {
            Schema::create('calendrier', function (Blueprint $table) {
     
                $table->date('dateCredit');
                $table->primary('dateCredit');
                $table->timestamps();
            });
        }
    J'ai des doutes là-dessus. Merci

  13. #13
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Effectivement votre table est incohérente

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    public function up()
        {
            Schema::create('calendrier', function (Blueprint $table) {
                $table->bigIncrements('id'); 
                $table->date('dateCredit');
                $table->timestamps();
            });
        }

  14. #14
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut
    Merci, mais j'aimerais envoyer le champ dateCredit comme clé étrangère dans la table demande. Comment puis-je faire cela?

  15. #15
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    ben je dirais ... on peux pas, car une date ne peux pas être unique et une clé pimaire doit-etre unique
    Sinon, si la cohérence n'est pas un souci pour vous, alors la foreignkey de la table demande doit-être de type date

    un truc du genre, mais cela me semble farfelu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    $table->date('id_typeCredits');
                $table->foreign('id_typeCredits')
                ->references('dateCredit')
                ->on('type_credits')
                ->onDelete('cascade')
                ->onUpdate('cascade');

  16. #16
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut
    je n'ai pas bien compris votre 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
    public function up()
        {
            Schema::create('demandes', function (Blueprint $table) {
                $table->bigIncrements('id');
     
                $table->unsignedBigInteger('id_client');
                $table->foreign('id_client')
                ->references('id')
                ->on('clients')
                ->onDelete('cascade')
                ->onUpdate('cascade');
     
                $table->unsignedBigInteger('id_typeCredits');
                $table->foreign('id_typeCredits')
                ->references('id')
                ->on('type_credits')
                ->onDelete('cascade')
                ->onUpdate('cascade');
     
                $table->date('dateCredit');
                $table->foreign('dateCredit')
                    ->references('dateCredit')
                    ->on('calendrier')
                    ->onDelete('cascade')
                    ->onUpdate('cascade');
     
                $table->string('montantCredit');
                $table->string('objetFinancement');
                $table->text('argumentation');
     
                $table->timestamps();
            });
        }
    La table demande est le resultat de trois tables dont client, calendrier et typeCredit. ma migration n'est pas dans la logique?

  17. #17
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Excusez moi, je me suis trompé.
    Votre code est correcte.

    par contre, mettre un date en imary key, cela signifie que vous ne pouvez faire qu'un seul crédit par jour, puisque une date doit-être unique.
    Je le mettrais plutôt en timestamp pour avoir les secondes ce qui permettras 84600 crédits par jours.

  18. #18
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Togo

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut
    D'accord. Merci beaucoup pour votre aide et pour votre patience.

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

Discussions similaires

  1. insert into dans deux tables
    Par kaounouh dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/03/2016, 17h00
  2. question:insertion simultanée dans deux tables
    Par cyborgtun dans le forum Développement
    Réponses: 5
    Dernier message: 08/08/2011, 10h48
  3. [MySQL] Mise à jour simultanée dans deux tables
    Par IGalaxy dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/04/2009, 20h26
  4. Insertion SQL dans deux tables
    Par Pwouaro dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/06/2008, 15h38
  5. Insertion croisée dans deux tables mysql
    Par tiger33 dans le forum Requêtes
    Réponses: 6
    Dernier message: 19/09/2006, 08h55

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