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

Langage PHP Discussion :

INSERT avec tableau HTML


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut INSERT avec tableau HTML
    Bonjour,

    Je cale depuis plusieurs jours sur un problème d'insertion de ma table HTML vers ma BDD MySql.

    L'idée étant d'enregistrer une ligne que si la quantité est renseigné.

    Pourriez vous me guider vers la solution.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     <div class="tableauCmd" id="main">
                    <section>
                        <table id="tableau">
                            <thead>
                                <tr>
                                    <th width=20%>Désignation</th>
                                    <th width=20%>Code article</th>
                                    <th width=40%>Couleur</th>
                                    <th width=20%>Code couleur</th>
                                    <th width=60%>U.V.C....................................</th>
                                    <th width=30%>Taille</th>
                                    <th width=30%>Quantité</th>
                                </tr>
                            </thead>
                            <tbody>
    			<?php
     
    try {
        $bdd = new PDO('mysql:host=localhost;dbname=xxxx;charset=utf8', '', '');
    } catch (Exception $e) {
        die('Erreur : ' . $e->getMessage());
    }
     
    $query = $bdd->prepare('SELECT ART_CODE,ART_DESIGN,COL_LIBELLE,COL_CODE,ART_UVC,ART_TAILLE FROM ARTICLES,COLORS WHERE ART_COL=COL_CODE AND ART_CODE="' . $_POST['article'] . '" ORDER BY ART_UVC');
    $query->execute();
    while ($data = $query->fetch()) {
    ?>
        <tr>
        <div>
            <td><input type="text" class="col" name="designation" value="<?php echo $data['ART_DESIGN']; ?>"></td>
            <td><input type="text" class="col" name="codearticle" value="<?php echo $data['ART_CODE']; ?>"></td>
            <td><input type="text" class="col" name="colorislibelle" value="<?php echo $data['COL_LIBELLE']; ?>"></td>
            <td><input type="text" class="col" name="coloriscode" value="<?php echo $data['COL_CODE']; ?>"></td>
            <td><input type="text" class="col" name="uvc" value="<?php echo $data['ART_UVC']; ?>"></td>
            <td><input type="text" class="col" name="taillearticle" value="<?php echo $data['ART_TAILLE']; ?>"></td>
            <td><input type="text" class="col"  name="qty"></td>
            </div>
        </tr>
    <?php
    }
    ?>
                            </tbody>
                        </table>
    Pour la partie INSERT INTO, c'est ici que j'ai mon soucis car seule la dernière ligne du tableau s’insère alors que la quantité est à 0


    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
    while(isset($_POST['codearticle'][++$i]))
    if(isset($_POST["codearticle"])) 
    { 
         if($_POST["qty"] != 0) {
    {
    {
     
            <?php
                $servname = "localhost"; $dbname = "simag_prod"; $user = "root"; $pass = "root";
     
                try{
                    $dbco = new PDO("mysql:host=$servname;dbname=$dbname", $user, $pass);
                    $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
                    $num = $_POST['CmdNum'];
                    $codeart = $_POST['codearticle'];
                    $artlibelle = $_POST['designation'];
                    $color = $_POST['colorislibelle'];
                    $taille = $_POST['taillearticle'];
                    $uvc = $_POST['uvc'];
                    $qty = $_POST['qty'];
                    $create = date('y-m-d h:i:s');
     
                    //$sth appartient à la classe PDOStatement
                    $sth = $dbco->prepare("
                    INSERT INTO CMD_LIGNE(LIG_NUM_CMD,LIG_ART_CODE,LIG_ART_LIBELLE,LIG_ART_COLOR,LIG_ART_TAILLE,LIG_UVC,
                    LIG_ART_QTY,LIG_DATE_CREATE)
                        VALUES (:numcmd, :codearticle, :artlibelle, :artcolor, :arttaille, :uvc, :quantite, :creation)
                    ");
                    $sth->execute(array(
                                        ':numcmd' => $num,
                                        ':codearticle' => $codeart,
                                        ':artlibelle' => $artlibelle,
                                        ':artcolor' => $color,
                                        ':arttaille' => $taille,
                                        ':uvc' => $uvc,
                                        ':quantite' => $qty,
                                        ':creation' => $create));
                    echo "Entrée ajoutée dans la table";
                }
     
                catch(PDOException $e){
                    echo "Erreur : " . $e->getMessage();
                }
            ?>
    Je sais que le soucis provient des conditions de la requête, car j'enregistre que la dernière ligne alors que la quantité est à O.
    Je viens du monde de windev et débutant dans ce monde ci, alors désolé pour l'ignorance.
    Encore merci pour votre aide
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 137
    Par défaut
    Salut

    En déplaçant <?php avant while(isset($_POST['.... cela donne quoi ?
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Bonjour,

    Rien de plus, j'ai pour autant modifier le code mais j'enregistre toutes les lignes, y compris celles ou la quantité est à 0

    Code php : 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
                //$sth appartient à la classe PDOStatement
                $sth = $dbco->prepare("
                    INSERT INTO CMD_LIGNE(LIG_NUM_CMD,LIG_ART_CODE,LIG_ART_LIBELLE,LIG_ART_COLOR,LIG_ART_TAILLE,LIG_UVC,
                    LIG_ART_QTY,LIG_DATE_CREATE)
                        VALUES (:numcmd, :codearticle, :artlibelle, :artcolor, :arttaille, :uvc, :quantite, :creation)
                    ");
                    var_dump($sth);
     
                    if($_POST["qty"] != 0) {
     
                    $codeart = $_POST['codearticle'];
                    for ($i = 0; $i < $codeart; $i++) {
     
                    $num = $_POST['CmdNum'];
                    $codeart = $_POST['codearticle'][$i];
                    $artlibelle = $_POST['designation'][$i];
                    $color = $_POST['colorislibelle'][$i];
                    $taille = $_POST['taillearticle'][$i];
                    $uvc = $_POST['uvc'][$i];
                    $qty = $_POST['qty'][$i];
                    $create = date('y-m-d h:i:s');
     
                    $sth->execute(array(
                        ':numcmd' => $num,
                        ':codearticle' => $codeart,
                        ':artlibelle' => $artlibelle,
                        ':artcolor' => $color,
                        ':arttaille' => $taille,
                        ':uvc' => $uvc,
                        ':quantite' => $qty,
                        ':creation' => $create
                    ));
     
     
                    echo "Entrée ajoutée dans la table";
                }}
            } catch (PDOException $e) {
                echo "Erreur : " . $e->getMessage();
            }

    Je ne comprends pas où est mon erreur
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  4. #4
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 463
    Par défaut
    Que donne un var_dump($_POST); au début de ton script de traitement ?
    Toutes les données post attendus sont bien reçues ?

    L'attribut name de tes inputs devraient surement être sous la forme d'un tableau <input type="text" class="col" name="qty[]"> afin que tous les inputs soient transmis et pas seulement la dernière ligne de ton tableau.

  5. #5
    Membre éprouvé Avatar de Raptor92
    Homme Profil pro
    Directeur des opérations & Innovation
    Inscrit en
    Juin 2009
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur des opérations & Innovation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 998
    Par défaut
    Bonjour,

    Oui, en effet, toutes les données s'affichent bien dans le var_dump et en effet, les input sont bien déclarés comme vous le stipulé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        <tr>
        <div>
            <td><input type="text" class="col" name="designation[]" value="<?php echo $data['ART_DESIGN']; ?>"></td>
            <td><input type="text" class="col" name="codearticle[]" value="<?php echo $data['ART_CODE']; ?>"></td>
            <td><input type="text" class="col" name="colorislibelle[]" value="<?php echo $data['COL_LIBELLE']; ?>"></td>
            <td><input type="text" class="col" name="coloriscode[]" value="<?php echo $data['COL_CODE']; ?>"></td>
            <td><input type="text" class="col" name="uvc[]" value="<?php echo $data['ART_UVC']; ?>"></td>
            <td><input type="text" class="col" name="taillearticle[]" value="<?php echo $data['ART_TAILLE']; ?>"></td>
            <td><input type="text" class="col"  name="qty[]"></td>
            </div>
        </tr>
    et la requete INSERT:

    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
                //$sth appartient à la classe PDOStatement
                $sth = $dbco->prepare("
                    INSERT INTO CMD_LIGNE(LIG_NUM_CMD,LIG_ART_CODE,LIG_ART_LIBELLE,LIG_ART_COLOR,LIG_ART_TAILLE,LIG_UVC,
                    LIG_ART_QTY,LIG_DATE_CREATE)
                        VALUES (:numcmd, :codearticle, :artlibelle, :artcolor, :arttaille, :uvc, :quantite, :creation)
                    ");
                    var_dump($sth);
     
                    $codeart = $_POST['codearticle'];
                    for ($i = 0; $i < $codeart; $i++) {
                    $var = $_POST['qty'];
                    var_dump($var);
                    if($var != 0) {
     
                    $num = $_POST['CmdNum'];
                    $codeart = $_POST['codearticle'][$i];
                    $artlibelle = $_POST['designation'][$i];
                    $color = $_POST['colorislibelle'][$i];
                    $taille = $_POST['taillearticle'][$i];
                    $uvc = $_POST['uvc'][$i];
                    $qty = $_POST['qty'][$i];
                    $create = date('y-m-d h:i:s');
     
                    $sth->execute(array(
                        ':numcmd' => $num,
                        ':codearticle' => $codeart,
                        ':artlibelle' => $artlibelle,
                        ':artcolor' => $color,
                        ':arttaille' => $taille,
                        ':uvc' => $uvc,
                        ':quantite' => $qty,
                        ':creation' => $create
                    ));
     
     
                    echo "Entrée ajoutée dans la table";
                }}
            } catch (PDOException $e) {
                echo "Erreur : " . $e->getMessage();
            }
    Et comme dit, j'enregistre même les lignes dont la quantité est à 0, alors que je cherche uniquement celles dont la quantité est > 0

    Merci pour votre aide
    Raptor92
    Dominique
    Aucune aide par MP, utilisez le forum.

    Mon guide du débutant pour apprendre à programmer en Java - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java


  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 359
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 359
    Billets dans le blog
    17
    Par défaut
    et en effet, les input sont bien déclarés comme vous le stipulé.
    C'est pas ce que tu montrais, pour rappel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        <tr>
        <div>
            <td><input type="text" class="col" name="designation" value="<?php echo $data['ART_DESIGN']; ?>"></td>
            <td><input type="text" class="col" name="codearticle" value="<?php echo $data['ART_CODE']; ?>"></td>
            <td><input type="text" class="col" name="colorislibelle" value="<?php echo $data['COL_LIBELLE']; ?>"></td>
            <td><input type="text" class="col" name="coloriscode" value="<?php echo $data['COL_CODE']; ?>"></td>
            <td><input type="text" class="col" name="uvc" value="<?php echo $data['ART_UVC']; ?>"></td>
            <td><input type="text" class="col" name="taillearticle" value="<?php echo $data['ART_TAILLE']; ?>"></td>
            <td><input type="text" class="col"  name="qty"></td>
            </div>
        </tr>
    Ici pas de [].

    Et comme dit, j'enregistre même les lignes dont la quantité est à 0, alors que je cherche uniquement celles dont la quantité est > 0
    Il n'y a pas de condition ici empêchant cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
                   $qty = $_POST['qty'][$i];
                    $create = date('y-m-d h:i:s');
     
                    $sth->execute(array(
                        ':numcmd' => $num,
                        ':codearticle' => $codeart,
                        ':artlibelle' => $artlibelle,
                        ':artcolor' => $color,
                        ':arttaille' => $taille,
                        ':uvc' => $uvc,
                        ':quantite' => $qty,
                        ':creation' => $create
                    ));
    Modifie en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $qty = $_POST['qty'][$i];
    $create = date('y-m-d h:i:s');
     
    if ($qty == 0) {
        continue; // Tour de boucle suivant
    }
     
    $sth->execute([...]);

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

Discussions similaires

  1. Problème avec Tableau HTML, Rowspan et Onmouseover
    Par Jordel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 30/04/2009, 15h38
  2. [DOM] insertion de code HTML au sein d'un tableau avec innerHTML
    Par Tanebisse dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/11/2008, 15h52
  3. Réponses: 3
    Dernier message: 10/11/2006, 17h59
  4. Insertion javascript dans tableau HTML
    Par Rocca dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 08/08/2005, 13h28
  5. [VB6] recuperer des valeurs ds un tableau html avec vb!!
    Par leo13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/12/2004, 14h02

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