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 :

Récupérer les données des champs cloner et les enregistrer dans table mysql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 33
    Par défaut Récupérer les données des champs cloner et les enregistrer dans table mysql
    Bonjour,

    En cliquant sur un bouton, J'arrive a cloné ou dupliqué le tr de mon tableau avec tous les champs input de type text.
    Mon souci est de pouvoir enregistrer l données de chaque champs dans la table de presences qui est dans la bdd.

    AIDEZ MOI SVP

    voici un model
    Nom : model.jpg
Affichages : 440
Taille : 47,0 Ko

    Voici le 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
    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
    <table class="table table-bordered">
            <h5><strong>LISTE DE PRESENCE </strong></h5>
            <hr>
            <thead>
            <tr>
                <th scope="col">ENTREPRISE</th>
                <th scope="col">NOM ET PRENOM</th>
                <th scope="col">FONCTION</th>
                <th scope="col">NUMERO PIECE D’IDENTITE
                    </th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <th scope="row" colspan="">
                        <div class="form-group" id="01">
                            <input type='text' name="entreprise[]" class='form-control form-control-sm'>
                        </div>
                </th>
                <td><div class="form-group" id="01">
                        <input type='text' name="nomPrenom[]" class='form-control form-control-sm'>
                    </div>
                </td>
                <td><div class="form-group" id="01">
                        <input type='text' name="fonction[]" class='form-control form-control-sm'>
                    </div>
                </td>
                <td><div class="form-group" >
                        <input type='text' name="num_ident[]" class='form-control form-control-sm'>
     
                    </div>
                </td>
     
            </tr>
     
            <tr class="d-none" id="dup">
                <th scope="row" colspan="">
                        <div class="form-group">
                            <input type='text' name="entreprise[]" class='form-control form-control-sm'>
                        </div>
                </th>
                <td><div class="form-group">
                        <input type='text' name="nomPrenom[]" class='form-control form-control-sm'>
                    </div>
                </td>
                <td><div class="form-group">
                        <input type='text' name="fonction[]" class='form-control form-control-sm'>
                    </div>
                </td>
                <td><div class="form-group">
                        <input type='text' name="ident[]" class='form-control form-control-sm'>
                    </div>
                </td>
     
            </tr>
     
            <tr>
                    <td colspan="4"><span>
                        <a href="#"  class="btn btn-outline-primary btn-sm" id="btn">Ajouter une ligne</a></span></td>
            </tr>
     
            </tbody>
        </table>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <script>
        $('#btn').click(function(e) {
            e.preventDefault();
            var $clone = $('#dup').clone().attr('id', '').removeClass('d-none').appendTo('#01');
            $('#dup').before($clone);
        })
    </script>

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 188
    Par défaut
    Bonjour,

    Dans le nom de tes champs je mettrai un index.
    C'est à dire pour la première ligne, les champs se nomment : entreprise[0], nomPrenom[0] etc..
    Pour la seconde : entreprise[1], nomPrenom[1]

    Ensuite dans le traitement de ton formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    foreach($_POST["entreprise"] as $key=>$val){
     
    //affichage des données
       echo $_POST["entreprise"][$key];
       echo $_POST["nomPrenom"][$key];
     
     
     
    }

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

    Citation Envoyé par wehtam Voir le message
    Dans le nom de tes champs je mettrai un index.
    @wehtam
    Non, ce n'est pas nécessaire.
    • name="entreprise[]" : les crochets suffisent (l'indexation se fait automatiquement)

    Et ton code de traitement reste valable.

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    sur jreaux. Si la ligne est dupliquée en JS, il vaut mieux qu'il n'y ait pas d'index explicite. Sinon, il va falloir éditer les champs pour modifier l'index.

    Par contre, attention, en HTML, les id sont uniques, mais là, je vois plusieurs fois id="01".
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 33
    Par défaut
    Bonjour et merci de vos réponses,

    j'avais réussi a passer cette étape mais je suis encore ploqué à ce niveau:

    partant d'un journal de chantier, je récupère l'ID du journal pour l’insérer dans la table de presences
    ensuite je fais un UPDATE pour insérer toutes les infos des personnes présentent dans la même table (presences).

    Mon probleme est que l UPDATE ce fait seulement sur une ligne (la première) et laisse les autres lignes.

    QUELQU'UN P M'AIDER ??
    Voici 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
     $jnals_id = $db->quote($_GET['id']); // Récupération de l'ID du journal de chantier
     
                $db->query("INSERT INTO presences SET jnal_id=$jnals_id"); // On l'insert dans la table presences 
                $p = $db->lastInsertId(); // On récupère l'ID inserer dans dans la table presences pour faire le UPDATE avec
                $stmt = $db->prepare("UPDATE presences SET entreprise=?, nom_prenom=?, fonction=?, num_identite=? WHERE id=?");
                $stmt->bindParam(1, $ent);
                $stmt->bindParam(2, $np);
                $stmt->bindParam(3, $fonct);
                $stmt->bindParam(4, $ident);
                $stmt->bindParam(5, $p);
     
                $arr = $_POST;
                    for ($i = 0; $i <= count($arr['entreprise'])-1; $i++){ // Boucle pour récupérer chaque informations saisie
                        $ent = $arr['entreprise'][$i];
                        $np = $arr['nomPrenom'][$i];
                        $fonct = $arr['fonction'][$i];
                        $ident = $arr['ident'][$i];
                        $p = $db->lastInsertId();
                        $stmt->execute();
     
                    }
    Merci d'avance

  6. #6
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 33
    Par défaut
    Citation Envoyé par jreaux62 Voir le message
    Bonjour,


    @wehtam
    Non, ce n'est pas nécessaire.
    • name="entreprise[]" : les crochets suffisent (l'indexation se fait automatiquement)

    Et ton code de traitement reste valable.

    Bonjour et merci de vos réponses,

    j'avais réussi a passer cette étape mais je suis encore ploqué à ce niveau:

    partant d'un journal de chantier, je récupère l'ID du journal pour l’insérer dans la table de presences
    ensuite je fais un UPDATE pour insérer toutes les infos des personnes présentent dans la même table (presences).

    Mon probleme est que l UPDATE ce fait seulement sur une ligne (la première) et laisse les autres lignes.

    QUELQU'UN P M'AIDER ??
    Voici 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
     $jnals_id = $db->quote($_GET['id']); // Récupération de l'ID du journal de chantier
     
                $db->query("INSERT INTO presences SET jnal_id=$jnals_id"); // On l'insert dans la table presences 
                $p = $db->lastInsertId(); // On récupère l'ID inserer dans dans la table presences pour faire le UPDATE avec
                $stmt = $db->prepare("UPDATE presences SET entreprise=?, nom_prenom=?, fonction=?, num_identite=? WHERE id=?");
                $stmt->bindParam(1, $ent);
                $stmt->bindParam(2, $np);
                $stmt->bindParam(3, $fonct);
                $stmt->bindParam(4, $ident);
                $stmt->bindParam(5, $p);
     
                $arr = $_POST;
                    for ($i = 0; $i <= count($arr['entreprise'])-1; $i++){ // Boucle pour récupérer chaque informations saisie
                        $ent = $arr['entreprise'][$i];
                        $np = $arr['nomPrenom'][$i];
                        $fonct = $arr['fonction'][$i];
                        $ident = $arr['ident'][$i];
                        $p = $db->lastInsertId();
                        $stmt->execute();
     
                    }
    Merci d'avance

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

    je ne comprends pas ligne 18 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $p = $db->lastInsertId();
    Si $p est le même qu'à la ligne 4, alors tu UPDATE toujours la même ligne.
    Sinon.... il vaut quoi ?

  8. #8
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 33
    Par défaut
    Elle récupéré la dernière insertion dans table presences (ligne 4)
    et à la ligne 18 l' affecte pour compléter la condition WHERE id =$p

  9. #9
    Membre actif
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2018
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Lycéen
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2018
    Messages : 33
    Par défaut Enregistrer toutes les données de champs input dupliqué ou cloné avec JQuery dans MySQL avec PH
    bonjour, j'ai d'aide,
    J'ai un formulaire qui enregistre un rapport journalier d'un chantier,
    dans ce formulaire il d'autres champs qui doit enregistrer les personnes qui sont présent au chantier
    mais ceux-ci doivent être enregistrés dans une autre table (presences).

    Les champs pour la table presences sont dupliqué avec JQuery tel le montre l'image ci-après:
    Nom : model.jpg
Affichages : 374
Taille : 47,0 Ko


    donc j'ai 2 tables dans ma base des données dont:
    Nom : db.jpg
Affichages : 376
Taille : 24,1 Ko


    Mon problème:
    Quand je clic sur le bouton submit que le système enregistre les données de jnal_chantier,
    en second lieu il enregistre les données de la table presences en tenant compte de la clé etrangere.

    Voici ce que moi je tenter de faire mais je suis au bout.
    (Juste la partie de la table presences parce que )


    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
     <table class="table table-bordered">
            <h5><strong>LISTE DE PRESENCE DE CHANTIER</strong></h5>
            <hr>
            <thead>
            <tr>
                <th scope="col">ENTREPRISE</th>
                <th scope="col">NOM ET PRENOM</th>
                <th scope="col">FONCTION</th>
                <th scope="col">NUMERO PIECE D’IDENTITE
                    </th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <th scope="row" colspan="">
                        <div class="form-group">
                            <input type='text' name="entreprise[]" class='form-control form-control-sm'>
                        </div>
                </th>
                <td><div class="form-group">
                        <input type='text' name="nomPrenom[]" class='form-control form-control-sm'>
                    </div>
                </td>
                <td><div class="form-group">
                        <input type='text' name="fonction[]" class='form-control form-control-sm'>
                    </div>
                </td>
                <td><div class="form-group" >
                        <input type='text' name="identite[]" class='form-control form-control-sm'>
     
                    </div>
                </td>
            </tr>
     
            <tr class="d-none" id="dup">
                <th scope="row" colspan="">
                        <div class="form-group">
                            <input type='text' name="entreprise[]" class='form-control form-control-sm'>
                        </div>
                </th>
                <td><div class="form-group">
                        <input type='text' name="nomPrenom[]" class='form-control form-control-sm'>
                    </div>
                </td>
                <td><div class="form-group">
                        <input type='text' name="fonction[]" class='form-control form-control-sm'>
                    </div>
                </td>
                <td><div class="form-group" >
                        <input type='text' name="identite[]" class='form-control form-control-sm'>
     
                    </div>
                </td>
            </tr>
     
            <tr>
                    <td colspan="4"><span>
                        <a href="#"  class="btn btn-outline-primary btn-sm" id="btn">Ajouter une ligne</a></span></td>
            </tr>
     
            </tbody>
        </table>
    PHP
    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
     
    jnal_id = $db->quote($_GET['id']); // Id de la table jnal_chantie
    $sql = "INSERT INTO presences (entreprise, nom_prenom, fonction, num_identite, jnal_id) VALUES (?,?,?,?,?)";
                $stmt = $db->prepare($sql);
                $stmt->bindParam(1, $entreprise);
                $stmt->bindParam(2, $nom_prenom);
                $stmt->bindParam(3, $fonction);
                $stmt->bindParam(4, $num_identite);
                $stmt->bindParam(5, $jnals_id);
                $arr = $_POST;
                foreach( $arr['entreprise'] as $i => $entreprise) // Boucle pour récupérer chaque informations saisie
                {
                    $entreprise = $arr['entreprise'][$i];
                    $nom_prenom = $arr['nomPrenom'][$i];
                    $fonction = $arr['fonction'][$i];
                    $num_identite = $arr['identite'][$i];
                    $jnals_id = jnal_id;
                    // Exécution de la requête
                    $stmt->execute();
                }
    Ce code enregistre bien les données dans la table presences mais la colonne jnal_id de la table presences est vide
    et aussi il ya une ligne de plus dans la table qui vide. (voir l'image ci-dessous)
    Nom : Tab.jpg
Affichages : 362
Taille : 35,0 Ko

    Merci de votre aide!

Discussions similaires

  1. contrôler les données des champs d'un fichier
    Par pekre dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 20/07/2016, 11h26
  2. comment récupérer des resrvations et les enregistrer dans la base de donnée
    Par nizardinho dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 22/09/2015, 07h53
  3. Réponses: 9
    Dernier message: 03/07/2014, 18h08
  4. [Drupal] Afficher les données des champs après soumission
    Par anchain dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 18/02/2013, 16h30
  5. [A-03] Afficher les données des champs Memo
    Par Frayer dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 12/02/2009, 21h26

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