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

jQuery Discussion :

Retourner un tableau et un objet


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut Retourner un tableau et un objet
    Bonjour,
    J'ai le code suivant :
    Code JS : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script>
        var params_envoi = {
            article_ref: [],
            article_devis  : {},
        };
        $(".article_ref").each(function() { params_envoi.article_ref.push( $(this).val()); });
        $(".article_devis").each(function() { params_envoi.article_devis.push( $(this).val()); });
     
        $("#thedevis").load("../PHP/insert/article.php", params_envoi );
        });
    </script>
    article_ref contient une liste d'élément ('[]'); article_devis ne contient qu'un seul objet ('{}').
    L'insertion de la liste fonctionne, mais pas celle de l'objet seul.
    Je pense que c'est au niveau du "each()" que ça ne va pas, mais je n'ai pas trouvé ce qui pouvait correspondre à son équivalence mais pour un seul objet.
    J'ai tenté "first()", sans succès.

    Si vous avez une idée je suis preneur

    merci

  2. #2
    Membre régulier Avatar de abdennour bouaicha
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2009
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2009
    Messages : 98
    Points : 112
    Points
    112
    Par défaut
    each est une boucle, elle parcours un ensemble de listes ou li .....
    si tu a un seul objet tu fais directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     params_envoi.article_devis.push( $(".article_devis").val());
    sans utiliser le each.

  3. #3
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Merci pour ta réponse, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TypeError: params_envoi.devis_ref.push is not a function
    Je te fournis toute la partie de mon 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
    34
    35
    36
    37
    38
     
        $('#bt_Envoi').click(function() {
        var params_envoi = {
            article_ref: [],
            article_devis  : [],
            article_designationarticle: [], 
            article_pu: [],
            article_unite: [], 
            article_quantite: [],
            article_remise: [],
            article_total: [],
            devis_ref: {},
            devis_contact: {},
            devis_fournisseur: {},
            devis_fabricant: {},
            devis_date: {},
            devis_daterelance: {}
        };
        $(".article_ref").each(function() { params_envoi.article_ref.push( $(this).val()); });
        $(".article_devis").each(function()     { params_envoi.article_devis.push( $(this).val()); });
        $(".article_designationarticle").each(function() { params_envoi.article_designationarticle.push( $(this).val()); });
        $(".article_pu").each(function()     { params_envoi.article_pu.push( $(this).val()); });
        $(".article_unite").each(function() { params_envoi.article_unite.push( $(this).val()); });
        $(".article_quantite").each(function()     { params_envoi.article_quantite.push( $(this).val()); });
        $(".article_remise").each(function() { params_envoi.article_remise.push( $(this).val()); });
        $(".article_total").each(function()     { params_envoi.article_total.push( $(this).val()); });
     
        params_envoi.devis_ref.push( $(".devis_ref").val());
        params_envoi.devis_contact.push( $(".devis_contact").val());
        params_envoi.devis_fournisseur.push( $(".devis_fournisseur").val());
        params_envoi.devis_fabricant.push( $(".devis_fabricant").val());
        params_envoi.devis_date.push( $(".devis_date").val());
        params_envoi.devis_daterelance.push( $(".devis_daterelance").val());
     
     
        $("#thedevis").load("../PHP/insert/article.php", params_envoi );
        console.log( params_envoi );  
        });
    En faite j'insers un devis. Et pour un devis, il y a plusieurs articles (avec leur prix, leur quantité, etc).
    J'ai tenté quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        (function() { params_envoi.devis_ref.push( $(".devis_ref").val()); });
    sans succès

    Merci d'avance

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 221
    Points : 15 512
    Points
    15 512
    Par défaut
    pour utiliser "push", il faut que "devis_ref" soit une liste et non un objet.
    puisque vous envoyez tout dans une requête HTTP, je pense que tous les éléments de "params_envoi" doivent être des listes.

  5. #5
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2018
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2018
    Messages : 299
    Points : 67
    Points
    67
    Par défaut
    Merci pour ta réponse,
    J'ai le résultat suivant :
    Nom : Capture d’écran de 2019-10-28 17-50-50.png
Affichages : 173
Taille : 72,9 Ko
    Avec le code suivant :
    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
     
        $('#bt_Envoi').click(function() {
        var params_envoi = {
            article_ref: [],
            article_devis  : [],
            article_designationarticle: [], 
            article_pu: [],
            article_unite: [], 
            article_quantite: [],
            article_remise: [],
            article_total: [],
            devis_ref: [],
            devis_contact: [],
            devis_fournisseur: [],
            devis_fabricant: [],
            devis_date: [],
            devis_daterelance: []
        };
        $(".article_ref").each(function() { params_envoi.article_ref.push( $(this).val()); });
        $(".article_devis").each(function()     { params_envoi.article_devis.push( $(this).val()); });
        $(".article_designationarticle").each(function() { params_envoi.article_designationarticle.push( $(this).val()); });
        $(".article_pu").each(function()     { params_envoi.article_pu.push( $(this).val()); });
        $(".article_unite").each(function() { params_envoi.article_unite.push( $(this).val()); });
        $(".article_quantite").each(function()     { params_envoi.article_quantite.push( $(this).val()); });
        $(".article_remise").each(function() { params_envoi.article_remise.push( $(this).val()); });
        $(".article_total").each(function()     { params_envoi.article_total.push( $(this).val()); });
     
        $(".devis_ref").each(function()     { params_envoi.devis_ref.push( $(this).val()); });
        $(".devis_contact").each(function() { params_envoi.devis_contact.push( $(this).val()); });
        $(".devis_fournisseur").each(function()     { params_envoi.devis_fournisseur.push( $(this).val()); });
        $(".devis_fabricant").each(function() { params_envoi.devis_fabricant.push( $(this).val()); });
        $(".devis_date").each(function()     { params_envoi.devis_date.push( $(this).val()); });
        $(".devis_daterelance").each(function()     { params_envoi.devis_daterelance.push( $(this).val()); });
     
        $("#thedevis").load("../PHP/insert/article.php", params_envoi );
        console.log( params_envoi );  
        });
    puis article.php (côté insertion en base)
    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 require_once('../../Include/connect.php') ;  
     
    if(!empty($_POST['article_ref']) && !empty($_POST['article_total']) && !empty($_POST['article_ref'] != ""))
    {
      foreach ($_POST['article_ref'] as $key => $value)
      {
        $article_ref = trim($_POST["article_ref"][$key]);
        $article_devis = trim($_POST["article_devis"][$key]);
        $article_designationarticle = trim($_POST["article_designationarticle"][$key]);
        $article_pu = trim($_POST["article_pu"][$key]);
        $article_unite = trim($_POST["article_unite"][$key]);
        $article_quantite = trim($_POST["article_quantite"][$key]);
        $article_remise = trim($_POST["article_remise"][$key]);
        $article_total = trim($_POST["article_total"][$key]);
     
        $req = $bdd->prepare("INSERT INTO article(article_ref, article_devis, article_designationarticle,
        article_pu, article_unite, article_quantite, article_remise, article_total) VALUES(?,?,?,?,?,?,?,?)");
        $req->execute(array($article_ref,$article_devis,
        $article_designationarticle,$article_pu,$article_unite,$article_quantite,$article_remise,$article_total));
      }
      echo "<span class='success'>Vos articles ont bien été ajoutés.</span>"; ?>
      <script>
        setTimeout(function(){ location.replace("../Atelier/accueil.php") }, 10200); 
      </script><?php
     
            $devis_ref = $_POST['devis_ref'];
            $devis_contact = $_POST['devis_contact'];
            $devis_fournisseur = $_POST['devis_fournisseur'];
            $devis_fabricant = $_POST['devis_fabricant'];
            $devis_date = $_POST['devis_date'];
            $devis_daterelance = $_POST['devis_daterelance'];
     
            $req = $bdd->prepare("INSERT INTO devis(devis_ref, devis_contact, devis_fournisseur, devis_fabricant, devis_date, devis_daterelance) VALUES(?,?,?,?,?,?)");
                    $req->execute(array($devis_ref,$devis_contact,$devis_fournisseur,$devis_fabricant,$devis_date,$devis_daterelance));
                    echo "<span class='success'>Votre devis a bien été créé.</span>";
            }
      else
      {
        echo "<span class='danger'>Vos données n'ont pas été envoyées.</span>";
      }
    ?>
    merci d'avance

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 221
    Points : 15 512
    Points
    15 512
    Par défaut
    si la question de base est réglée, il vaut mieux clore cette discussion et poser la nouvelle question dans une nouvelle discussion.

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

Discussions similaires

  1. Retourner un tableau d'objets
    Par *.Har(d)t dans le forum Général VBA
    Réponses: 0
    Dernier message: 09/10/2013, 17h13
  2. Retourner un tableau d'objet avec json vers javascript
    Par beegees dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/04/2013, 21h20
  3. Réponses: 7
    Dernier message: 03/12/2004, 13h40
  4. [plpgsql] comment retourner un tableau
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/06/2004, 22h09
  5. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 16h06

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