Bonjour les amis.es
J'aurai besoin de votre aide concnernant l'envoie de données saisie depuis le formulaire html vers ma bdd sql.
Le calcul s'éffectue correctement sur le formulaire. Mais quand je valide, seulement le champs quantité et prix unitaire qui arrive dans la bdd. Les champs calculés par ligne ne s'enregistrent pas.
En revanche, quand je saisie manuellement les données sur les mêmes champs calculés, les données arrivent correctement dans la bdd. Je ne sais pas pourquoi les champs calculés automatiquement n'arrivent pas dans la base. Certainement, un petit truc à corriger mais il faut quelqu'un qui voit mieux que moi. Hiiiii

<table class="table table-bordered">
                    <thead class="table-success">
                        <tr>

                            <th>Quantité</th>
                            <th>PU</th>
                            <th>Prix net</th>
                        </tr>
                    </thead>

                    <tbody>
                          <tr>
                            <td><input type="text" name ="ligne_une_quantite"onkeyup="quantitefunc(this)"></td>
                            <td><input type="text" name="ligne_une_prixunitaire" onkeyup= "prixfunc(this)"> </td>
                            <td input name="ligne_une_prixtotal"class ="prixnet"input type="text"  class="" > 0</td>

                          </tr>

                          <tr>
                            <td><input name ="ligne_deux_quantite" type="text" onkeyup="quantitefunc(this)"></td>
                            <td><input name="ligne_deux_prixunitaire" type="text" onkeyup= "prixfunc(this)"> </td>
                            <td class ="prixnet"input type="text"  class="" name="ligne_deux_prixtotal"> 0</td>

                          </tr>

                    </tbody>
                    <tfoot>

                          <tr>
                            <td colspan="2">Total</td>
                            <td id="total"input type="text"  class="" name="totalnet">0</td>

                          </tr>
                    </tfoot>

                <script>

                    var total = document.getElementById("total");
                    var netap = document.getElementsByClassName("prixnet");

                    function quantitefunc(q){
                        var prix = q.parentElement.parentElement.children[1].children[0].value;
                        q.parentElement.parentElement.children[2].innerHTML = q.value*prix;
                        var cal = 0;
                        for (let i =0; i<netap.length; i++){
                            cal += parseInt(netap[i].innerText);  /* ou cal + netap[i].innerText; */

                        }
                        total.innerHTML=cal;

                    }

                    function prixfunc(p){

                    var qte = p.parentElement.parentElement.children[0].children[0].value;
                    p.parentElement.parentElement.children[2].innerHTML = p.value*qte;
                    var cal = 0;
                        for (let i =0; i<netap.length; i++){
                            cal += parseInt(netap[i].innerText);  /* ou cal + netap[i].innerText; */

                        }
                        total.innerHTML=cal;

                    }

                </script>

</table>
<button type="submit" class="btn btn-primary">Save</button>

Ce que je veux

Que les champs calculés s'enregistrent dans la base

Ce que j'obtiens
Seuelement les champs quantités et prixunitaires qui arrivent dans la base

4 réponses


Utilise l'inspecteur de ton navigateur (onglet réseau) pour voir quand la requête part les données qui sont envoyées au serveur.

cinb
Auteur

Sur inspecteur, ca a l'air de fonctrionner correctement. Tout est en vert. Je ne vois rien en rouge ou qui soit bloqué. Mais bizarremnent dans la base, seulement les champs siaisis arrivent et non les champs calculés.

Et si tu regarde le corps de la requête tu vois tous les champs (même ceux calculés par ligne ?)

Bonjour,
une erreur de syntaxe html sur le "input" pour le total n'en serait pas là cause