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 Tableau d'objet dans bdd


Sujet :

Laravel PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut Insertion Tableau d'objet dans bdd
    Bonjour,
    J'ai un léger soucis dans l'insertion de ce tableau dans ma bdd
    Code JS
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    let dataP =
       [
        {
            fk_id_quest:1,
            fk_id_post:id,
            reponse : $("#descriptif_offre").val(),
            created_at:date.getTime()/1000,
        },
        {
            fk_id_quest:2,
            fk_id_post:id,
            reponse : $("#xp_annee_dep_num").val(),
            created_at:date.getTime()/1000,
        }];

    Je passe par une requête ajax mais le problème vient du php
    Requête:
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $.ajax({
        url: "/register/addpostulantR",
        method: "POST",
        dataType: "text",
        data: JSON.stringify(dataP),
        success: (data) => {
            console.log("success :\n", data);
        },
        error: (xhr, erreur) => {
            console.log("error %s:\n", erreur, xhr.responseText);
        }
    })

    Mon controller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public function addPostulantR(Request $request){
            return response()->json([
                'dataP' => Intervenant::addPostulantR($request->all())
            ]);
        }
    Mon model

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        public static function addPostulantR($data){
            //dd($data);
            return DB::table('reponse')
                ->insertGetId($data);
        }
    Je pense savoir d'ou vient le problème mais j'ai beau chercher et bidouiller je n'y arrive pas.., un petit coup de pouce serait le bienvenu, je ne veux pas la solution, j'aimerais comprendre.
    Si j'envoie un simple objet pas de soucis, ça l'enregistre bien dans ma bdd, mais lorsque je veux envoyer un tableau d'objet ça fail..
    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    il faut mettre un foreach() quelque part.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Merci de ta réponse,
    le foreach, dans le controller, j'avais déjà essayé mais je dois mal m'y prendre.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Pourrais tu me donner un peu plus de détails s'il te plait?
    J'ai l'impression qu'au plus j'avance au moins j'y vois clair.., 2 jours que je bloque sur ça.., j'ai l'impression d'être un gros débilos.
    J'ai fais ça mais c'est du grand n'importe quoi, je me mélange plus les pinceaux qu'autre chose..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        public function addPostulantR(Request $request){
            $dataset = $request->all();
            $aAa = array();
            foreach ($dataset as $key){
                $aAa[]['fk_id_quest'] = $key->fk_id_quest;
                $aAa[]['fk_id_post'] = $key->fk_id_post;
                $aAa[]['reponse'] = $key->reponse;
                $aAa[]['created_at'] = $key->created_at;
            }
            return Intervenant::addPostulantR($request->all());
     
        }

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    J'ai aussi testé ça mais pareil.., du grand n'importe quoi..j'ai besoin d'une pause, je bloque sur un truc de *****.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        public function addPostulantR(Request $request){
        $dataset = $request->all();
            foreach($dataset as $key => $value) {
                print "$key => $value\n";
            }
     
    }

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Avec ce code ça ne fonctionne pas.., une petite aide? en method get j'arrive tres bien à récup du json, mais là je seche..la réponse doit être toute bête, mais j'y arrive 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
    17
     
        public function addPostulantR(Request $request){
     
            $lstdataP = json_decode($request->all());
            $postulants = [];
            $nb = 0;
     
                foreach($lstdataP as $post){
                    $postulants[$nb]['fk_id_quest'] = $post->fk_id_quest;
                    $postulants[$nb]['fk_id_post'] = $post->fk_id_post;
                    $postulants[$nb]['reponse'] = $post->reponse;
                    $postulants[$nb]['created_at'] = date("Y-m-d\TH:i:s",$post->created_at);
                    $nb++;
                }
     
            return response()->json(["dataP"=>Intervenant::addPostulantR($postulants)]);
    }

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Essaie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	public static function addPostulantR($data_json)
    	{
    		$data_array = json_decode( $datas_json );
    		$id = 0;
    		foreach($data_array as $data)
    		{
    			$id = DB::table('reponse')->insertGetId($data);
    		}
    		return $id;
    	}
    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public static function addPostulantR($data_array)
    	{
    		$id = 0;
    		foreach($data_array as $data)
    		{
    			$id = DB::table('reponse')->insertGetId($data);
    		}
    		return $id;
    	}

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Bonjour,
    Aucune des deux fonctions n'envoient les données..

    'Too few arguments to function App\Http\Controllers\intervenantController::addPostulantR(), 0 passed and exactly 1 expected'
    Merci du retour en tout cas..

    Controller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        public static function addPostulantR(Request $request)
        {
            return response()->json([
                'dataP' => Intervenant::addPostulantR($request->all())
            ]);
        }
    Model #1:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        public static function addPostulantR($data){
            $test = json_decode($data);
            $id = 0;
            foreach($test as $dataP)
            {
                $id = DB::table('reponse')->insertGetId($dataP);
            }
            return $id;
        }
    Me retourne : json_decode() expects parameter 1 to be string, array given

    Model #2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        public static function addPostulantR($data){
            $id = 0;
            foreach($data as $dataP)
            {
                $id = DB::table('reponse')->insertGetId($dataP);
            }
            return $id;
        }
    Ne me retourne aucune erreur mais un var_dump($id) me renvoie NULL.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Une idée? Je m'y prends mal? La seule solution que je vois c'est créer autant d'objet et les post soit avec un switch soit en plusieurs success.., ce qui en soit est assez ridicule et pas du tout opti

  10. #10
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $.ajax({
    ...
        success: (data) => {
            console.log("success :\n", data);
        },
    • On ne sait pas ce que tu est censé récupérer dans le JS,
    • Et tu ne mets pas non plus de echo / var_dump dans tes fonctions pour savoir ce que contiennent les variables/arrays,
    • On ne sait pas non plus ce que font exactement les fonctions addPostulantR(), ni ce qu'elles sont censées renvoyer (return)
    • En plus, avec toi, TOUT s'appelle "data" !!

    Ça fait beaucoup d'inconnues.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Je ne veux rien récupérer, juste store mon array dataP dans la table reponse.
    Si je post un simple objet, j'y arrive sans problème mais lorsque je try avec un array d'objet ça fail.
    Dans le success de mon post, mon data est vide, et dans le var_dump($id), de mon model #2, comme mentionné ça me retourne NULL.
    lol j'ai beaucoup aimé la dernière phrase..., avec toi tout s'appelle data..

    Que ce soit ce code ou un autre, c'est la même chose, la question reste assez simple, comment store un tableau d'objets dans la bdd..

    Si je veux store un simple objet comme suit :
    Code JavaScript : 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
    let dataP
    {
       fk_id_quest:1,
       fk_id_post:id,
       reponse : $("#descriptif_offre").val(),
       created_at:date.getTime()/1000,
    };
     
    $.ajax({
        url:'/register/addpostulantR',
        method:'post',
        dataType: "text",
        data:dataP
        ,success(data){
            console.log("succ "+data);
        },error:()=>{
            console.log('error ');
        }
    })
    Controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public static function addPostulantR(Request $request)
        {
            return Intervenant::addPostulantR($request->all());
        }
    Model
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public static function addPostulantR($data){
            return DB::table('reponse')
                ->insertGetId($data);
        }
    Je store mon objet sans problème, la question reste simple, comment faire la même chose mais avec un tableau d'objet..

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par brd3n Voir le message
    ...lol j'ai beaucoup aimé la dernière phrase..., avec toi tout s'appelle data...
    Ben oui... ça n'aide ni à comprendre, ni à SE comprendre.

    Tu auras remarqué que moi, j'ai utilisé $data_json, $data_array et $data : c'est déjà plus EXPLICITE, et donc plus facile à COMPRENDRE, et à DEBOGUER

    Citation Envoyé par brd3n Voir le message
    ...Je ne veux rien récupérer...
    Alors à quoi servent les return dans les fonctions ?

    BREF.
    • Reprends depuis le début : le code qui fonctionne, avec UN SEUL "data" (!)
    • Il me semble que c'est NoSmoking qui t'a fait remarqué qu'avec PLUSIEURS "data", la syntaxe est DIFFÉRENTE.
    • DONC : il faut ADAPTER le code (JS ?? PHP ??) pour prendre en compte cette différence.

    EN CLAIR : à un moment donnée (JS ou PHP ?), il faut décomposer le "Pdata" (?) en ses différents éléments "data".

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Oui c'est bon j'ai branché mon cerveau, ça fonctionne, désolé et merci !

  14. #14
    Invité
    Invité(e)
    Par défaut
    Sérieux ?????

    Tu ne postes même pas la solution ???

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Je post ça demain désolé je devais finir une partie du code pour demain, encore merci, toi et nosmoking avait raison, je dois être plus rigoureux dans ma manière de coder, encore merci du temps que tu (vous) m'as(avez) accordé !

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2019
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2019
    Messages : 46
    Points : 37
    Points
    37
    Par défaut
    Désolé du retard, beaucoup de travail,

    JS
    Code JavaScript : 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
    let dataP =[
        {
            fk_id_quest:1,
            fk_id_post:id,
            reponse : $("#descriptif_offre").val(),
            created_at:date.getTime()/1000,
        },
        {
            fk_id_quest:2,
            fk_id_post:id,
            reponse : $("#xp_ss_traitance").val(),
            created_at:date.getTime()/1000,
        },
        {
            fk_id_quest:3,
            fk_id_post:id,
            reponse:$("#xp_annee_dep_num").val(),
            created_at:date.getTime()/1000
        }
    ];
     
    dataP.forEach(function(element){
        $.ajax({
            url:'/register/addpostulantR',
            method:'post',
            dataType: "text",
            data:element
        })
    })

    controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        public static function addPostulantR(Request $request)
        {
            return response()->json([
                'dataP' => Intervenant::addPostulantR($request->all())
            ]);
        }
    model
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        public static function addPostulantR($data){
            return DB::table('reponse')
                ->insertGetId($data);
        }

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/12/2012, 23h21
  2. delete sur un tableau d'objets dans destructeur
    Par Mihnea24 dans le forum Débuter
    Réponses: 6
    Dernier message: 05/12/2008, 22h42
  3. Stockage objets dans BDD relationnelle
    Par obalais dans le forum Persistance des données
    Réponses: 6
    Dernier message: 15/03/2007, 19h18
  4. Insertion d'un objet dans MySQL ?
    Par AsmodeeFS dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 30/07/2006, 22h24
  5. Insérer un tableau d'objet dans un Jpanel
    Par Flophx dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 25/04/2006, 20h37

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