Multi insertion en ajax

Résolu/Fermé
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021 - Modifié le 26 nov. 2020 à 17:50
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021 - 30 nov. 2020 à 03:24
Bonjours , je rencontre un probleme concernant une multi insertion en ajax jQuery ect
Dans ma page j'ai plusieurs articles que je veut insérer en même temps.

Ma page consiste a la réalisation d'un avoirs sur facture.

l'avoirs consiste a modifier la quantite d'un azrticle par rapport à la facture en question :

Je m'explique :

Facture - 001

a comme article :

Reference Article cout quantité tva remise typ

E001 kinder 1 1 20% 0% facturevente
E002 coca 2 2 20% 0% facturevente

ect ect

Donc dans la page html avec le form les infos serons pré-remplit

<?php foreach($articlee as $article): ?>
<div class="article">

       <input type="text" id="numeros" name="numeros" value=""> // le numeros de l'avoir qui va etre assigner a tout les articles pour ensuite les affichers dans la page visuelle de l'avoirs


       <input type="text" id="article" name="article" value="<?= $article['article'] ?>" readonly>
       <input type="text" id="cout" name="cout" value="<?= $article['cout'] ?>" readonly>
       <input type="text" id="quantite" name="quantite" value="<?= $article['quantite'] ?>">
       <input type="text" id="referencearticle" name="referencearticle" value="<?= $article['referencearticle'] ?>"readonly>
       <input type="text" id="tva" name="tva" value="<?= $article['tva'] ?>"readonly>
       <input type="text" id="remise" name="remise" value="<?= $article['remise'] ?>"readonly>

       <button id="button_save">Sauvegarder les articles</button>

</div>
<?php endforeach; ?>


En gros ce que je voudrai c'est que dès que l'utilisateur click sur le bt tout les articles rentre dans ma base de données articles

bdd :

articles

id
article
referencearticle
cout
quantite
tva
remise
numeros //name="numeros"
typ
id_session

Tout les tutos que j'ai regarde c'est different de ce que je veut , dans les vidéos , il y a un input et quand tu appuie sur le bouton ca ajoute l'objets dans un tableau et a la fin du save et ca insert

alors que moi je veut pas faire de table je veut que si jamais j'appuie sur le bt toute les infos du foreach s'insert.

C'est possible ?
A voir également:

8 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 nov. 2020 à 18:06
Bonjour,

Déjà, ton bouton devrait se trouver en dehors de ta boucle non ? surtout si tu veux que ce bouton insère en bdd toutes les artciles...

Ensuite, ben... il suffit de récupérer les éléments que tu veux insérer en bdd via du javascript
en bouclant sur, tous les inputs se trouvant dans tes div ayant la class article ....et en les mettant dans un "array" javascript

Ensuite, tu peux envoyer cette array au format json via un JSON.stringify(tonarray))

En l'état, il sera difficile de t'aider d'avantage tant que tu n'auras pas commencer à coder un minimum ton javascript ( je ne vais pas le coder à ta place.... encore... )

Donc, commence à coder et reviens nous voir en expliquant sur quel point précis tu bloques.

0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
Modifié le 26 nov. 2020 à 18:11
Parfais, oui le html je les fait sur le coup.
Merci du conseil je vais re essayer xD , j'ai deja essaye mais j'ai fait nimporte quoi , je vais essaye avec ta technique.
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
26 nov. 2020 à 20:26
Bon j'ai tente de faire quelque chose mais ca ne marche pas, je n'arrive pas à faire une boucle en Ajax

Mon code html :

<div class="col-xl-4 col-md-12 d-flex align-items-center pl-0">
                                                <h6 class="invoice-number mr-75">Avoir N°</h6>
                                                <input name="numerosfacture" id="numeros" type="text" class="form-control pt-25 w-50" placeholder="00000" value="" required>
                                            </div>
<!-- Plus haut -->

<div class="card-body pt-50">
                                        <!-- product details table-->
                                        <div class="invoice-product-details ">
                                            
                                                <div data-repeater-list="group-a">
                                                    <div data-repeater-item>
                                                        <?php foreach($articles as $articless): ?>
                                                        <div class="invoice-item d-flex border rounded mb-1">
                                                            <div class="invoice-item-filed row pt-1 px-1">
                                                                <div class="col-12 col-md-4 form-group">
                                                                    <label>Article :</label>
                                                                    <input name="article" id="article" type="text" class="form-control invoice-item-desc" placeholder="Article" value="<?= $articless['article'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Cout :</label>
                                                                    <input name="cout" id="cout" type="number" class="form-control" placeholder="0" value="<?= $articless['cout'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Quantite :</label>    
                                                                    <input name="quantite" id="quantite" type="number" min="1" max="<?= $articless['quantite'] ?>" class="form-control" placeholder="0" value="<?= $articless['quantite'] ?>" required>
                                                                </div>
                                                                <div class="col-md-4 col-12 form-group">
                                                                    <label>Ref :</label>
                                                                    <input name="referencearticle" id="referencearticle" type="text" class="form-control invoice-item-desc" placeholder="Réference" value="<?= $articless['referencearticle'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Remise:</label>
                                                                    <input name="remise" type="number" id="remise" class="form-control" placeholder="0" value="<?= $articless['remise'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Tva :</label>
                                                                    <input name="tva" type="number" id="tva" class="form-control" placeholder="0" value="<?= $articless['tva'] ?>" readonly>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <?php endforeach; ?>                                              
                                                    </div>
                                                </div>
                                        </div>
                                        <!-- invoice subtotal -->
                                        <hr>
                                        <div class="invoice-subtotal pt-50 border"><style>.green{background-color: #32EE5F; color:white;}</style>                                                 
                                            <li class="list-group-item border-0">
                                                <button id="button_save" type="submit" class="btn green btn-block subtotal-preview-btn">Continuer</button>
                                            </li>
                                        </div>
                                    </div>
<!-- A la fin du body -->

<script src="../../../app-assets/js/scripts/pages/app-avoir_add.js"></script>



Code js --> app-avoir_add.js


        $(document).ready(function(){      

        $("#button_save").click(function(){

            var numeros = $("#numeros");
            var article = $("#article"); 
            var referencearticle = $("#referencearticle");
            var cout = $("#cout");
            var quantite = $("#quantite");
            var tva = $("#tva");
            var remise = $("#remise");
            
            for ( var i = 1; i <= 2; i++) { //j'ai mit 2 parce que je sais pas comment faire pour savoir le nombre d'article. et comme dans la fac - 001 il y a 2 articles voila tout
                numeros.push($("#"+i+" .numeros"+i).html());
                article.push($("#"+i+" .article"+i).html()); 
                referencearticle.push($("#"+i+" .referencearticle"+i).html()); 
                cout.push($("#"+i+" .cout"+i).html());
                quantite.push($("#"+i+" .quantite"+i).html()); 
                tva.push($("#"+i+" .tva"+i).html()); 
                remise.push($("#"+i+" .remise"+i).html());
            }

            var sendNumeros = JSON.stringify(numeros); 
            var sendArticle = JSON.stringify(article); 
            var sendRef = JSON.stringify(referencearticle);
            var sendcout = JSON.stringify(cout);
            var sendquantite = JSON.stringify(quantite);
            var sendTVA = JSON.stringify(tva);
            var sendremise = JSON.stringify(remise);

            $.ajax({
                url: "../../../html/ltr/coqpix/php/insert_avoir_articles.php", 
                type: "POST",
                data: {
                    numeros : sendNumeros,
                    article : sendArticle,
                    referencearticle : sendRef, 
                    cout : sendcout, 
                    quantite : sendquantite,
                    tva : sendTVA,
                    remise : sendremise,
                },
                success:function(data){
                }
            });
        });
        });





Code php -----> insert_avoir_articles.php


<?php
session_start();
$numArr = json_decode($_POST["numeros"]);
$artArr = json_decode($_POST["article"]);
$refArr = json_decode($_POST["referencearticle"]);
$coutArr = json_decode($_POST["cout"]);
$tvaArr = json_decode($_POST["tva"]);
$remiseArr = json_decode($_POST["remise"]);
$quantite = json_decode($_POST["quantite"]);
$typ = "";
$id_session = $_SESSION['id_session']; //$_SESSION
 
$con = mysqli_connect("localhost", "root", "", "u243663731_");

if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

for ($i = 0; $i < count($artArr); $i++) {

    if(($artArr[$i] != "")) {

        $sql = "INSERT INTO articles(article, referencearticle, cout, quantite, tva, remise, numeros, typ, id_session)
            VALUES ('$artArr[$i]','$refArr[$i]','$coutArr[$i]','$quantite[$i]','$tvaArr[$i]','$remiseArr[$i]','$numArr[$i]','$typ','$id_session')";
        
        if (!mysqli_query($con, $sql))
        {
            die('Error: ' . mysqli_error($con));
        }

    }
}


mysqli_close($con);
?>

Table articles

id
article
referencearticle
cout
quantite
tva
remise
typ
id_session

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 27 nov. 2020 à 07:14
Je suppose que tu n'as pas regardé dans la console de ton navigateur pour voir les éventuelles erreurs ?

Déjà, tu as initialisé tes variables de la mauvaise manière
var article = $("#article"); 

à remplacer par
var article = []; // on l'initialise en tant qu'array


ensuite, ton code html est faux....
Tu as le même id pour tous les éléments de ta boucle .... un ID (comprendre IDENTIFIANT) se doit d'être unique...

et puis, à la limite, il vaudrait mieux utiliser des class ..

par exemple
 <input name="article" id="article_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc article" placeholder="Article" value="<?= $articless['article'] ?>" readonly>               


et donc, pour récupérer la liste des articles, ton JS pourrait ressembler à ça
var arrAticle = []; // on l'initialise en tant qu'array

// on boucle sur  tous les éléments ayant la class "article"
$(".article").each(function()
   arrAticle.push($(this).val());
});
console.log({arrAticle}); // regarde dans la console le résultat

var sendArticle = JSON.stringify(arrAticle); 
console.log({sendArticle }); // regarde dans la console le résultat



y'a plus qu'à faire pareil pour chaque input de ton formulaire ...

PS: tu a mis le "success" dans ton ajax ... pense aussi à mettre le "error"
error: function (jqXHR, exception) {
    console.log(jqXHR, exception);
    alert("Erreur AJAX .. regarde dans la console pour plus de détails");
}


Ou encore mieux, utilise le "done" et "fail" comme c'est le cas dans ta précédente question..
        $.ajax({
            type: "POST",
            url: "../../../html/ltr/coqpix/php/insert_avoir_articles.php", 
            data: data,
            async: true,
            dataType: "json"
        }).done(function (reponse) {
           console.log("reponse ajax",reponse);

        }).fail(function (jqXHR, textStatus) {
            alert('Ajax error');
            console.log({textStatus}, {jqXHR});
        });


PS² : Pourquoi dans ton script PHP ajax, tu fais du mysqli ... alors que sur tes autres pages tu fais du PDO ??????

Faut vraiment arrêter de copier/coller bêtement.....
Fais au moins l'effort d'essayer de comprendre et un minimum d'adapter le code à ce que tu as déjà dans ton site....




0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
Modifié le 27 nov. 2020 à 00:03
Je suis vraiment nul donc j'essaye tout ce que je trouve et j'essaye de comprend , ca fait que 1 semaine et demi que donc c'est tout nouveaux pour moi, et j'ai énormément de mal avec la manière dont c'est écrit Ya des + partout et je ne sais toujours pas a quoi ca sert et par exemple je ne savais pas qui faillais dans un premier temps mettre les infos dans un array et après de les ajouter avec un boucle.

Ducoup j'ai tout fait , dans la console aucune erreur est détecter, mais aucun info est stocker dans arrArticle ect et donc rien dans sendArticle ect

Img console :



Mon code js :


        $(document).ready(function(){      

        $("#button_save").click(function(){

            var arrNumeros = [];
            var arrArticle = [];
            var arrReferencearticle = [];
            var arrCout = [];
            var arrQuantite = [];
            var arrTva = [];
            var arrRemise = [];

            $(".numeros").each(function(){
            arrNumeros.push($(this).val());
            });
            console.log({arrNumeros});

            $(".article").each(function(){
            arrArticle.push($(this).val());
            });
            console.log({arrArticle});

            $(".referencearticle").each(function(){
            arrReferencearticle.push($(this).val());
            });
            console.log({arrReferencearticle});

            $(".cout").each(function(){
            arrCout.push($(this).val());
            });
            console.log({arrCout});

            $(".quantite").each(function(){
            arrQuantite.push($(this).val());
            });
            console.log({arrQuantite});

            $(".tva").each(function(){
            arrTva.push($(this).val());
            });
            console.log({arrTva});

            $(".remise").each(function(){
            arrRemise.push($(this).val());
            });
            console.log({arrRemise});

            var sendNumeros = JSON.stringify(arrNumeros);
            console.log({sendNumeros}); 
            var sendArticle = JSON.stringify(arrArticle);
            console.log({sendArticle}); 
            var sendRef = JSON.stringify(arrReferencearticle);
            console.log({sendRef});
            var sendCout = JSON.stringify(arrCout);
            console.log({sendCout});
            var sendQuantite = JSON.stringify(arrQuantite);
            console.log({sendQuantite});
            var sendTva = JSON.stringify(arrTva);
            console.log({sendTva});
            var sendRemise = JSON.stringify(arrRemise);
            console.log({sendRemise});

            $.ajax({
                url: "../../../html/ltr/coqpix/php/insert_avoir_articles.php", 
                type: "POST",
                data: {
                    numeros : sendNumeros,
                    article : sendArticle,
                    referencearticle : sendRef, 
                    cout : sendCout, 
                    quantite : sendQuantite,
                    tva : sendTva,
                    remise : sendRemise,
                },
                success:function(data){
                },
                error : function(data){
                }
            });
        });
        });





Code html :


<!-- En haut -->
<input name="numerosfacture" id="numeros_<?= $articless['id'] ?>" type="text" class="form-control pt-25 w-50" placeholder="00000" value="" required>
<!-- En haut -->

<div class="invoice-item d-flex border rounded mb-1">
                                                            <div class="invoice-item-filed row pt-1 px-1">
                                                                <div class="col-12 col-md-4 form-group">
                                                                    <label>Article :</label>
                                                                    <input name="article" id="article_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc" placeholder="Article" value="<?= $articless['article'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Cout :</label>
                                                                    <input name="cout" id="cout_<?= $articless['id'] ?>" type="number" class="form-control" placeholder="0" value="<?= $articless['cout'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Quantite :</label>    
                                                                    <input name="quantite" id="quantite_<?= $articless['id'] ?>" type="number" min="1" max="<?= $articless['quantite'] ?>" class="form-control" placeholder="0" value="<?= $articless['quantite'] ?>" required>
                                                                </div>
                                                                <div class="col-md-4 col-12 form-group">
                                                                    <label>Ref :</label>
                                                                    <input name="referencearticle" id="referencearticle_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc" placeholder="Réference" value="<?= $articless['referencearticle'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Remise:</label>
                                                                    <input name="remise" type="text" id="remise_<?= $articless['id'] ?>" class="form-control" placeholder="0" value="<?= $articless['remise'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Tva :</label>
                                                                    <input name="tva" type="text" id="tva_<?= $articless['id'] ?>" class="form-control" placeholder="0" value="<?= $articless['tva'] ?>" readonly>
                                                                </div>
                                                            </div>
                                                        </div>



et le . il sert a quoi ?

$(".article")


Je suis désole encore une fois si j'ai fait des erreurs grave.

J'ai ajouter le error mais rien dans la console.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
27 nov. 2020 à 00:03
pourquoi as-tu enlevé le code qui se trouvait dans les fonctions success et error de ton Ajax si je les ai mis ce n'est pas pour rien !!!!
en plus je t'ai expliqué comment déboguer un appel Ajax dans la console de Firefox...
Ça serait bien que tu nous montre ce que ton appel Ajax affiche dans la console ..
0
Youn_3451 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 27 nov. 2020 à 00:27
Je n'est pas très bien compris,

vous voulez que je remplace :


$.ajax({
            type: "POST",
            url: "../../../html/ltr/coqpix/php/insert_avoir_articles.php", 
            data: data,
            async: true,
            dataType: "json"
            }).done(function (reponse) {
                console.log("reponse ajax",reponse);

            }).fail(function (jqXHR, textStatus) {
                alert('Ajax error');
                console.log({textStatus}, {jqXHR})
            });



Quand je le remplace dans la console les erreurs suivante s'affiche :

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Youn_3451
27 nov. 2020 à 06:45
.. regarde l'exemple de ta discussion précédente...
Tu vois.. on en revient au copier/coller sans chercher à comprendre... On est en plein dedans...
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
27 nov. 2020 à 07:14
En plus je ne t'avais parlé que du code se trouvant dans le success et le error ( ou dans le done et fail )
mais bon,
tu peux remplacer la variable data par tes datas...
var data = {
                    numeros : sendNumeros,
                    article : sendArticle,
                    referencearticle : sendRef, 
                    cout : sendCout, 
                    quantite : sendQuantite,
                    tva : sendTva,
                    remise : sendRemise
                };
$.ajax({
            type: "POST",
            url: "../../../html/ltr/coqpix/php/insert_avoir_articles.php", 
            data: data,
            async: true,
            dataType: "json"
            }).done(function (reponse) {
                console.log("reponse ajax",reponse); // c'est de ça que je parlais

            }).fail(function (jqXHR, textStatus) {
                alert('Ajax error');  // c'est de ça que je parlais
                console.log({textStatus}, {jqXHR});  // c'est de ça que je parlais
            });
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
27 nov. 2020 à 13:39
Ah oui, ok je voit j'ai oublier de définir "data", c'est une faute d’inattention et nom du copier/coller, il était tard ducoup j'ai tout refait, mais l'alert error apparait et je ne comprend pas l'erreur dans la console:

Erreur console :




        $(document).ready(function(){      

        $("#button_save").click(function(){

            var arrNumeros = [];
            var arrArticle = [];
            var arrReferencearticle = [];
            var arrCout = [];
            var arrQuantite = [];
            var arrTva = [];
            var arrRemise = [];

            $(".numeros").each(function(){
            arrNumeros.push($(this).val());
            });

            $(".article").each(function(){
            arrArticle.push($(this).val());
            });

            $(".referencearticle").each(function(){
            arrReferencearticle.push($(this).val());
            });

            $(".cout").each(function(){
            arrCout.push($(this).val());
            });

            $(".quantite").each(function(){
            arrQuantite.push($(this).val());
            });

            $(".tva").each(function(){
            arrTva.push($(this).val());
            });

            $(".remise").each(function(){
            arrRemise.push($(this).val());
            });

            var sendNumeros = JSON.stringify(arrNumeros); 
            var sendArticle = JSON.stringify(arrArticle);
            var sendRef = JSON.stringify(arrReferencearticle);
            var sendCout = JSON.stringify(arrCout);
            var sendQuantite = JSON.stringify(arrQuantite);
            var sendTva = JSON.stringify(arrTva);
            var sendRemise = JSON.stringify(arrRemise);

            $.ajax({
            type: "POST",
            url: "../../../html/ltr/coqpix/php/insert_avoir_articles.php", 
            data: {
                    numeros : sendNumeros,
                    article : sendArticle,
                    referencearticle : sendRef, 
                    cout : sendCout, 
                    quantite : sendQuantite,
                    tva : sendTva,
                    remise : sendRemise,
            },
            async: true,
            dataType: "json"
            }).done(function (reponse) { // je ne sais pas si le reponse ici est bien placer , ou bien il faut le remplacer par data ? 
                alert('Ajax reussit');
                console.log("reponse ajax",reponse); // ici aussi

            }).fail(function (jqXHR, textStatus) {
                alert('Ajax error');
                console.log({textStatus}, {jqXHR})
            });
            
        });
        });



0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
27 nov. 2020 à 14:16
Dans la console, il faut déplier la ligne où se trouve le POST et regarder dans l'onglet REPONSE
ça te donnera des infos sur l'erreur ( qui se situe dans le code php )
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
27 nov. 2020 à 14:34
Il y a rien dans l'espace réponse:



Dans l'espace requête il y a la requête et elle me semble juste. et si je me trompe pas 5B = [
donc c'est vide.

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
27 nov. 2020 à 14:44
Et tu as retravaillé ton code php ?
Tu l'as remis en PDO et retourné le resultat de la requête au format json ?
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 27 nov. 2020 à 16:28
Oui, fin je pense pas que c'est juste, je ne sais pas comment je pourrai faire entrée valeur par valeur (boucle)


<?php
require_once 'config.php';
session_start();
$numArr = json_decode($_POST["numeros"]);
$artArr = json_decode($_POST["article"]);
$refArr = json_decode($_POST["referencearticle"]);
$coutArr = json_decode($_POST["cout"]);
$tvaArr = json_decode($_POST["tva"]);
$remiseArr = json_decode($_POST["remise"]);
$quantArr = json_decode($_POST["quantite"]);
$typ = "";
$id_session = $_SESSION['id_session']; //$_SESSION


for ($i = 0; $i < count($artArr); $i++) {

    if(($artArr[$i] != "")) {

        $sql = "INSERT INTO articles(article, referencearticle, cout, quantite, tva, remise, numeros, typ, id_session)";
        
        $datas = array(':article'=>$artArr[$i], 
                       ':referencearticle'=>$refArr[$i],
                       ':cout'=>$coutArr[$i],
                       ':quantite'=>$quantArr[$i],
                       ':tva'=>$tvaArr[$i],
                       ':remise'=>$remiseArr[$i],
                       ':numeros'=>$numArr[$i],
                       ':typ'=>$typ,
                       ':id_session'=>$id_session
        );

        try {

            $pdoSt = $bdd->prepare($sql);
            $pdoSt->execute($datas);

        } catch (Exception $e) {
            echo "Erreur : " . $e->getMessage();
        }
        } else{
            echo "Erreur php";
        }

}

?>



Config.php


<?php
    try{
        $bdd =new PDO('mysql:host=localhost;dbname=u243663731_; charset=utf8', 'root', '');
         $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
       $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
}   catch(PDOException $e) {
         die('Erreur : ' . $e->getMessage());
}

?>



Dans la console dans l'espace réponse il y a rien "Aucune donnée disponible en réponse à cette requête"
0
Youn_3451 > Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
28 nov. 2020 à 15:50
Je ne sais pas j'ai tenté plusieurs chose rien ne fonctionne ...
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
28 nov. 2020 à 16:58
Dans ta capture de la console .. on voit que les variables sont vides ....

As tu bien appliqué TOUT ce que je t'ai indiqué dans ma réponse https://forums.commentcamarche.net/forum/affich-36965364-multi-insertion-en-ajax#4
A savoir, mettre des CLASS sur tes INPUT pour les identifier ??

J'en doute, vu que dans ta réponse https://forums.commentcamarche.net/forum/affich-36965364-multi-insertion-en-ajax#5 je ne les vois pas. ..
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
Modifié le 29 nov. 2020 à 00:59
Bonsoir, si j'ai appliquer toute les class dans la question :


<!-- En haut -->
<input name="numerosfacture" id="numeros_<?= $articless['id'] ?>" type="text" class="form-control pt-25 w-50" placeholder="00000" value="" required>
<!-- En haut -->

<div class="invoice-item d-flex border rounded mb-1">
                                                            <div class="invoice-item-filed row pt-1 px-1">
                                                                <div class="col-12 col-md-4 form-group">
                                                                    <label>Article :</label>
                                                                    <input name="article" id="article_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc" placeholder="Article" value="<?= $articless['article'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Cout :</label>
                                                                    <input name="cout" id="cout_<?= $articless['id'] ?>" type="number" class="form-control" placeholder="0" value="<?= $articless['cout'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Quantite :</label>    
                                                                    <input name="quantite" id="quantite_<?= $articless['id'] ?>" type="number" min="1" max="<?= $articless['quantite'] ?>" class="form-control" placeholder="0" value="<?= $articless['quantite'] ?>" required>
                                                                </div>
                                                                <div class="col-md-4 col-12 form-group">
                                                                    <label>Ref :</label>
                                                                    <input name="referencearticle" id="referencearticle_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc" placeholder="Réference" value="<?= $articless['referencearticle'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Remise:</label>
                                                                    <input name="remise" type="text" id="remise_<?= $articless['id'] ?>" class="form-control" placeholder="0" value="<?= $articless['remise'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Tva :</label>
                                                                    <input name="tva" type="text" id="tva_<?= $articless['id'] ?>" class="form-control" placeholder="0" value="<?= $articless['tva'] ?>" readonly>
                                                                </div>
                                                            </div>
                                                        </div>



et je vous l'avais montrer un peu plus haut
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
29 nov. 2020 à 10:06
Tu vas me dire que cette ligne de code
 <input name="article" 
id="article_<?= $articless['id'] ?>" 
type="text" 
class="form-control invoice-item-desc" 
placeholder="Article" 
value="<?= $articless['article'] ?>" readonly>

contient, comme dans l'exemple que je t'avais donné
 <input name="article" 
id="article_<?= $articless['id'] ?>" 
type="text" 
class="form-control invoice-item-desc article" 
placeholder="Article" 
value="<?= $articless['article'] ?>" readonly>         

la class "article" ???
Soit faut que j'achète des lunettes .... soit.... c'est toi qui en a besoin....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
Modifié le 29 nov. 2020 à 14:32
Non je n'avais pas mit dans class article , mais par contre la je ne sais pas a quoi ca va servir pouvez vous m'expliquez si ça ne vous dérange pas ?

J'ai quand mème appliquer bêtement mais le résultat ne change pas!


<!-- En haut -->
<input name="numerosfacture" id="numeros_<?= $articless['id'] ?>" type="text" class="form-control pt-25 w-50 numeros" placeholder="00000" value="" required>
<!-- En haut -->

<div class="invoice-item d-flex border rounded mb-1">
                                                            <div class="invoice-item-filed row pt-1 px-1">
                                                                <div class="col-12 col-md-4 form-group">
                                                                    <label>Article :</label>
                                                                    <input name="article" id="article_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc article" placeholder="Article" value="<?= $articless['article'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Cout :</label>
                                                                    <input name="cout" id="cout_<?= $articless['id'] ?>" type="number" class="form-control cout" placeholder="0" value="<?= $articless['cout'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Quantite :</label>    
                                                                    <input name="quantite" id="quantite_<?= $articless['id'] ?>" type="number" min="1" max="<?= $articless['quantite'] ?>" class="form-control quantite" placeholder="0" value="<?= $articless['quantite'] ?>" required>
                                                                </div>
                                                                <div class="col-md-4 col-12 form-group">
                                                                    <label>Ref :</label>
                                                                    <input name="referencearticle" id="referencearticle_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc referencearticle" placeholder="Réference" value="<?= $articless['referencearticle'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Remise:</label>
                                                                    <input name="remise" type="text" id="remise_<?= $articless['id'] ?>" class="form-control remise" placeholder="0" value="<?= $articless['remise'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Tva :</label>
                                                                    <input name="tva" type="text" id="tva_<?= $articless['id'] ?>" class="form-control tva" placeholder="0" value="<?= $articless['tva'] ?>" readonly>
                                                                </div>
                                                            </div>
                                                        </div>



Dans la console ca me detecte une erreur de syntax




au niveau du ':numeros'=>... dans le php
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
29 nov. 2020 à 14:47
Encore une fois.... relis mon message #4 ... tu vas y lire la phrase suivate

y'a plus qu'à faire pareil pour chaque input de ton formulaire ...

Donc... ben..... y'a plus qu'à faire pareil pour tes autres champs...

Et pour les explications du " à quoi sert la class article " ... et bien, il faut que tu comprennes comment fonctionne jquery...
Voici de quoi commencer : https://www.w3schools.com/jquery/sel_class.asp
,
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
29 nov. 2020 à 14:55
J'ai fait pareil pour tout les inputs , j'ai relu et tout est bon mais rien n'a changer
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
Modifié le 29 nov. 2020 à 15:14
Faudra me montrer comment tu as fais... car je n'ai pas encore le dont de voir à distance par télépathie :-)

Ensuite, au niveau du message d'erreur que tu nous montres au niveau de la console, cela indique (comme c'est écrit...) qu'il y a un souci au niveau de te requête sql....
et si on regarde ce que tu as écrit

        $sql = "INSERT INTO articles(article, referencearticle, cout, quantite, tva, remise, numeros, typ, id_session)";
        

Oui.. il manque une bonne moitié de la requête.....

Si tu ne vois pas l'erreur, informe toi sur l'écriture d'une requête INSERT en SQL ...
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
29 nov. 2020 à 15:46
J'ai tout re ecrit et oui vous aviez raison.


<?php
require_once 'config.php';
session_start();
$numArr = json_decode($_POST["numeros"]);
$artArr = json_decode($_POST["article"]);
$refArr = json_decode($_POST["referencearticle"]);
$coutArr = json_decode($_POST["cout"]);
$tvaArr = json_decode($_POST["tva"]);
$remiseArr = json_decode($_POST["remise"]);
$quantArr = json_decode($_POST["quantite"]);
$typ = "";
$id_session = $_SESSION['id_session']; //$_SESSION


for ($i = 0; $i < count($artArr); $i++) {

    if(($artArr[$i] != "")) {

        $sql = "INSERT INTO articles (article, referencearticle, cout, quantite, tva, remise, numeros, typ, id_session) VALUES (?,?,?,?,?,?,?,?,?)";
        
        $datas = array(htmlspecialchars($artArr[$i]),
                       htmlspecialchars($refArr[$i]),
                       htmlspecialchars($coutArr[$i]),
                       htmlspecialchars($quantArr[$i]),
                       htmlspecialchars($tvaArr[$i]),
                       htmlspecialchars($remiseArr[$i]),
                       htmlspecialchars($numArr[$i]),
                       htmlspecialchars($typ),
                       htmlspecialchars($id_session)
        );

        try {

            $pdoSt = $bdd->prepare($sql);
            $pdoSt->execute($datas);

        } catch (Exception $e) {
            echo "Erreur : " . $e->getMessage();
        }
        } else{
            echo "Erreur php";
        }

}

?>



Maintenant le pb c'est que ca ne me signal plus aucun problème.

Dans Requete = Aucun paramètre pour cette requête
Dans reponse = Aucune donnée disponible en réponse à cette requête


Mais le truc c'est que quand dans le code php
je remplace
$numArr = json_decode($_POST["numeros"]);

par
$numArr = "123");


Ca me rentre dans la bdd dans la colonne numeros , pour l'article coca =2 et pour l'article ordinateur = 1


0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021 > Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
29 nov. 2020 à 15:51
Je sais peut etre pourquoi, je vais essaye quelque chose.
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021 > Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
29 nov. 2020 à 17:10
Bon ducouo j'ai essaye de faire quelque chose mais ca na pas marche le problème c'est que le input "numeros" n’était pas dans la boucle foreach donc j'ai décider de mette un input en hidden pour transmettre le numéros en mme temps avec un peu de js


<div data-repeater-list="group-a">
                                                <h6 class="invoice-number mr-75">Avoir N°</h6>
                                                <input name="numerosfacture" id="numeroshidden" type="text" class="form-control pt-25 w-50 numeros" placeholder="00000" value="" onkeyup="hidden()" required><br>
                                                    <div data-repeater-item>
                                                        <?php foreach($articles as $articless): ?>
                                                        <style>
                                                        .grey{
                                                            background-color: black;
                                                        }
                                                        </style>
                                                        <div class="invoice-item d-flex border rounded mb-1">
                                                            <div class="invoice-item-filed row pt-1 px-1">
                                                                <div class="col-12 col-md-4 form-group">
                                                                    <label>Article :</label>
                                                                    <input name="article" id="article_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc article" placeholder="Article" value="<?= $articless['article'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Cout :</label>
                                                                    <input name="cout" id="cout_<?= $articless['id'] ?>" type="text" class="form-control cout" placeholder="0" value="<?= $articless['cout'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Quantite :</label>    
                                                                    <input name="quantite" id="quantite_<?= $articless['id'] ?>" type="number" min="1" max="<?= $articless['quantite'] ?>" class="form-control quantite" placeholder="0" value="<?= $articless['quantite'] ?>" required>
                                                                </div>
                                                                <div class="col-md-4 col-12 form-group">
                                                                    <label>Ref :</label>
                                                                    <input name="referencearticle" id="referencearticle_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc referencearticle" placeholder="Réference" value="<?= $articless['referencearticle'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Remise:</label>
                                                                    <input name="remise" type="text" id="remise_<?= $articless['id'] ?>" class="form-control remise" placeholder="0" value="<?= $articless['remise'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Tva :</label>
                                                                    <input name="tva" type="text" id="tva_<?= $articless['id'] ?>" class="form-control tva" placeholder="0" value="<?= $articless['tva'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <input name="numeros" type="hidden" id="numeros_<?= $articless['id'] ?>" class="form-control numeros" readonly>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <?php endforeach; ?>                                              
                                                    </div>
                                                </div>



Code js pour mettre le numeros dans l'input hidden


function hidden(){
    var c = document.getElementById("numeroshidden").value;
    document.getElementById("numeros_<?= $articless['id'] ?>").innerHTML = c;
}




Je ne sais comment je peut faire xD
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
29 nov. 2020 à 17:14
Commence par modifier légèrement le script Javascript comme ceci
$(document).ready(function(){      

    $("#button_save").click(function(){

        var arrNumeros = [];
        var arrArticle = [];
        var arrReferencearticle = [];
        var arrCout = [];
        var arrQuantite = [];
        var arrTva = [];
        var arrRemise = [];

        $(".numeros").each(function(){
          arrNumeros.push($(this).val());
        });

        $(".article").each(function(){
          arrArticle.push($(this).val());
        });

        $(".referencearticle").each(function(){
          arrReferencearticle.push($(this).val());
        });

        $(".cout").each(function(){
          arrCout.push($(this).val());
        });

        $(".quantite").each(function(){
          arrQuantite.push($(this).val());
        });

        $(".tva").each(function(){
          arrTva.push($(this).val());
        });

        $(".remise").each(function(){
          arrRemise.push($(this).val());
        });

        var sendNumeros = JSON.stringify(arrNumeros); 
        var sendArticle = JSON.stringify(arrArticle);
        var sendRef = JSON.stringify(arrReferencearticle);
        var sendCout = JSON.stringify(arrCout);
        var sendQuantite = JSON.stringify(arrQuantite);
        var sendTva = JSON.stringify(arrTva);
        var sendRemise = JSON.stringify(arrRemise);

        var datas = {
                numeros : sendNumeros,
                article : sendArticle,
                referencearticle : sendRef, 
                cout : sendCout, 
                quantite : sendQuantite,
                tva : sendTva,
                remise : sendRemise,
              };
        
        // Affiche dans la console les données envoyées dans la requête Ajax
        console.log('Données envoyées dans la requete : ", datas); 
        
        $.ajax({
        type: "POST",
        url: "../../../html/ltr/coqpix/php/insert_avoir_articles.php", 
        data: datas, // correspond à la variable datas inialisée juste au dessus
        async: true,
        dataType: "json"
        }).done(function (reponse) { // reponse est le nom de la variable qui contiendra la réponse du script php 
            console.log("reponse ajax",reponse); // Affiche dans la console la réponse du script ajax php
            alert('Ajax reussit ... merci de regarder dans la console ce qui s'y affiche !'); 
        }).fail(function (jqXHR, textStatus) {
            alert('Ajax error');
            console.log({textStatus}, {jqXHR})
        });
        
    });
});


Côté PHP tu peux modifier un peu le script comme ceci également

<?php
session_start(); // toujours le mettre en premier dans un script php !

//connexion à la bdd
require_once 'config.php';

//récupération PROPRE des variables AVANT de les utiliser
$numArr = !empty($_POST["numeros"]) ? json_decode($_POST["numeros"]) : NULL;
$artArr = !empty($_POST["article"]) ? json_decode($_POST["article"]) : NULL;
$refArr = !empty($_POST["referencearticle"]) ? json_decode($_POST["referencearticle"]): NULL;
$coutArr = !empty($_POST["cout"]) ? json_decode($_POST["cout"]): NULL;
$tvaArr = !empty($_POST["tva"]) ? json_decode($_POST["tva"]): NULL;
$remiseArr = !empty($_POST["remise"]) ?json_decode($_POST["remise"]): NULL;
$quantArr = !empty($_POST["quantite"]) ? json_decode($_POST["quantite"]): NULL;
$typ = "";
$id_session = !empty($_SESSION['id_session']) ? $_SESSION['id_session'] : NULL ; //$_SESSION

if(!$id_session)){
   // id_session est vide !
   $result = array('ERROR'=> "id_session est vide !!", 'SESSION'=>$_SESSION) ;
   echo json_encode($result); // on renvoi le result dans le javascript au format json
   exit;
}

// Ne pas hésiter à faire des retours à la ligne dans ta requête SQL pour la rendre plus lisible...
$sql = "INSERT INTO articles 
        (article, referencearticle, cout, quantite, tva, remise, numeros, typ, id_session) 
        VALUES (?,?,?,?,?,?,?,?,?)";

if(!empty($artArr)){
  for ($i = 0; $i < count($artArr); $i++) {

    if((!empty($artArr[$i]))) {

      $datas = array($artArr[$i],
                     $refArr[$i],
                     $coutArr[$i],
                     $quantArr[$i],
                     $tvaArr[$i],
                     $remiseArr[$i],
                     $numArr[$i],
                     $typ,
                     $id_session
                    );

      try {
        $pdoSt = $bdd->prepare($sql);
        $result['SUCCESS'][] = $pdoSt->execute($datas);
      } catch (Exception $e) {
         $result[] =  array('ERROR'=>  $e->getMessage(), 'DATAS'=>$datas );
      }
    } else{
        $result[] = array('ERROR'=> "variable artArr[".$i."] vide !!") ;
    }

  }
}else{
  $result = array('ERROR'=> "variable vide !!", 'POST'=>$_POST) ;
}

echo json_encode($result); // on renvoi le result dans le javascript au format json
exit;
?>


Ca devrait te permettre de voir une réponse dans la console javascript et ainsi expliquer tes éventuels soucis...




0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
Modifié le 29 nov. 2020 à 18:09
Non il n'y a pas de reponse,

Je pense que le probleme vien de mon form html

Plus précieusement de mon input numeros
parce que quand je modifie dans le php :
$numArr = !empty($_POST["numeros"]) ? json_decode($_POST["numeros"]) : NULL;

par
$numArr = "1214125";

L'erreur n'apparait plus. (mais ca ne marche pas quand meme)

Code html


<div class="invoice-product-details ">
                                            
                                                <div data-repeater-list="group-a">
                                                <h6 class="invoice-number mr-75">Avoir N°</h6>
                                                <input name="numerosfacture" id="numeros_<?php foreach($articles as $articless): ?><?= $articless['id'] ?><?php endforeach; ?>" type="text" class="form-control pt-25 w-50 numeros" placeholder="00000" value="" required><br>
                                                    <div data-repeater-item>
                                                        <?php foreach($articles as $articless): ?>
                                                        <div class="invoice-item d-flex border rounded mb-1">
                                                            <div class="invoice-item-filed row pt-1 px-1">
                                                                <div class="col-12 col-md-4 form-group">
                                                                    <label>Article :</label>
                                                                    <input name="article" id="article_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc article" placeholder="Article" value="<?= $articless['article'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Cout :</label>
                                                                    <input name="cout" id="cout_<?= $articless['id'] ?>" type="text" class="form-control cout" placeholder="0" value="<?= $articless['cout'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                    <label>Quantite :</label>    
                                                                    <input name="quantite" id="quantite_<?= $articless['id'] ?>" type="number" min="1" max="<?= $articless['quantite'] ?>" class="form-control quantite" placeholder="0" value="<?= $articless['quantite'] ?>" required>
                                                                </div>
                                                                <div class="col-md-4 col-12 form-group">
                                                                    <label>Ref :</label>
                                                                    <input name="referencearticle" id="referencearticle_<?= $articless['id'] ?>" type="text" class="form-control invoice-item-desc referencearticle" placeholder="Réference" value="<?= $articless['referencearticle'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Remise:</label>
                                                                    <input name="remise" type="text" id="remise_<?= $articless['id'] ?>" class="form-control remise" placeholder="0" value="<?= $articless['remise'] ?>" readonly>
                                                                </div>
                                                                <div class="col-md-3 col-12 form-group">
                                                                <label>Tva :</label>
                                                                    <input name="tva" type="text" id="tva_<?= $articless['id'] ?>" class="form-control tva" placeholder="0" value="<?= $articless['tva'] ?>" readonly>
                                                                </div>
                                                            </div>
                                                        </div>
                                                        <?php endforeach; ?>                                              
                                                    </div>
                                                </div>
                                        </div>



L'input n'est pas dans la boucle, mais si je le met ducoup l'input va se dupliquer.
J'ai essaye de faire quelque chose avec un hidden mais sans succès
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
29 nov. 2020 à 19:45
A quoi il te sert ton champ "numeros" ?
 <input name="numerosfacture" id="numeros_<?php foreach($articles as $articless): ?><?= $articless['id'] ?><?php endforeach; ?>" 
 type="text" class="form-control pt-25 w-50 numeros" placeholder="00000" value="" required><br>

Pourquoi l'avoir sorti de la boucle ??

et surtout.. pourquoi avoir utilisé un foreach pour créer son "id" ??
id="numeros_<?php foreach($articles as $articless): ?><?= $articless['id'] ?><?php endforeach; ?>"

c'est quoi ce truc à la noix que tu nous fais là ??
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 29 nov. 2020 à 20:12
Enfaite, je veut que le numeros soit le meme pour tous les articles , parce que par la suite dans une autre page , je selectionne les articles qui on comme numeros , le numeros de l'avoirs

et quand j'y repense ca ne sert a rien de faire une boucle pou numeros parce que pour tout les articles c'est le meme numeros

HTML :
Donc je remplace
<input name="numeros" id="numeros_<?php foreach($articles as $articless): ?><?= $articless['id'] ?><?php endforeach; ?>" 
 type="text" class="form-control pt-25 w-50 numeros" placeholder="00000" value="" required><br>

par :
<input name="numeros" id="numeros" type="text" class="form-control pt-25 w-50 numeros" placeholder="00000" value="" required><br>


JS je remplace :


$(document).ready(function(){      

    $("#button_save").click(function(){

        var arrNumeros = [];
        var arrArticle = [];
        var arrReferencearticle = [];
        var arrCout = [];
        var arrQuantite = [];
        var arrTva = [];
        var arrRemise = [];

        $(".numeros").each(function(){
          arrNumeros.push($(this).val());
        });

        $(".article").each(function(){
          arrArticle.push($(this).val());
        });

        $(".referencearticle").each(function(){
          arrReferencearticle.push($(this).val());
        });

        $(".cout").each(function(){
          arrCout.push($(this).val());
        });

        $(".quantite").each(function(){
          arrQuantite.push($(this).val());
        });

        $(".tva").each(function(){
          arrTva.push($(this).val());
        });

        $(".remise").each(function(){
          arrRemise.push($(this).val());
        });

        var sendNumeros = JSON.stringify(arrNumeros); 
        var sendArticle = JSON.stringify(arrArticle);
        var sendRef = JSON.stringify(arrReferencearticle);
        var sendCout = JSON.stringify(arrCout);
        var sendQuantite = JSON.stringify(arrQuantite);
        var sendTva = JSON.stringify(arrTva);
        var sendRemise = JSON.stringify(arrRemise);

        var datas = {
                numeros : sendNumeros,
                article : sendArticle,
                referencearticle : sendRef, 
                cout : sendCout, 
                quantite : sendQuantite,
                tva : sendTva,
                remise : sendRemise,
              };
        
        // Affiche dans la console les données envoyées dans la requête Ajax
        console.log('Données envoyées dans la requete : ", datas'); 
        
        $.ajax({
        type: "POST",
        url: "../../../html/ltr/coqpix/php/insert_avoir_articles.php", 
        data: datas, // correspond à la variable datas inialisée juste au dessus
        async: true,
        dataType: "json"
        }).done(function (reponse) { // reponse est le nom de la variable qui contiendra la réponse du script php 
            console.log("reponse ajax",reponse); // Affiche dans la console la réponse du script ajax php
            alert('Ajax reussit ... merci de regarder dans la console ce qui sy affiche !'); 
        }).fail(function (jqXHR, textStatus) {
            alert('Ajax error');
            console.log({textStatus}, {jqXHR})
        });
        
    });
});



par :


$(document).ready(function(){      

    $("#button_save").click(function(){

        var arrNumeros = $("numeros");
        var arrArticle = [];
        var arrReferencearticle = [];
        var arrCout = [];
        var arrQuantite = [];
        var arrTva = [];
        var arrRemise = [];

        $(".article").each(function(){
          arrArticle.push($(this).val());
        });

        $(".referencearticle").each(function(){
          arrReferencearticle.push($(this).val());
        });

        $(".cout").each(function(){
          arrCout.push($(this).val());
        });

        $(".quantite").each(function(){
          arrQuantite.push($(this).val());
        });

        $(".tva").each(function(){
          arrTva.push($(this).val());
        });

        $(".remise").each(function(){
          arrRemise.push($(this).val());
        });

        var sendNumeros = JSON.stringify(arrNumeros); 
        var sendArticle = JSON.stringify(arrArticle);
        var sendRef = JSON.stringify(arrReferencearticle);
        var sendCout = JSON.stringify(arrCout);
        var sendQuantite = JSON.stringify(arrQuantite);
        var sendTva = JSON.stringify(arrTva);
        var sendRemise = JSON.stringify(arrRemise);

        var datas = {
                numeros : sendNumeros,
                article : sendArticle,
                referencearticle : sendRef, 
                cout : sendCout, 
                quantite : sendQuantite,
                tva : sendTva,
                remise : sendRemise,
              };
        
        // Affiche dans la console les données envoyées dans la requête Ajax
        console.log('Données envoyées dans la requete : ", datas'); 
        
        $.ajax({
        type: "POST",
        url: "../../../html/ltr/coqpix/php/insert_avoir_articles.php", 
        data: datas, // correspond à la variable datas inialisée juste au dessus
        async: true,
        dataType: "json"
        }).done(function (reponse) { // reponse est le nom de la variable qui contiendra la réponse du script php 
            console.log("reponse ajax",reponse); // Affiche dans la console la réponse du script ajax php
            alert('Ajax reussit ... merci de regarder dans la console ce qui sy affiche !'); 
        }).fail(function (jqXHR, textStatus) {
            alert('Ajax error');
            console.log({textStatus}, {jqXHR})
        });
        
    });
});



et dans le php j'enleve le [$i]
dans

$datas = array($artArr[$i],
                     $refArr[$i],
                     $coutArr[$i],
                     $quantArr[$i],
                     $tvaArr[$i],
                     $remiseArr[$i],
                     $numArr,
                     $typ,
                     $id_session
                    );




Deja dans la console les erreurs apparaissent :

Dans reponse / apercu /

Recoverable fatal error: Object of class stdClass could not be converted to string in C:\wamp64\www\html\ltr\coqpix\php\insert_avoir_articles.php on line 48

Je trouves que la requete et bizzarre :

numeros "{\"length\":0,\"prevObject\":{\"0\":{\"location\":{\"href\":\"http://localhost/html/ltr/coqpix/app-avoir-add.php?numfacture=44\",\"origin\":\"http://localhost\",\"protocol\":\"http:\",\"host\":\"localhost\",\"hostname\":\"localhost\",\"port\":\"\",\"pathname\":\"/html/ltr/coqpix/app-avoir-add.php\",\"search\":\"?numfacture=44\",\"hash\":\"\"},\"jQuery33108784852941267361\":{\"events\":{\"click\":[{\"type\":\"click\",\"origType\":\"click\",\"guid\":1,\"selector\":\"[data-dismiss=\\\"alert\\\"]\",\"needsCont…":\"\"}],\"mouseover\":[{\"type\":\"mouseover\",\"origType\":\"mouseenter\",\"guid\":26,\"selector\":\".search-list+li\",\"needsContext\":false,\"namespace\":\"\"}],\"change\":[{\"type\":\"change\",\"origType\":\"change\",\"guid\":51,\"selector\":\".dt-checkboxes-select-all+input\",\"needsContext\":false,\"namespace\":\"\"},{\"type\":\"change\",\"origType\":\"change\",\"guid\":54,\"selector\":\".invoice-item-select\",\"needsContext\":false,\"namespace\":\"\"}]},\"focusout\":2,\"focusin\":2}},\"length\":1}}"
article "[\"Ordinateur\",\"Coca\"]"
referencearticle "[\"E0198\",\"\"]"
cout "[\"1000\",\"10\"]"
quantite "[\"1\",\"1\"]"
tva "[\"20+%\",\"20+%\"]"
remise "[\"0+%\",\"0+%\"]"
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
29 nov. 2020 à 20:11
Il vient d'où ce numéro ? C'est toi qui le rentre à la main ou il vient de la bdd ??

Ensuite, si le numéro n'est pas un array... le json.stringify n'est pas utile côté javascript
et par conséquent, le json_decode devient inutile cote php.


0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
29 nov. 2020 à 20:13
Non, je le rentre manuellement, il ne vient pas de la base de données,
Je peut te faire une mini video si tu veut ?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
29 nov. 2020 à 20:19
pas besoin.

Retire simplement les transformations json pour ce champ tel que je te l'ai écrit dans mon précédent message.

Et si tu as toujours des soucis, pense à bien regarder dans la console tout ce qui s'y affiche... c'est grâce à la console que tu pourras débuguer ton code et trouver la cause des éventuels problèmes.
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 29 nov. 2020 à 20:34
On est d'accord que dans le js si j'enleve.


$(".numeros").each(function(){
          arrNumeros.push($(this).val());
        });

//et 

var sendNumeros = JSON.stringify(arrNumeros);

//donc ca donne 

$(document).ready(function(){      

    $("#button_save").click(function(){

        var arrNumeros = $("numeros");
        var arrArticle = [];
        var arrReferencearticle = [];
        var arrCout = [];
        var arrQuantite = [];
        var arrTva = [];
        var arrRemise = [];


        $(".article").each(function(){
          arrArticle.push($(this).val());
        });

        $(".referencearticle").each(function(){
          arrReferencearticle.push($(this).val());
        });

        $(".cout").each(function(){
          arrCout.push($(this).val());
        });

        $(".quantite").each(function(){
          arrQuantite.push($(this).val());
        });

        $(".tva").each(function(){
          arrTva.push($(this).val());
        });

        $(".remise").each(function(){
          arrRemise.push($(this).val());
        });

        var sendArticle = JSON.stringify(arrArticle);
        var sendRef = JSON.stringify(arrReferencearticle);
        var sendCout = JSON.stringify(arrCout);
        var sendQuantite = JSON.stringify(arrQuantite);
        var sendTva = JSON.stringify(arrTva);
        var sendRemise = JSON.stringify(arrRemise);

        var datas = {
                numeros : arrNumeros,
                article : sendArticle,
                referencearticle : sendRef, 
                cout : sendCout, 
                quantite : sendQuantite,
                tva : sendTva,
                remise : sendRemise,
              };
        
        // Affiche dans la console les données envoyées dans la requête Ajax
        console.log('Données envoyées dans la requete : ", datas'); 
        
        $.ajax({
        type: "POST",
        url: "../../../html/ltr/coqpix/php/insert_avoir_articles.php", 
        data: datas, // correspond à la variable datas inialisée juste au dessus
        async: true,
        dataType: "json"
        }).done(function (reponse) { // reponse est le nom de la variable qui contiendra la réponse du script php 
            console.log("reponse ajax",reponse); // Affiche dans la console la réponse du script ajax php
            alert('Ajax reussit ... merci de regarder dans la console ce qui sy affiche !'); 
        }).fail(function (jqXHR, textStatus) {
            alert('Ajax error');
            console.log({textStatus}, {jqXHR})
        });
        
    });
});




et pour le php j'ai enlever les json


$numArr = !empty($_POST["numeros"]) ? $_POST["numeros"] : NULL;

// et le [$i]

$numArr,



Mais ca ma donner une erreur que je ne comprend pas :

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021
29 nov. 2020 à 20:38
Arrgghhhhh...

 var arrNumeros = $("numeros");

Cette ligne de code signifie que tu prends tous les éléments de "type" numéros ( éléments qui n'existent pas en html ) et les stocke dans la variable arrNumeros .... donc... ben... ça ne marche pas !!

Plutôt que de te donner la réponse, je vais te faire réflechir un peu.. (ça va être dur.. mais bon, j'ai de l'espoir à revendre.. :-) )

Donc, pour commencer ...

Comment "cible" t'on un éléments html via son ID en jquery ?
Ensuite, en Jquery, comment récupère t'on la VALEUR de cet élément ?

Si tu réponds correctement à ces deux questions, ça devrait grandement t'aider à avancer...
0
Youn_3451 Messages postés 39 Date d'inscription lundi 19 octobre 2020 Statut Membre Dernière intervention 6 avril 2021 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
29 nov. 2020 à 20:51
Youpiiiiii j'ai trouver , dans mes recherches je suis partie loin mais ct tout simple xD


var arrNumeros = document.getElementById("numeros").value;



img console :



j'en peut plus xD
0