[RESOLU] bouton de modal avec nom différent

Petit nouveau ! | 8 Messages

25 janv. 2021, 10:32

Bonjour,
je requiert votre aide aujourd'hui car je suis bloqué sur un problème que je n'arrive pas à résoudre depuis un moment. J'ai fais pas mal de recherche et je n'arrive pas à trouver.

Mon application permet de gérer des fiche de frais. Le comptable doit appuyer sur le bouton "valider" puis plus tard "rembourser". Lorsque l'on appui sur le bouton "valider" une modal s'ouvre pour être sur que le comptable veut valider la ligne.
Chaque bouton ont un nom différent MAIS je n'arrive pas a faire en sorte que les boutons de la modale valide la bonne ligne. POURQUOI???
J'appuis sur le bouton valider de la 3ème ligne, la modal s'ouvre mais c'est la première ligne qui se valide. Je suppose que le problème vient du fait que les boutons ont tous le même noms mais je n'arrive pas a changer la chose de la même façon que les boutons de base.
Je mets mon code ci-dessous pour plus de compréhension.

Code : Tout sélectionner

<?php require_once 'mesClasses/Cvisiteurs.php'; require_once 'includes/head.php'; require_once 'mesClasses/CligneFHFs.php'; require_once 'mesClasses/CficheFrais.php'; require_once 'includes/functions.php'; $ofraisForfaits = new CfraisForfaits(); $oFicheFraiss = new CficheFraiss(); $oLigneFHFs = new CligneFraisFHFs(); $oLigneFFs = new CligneFFs(); if(isset($_SESSION['mois'])){ ?> <div class="container"> <table class='table table-hover'> <thead> <tr class='bg-info'> <th>Etat de la fiche</th> <th>Identifiant du Visiteur</th> <th>Mois</th> <th>Nombre de justificatifs</th> <th>Total validé en fonction justificatifs</th> <th>Total des FF et FHF</th> <th>Validation des Frais et mise en paiement</th> <th>Frais remboursés</th> </tr> </thead> <tbody> <?php $ocollFicheFraisByMois = $oFicheFraiss -> getFFByMois($date); $ocollfraisForfaits = $ofraisForfaits ->getCollFraisForfait(); if($ocollFicheFraisByMois != null){ foreach ($ocollFicheFraisByMois as $LigneFF){ $nombtnV ='btnV'.$LigneFF->idVisiteur; $nombtnR ='btnR'.$LigneFF->idVisiteur; $nombtnVa; $nombtnRb; //var_dump($nombtnV); //var_dump($nombtnR) ?> <form id="formTableau" class="form-horizontal" role="form" method="POST"> <tr> <td><?=$LigneFF->idEtat?></td> <td><?=$LigneFF->idVisiteur?></td> <td><?=$LigneFF->mois?></td> <td><?= $LigneFF->nbJustificatifs != 0 ?'<input class="form-control" name="totalJustificatif" placeholder="Entrer justificatif validé" value="'.$LigneFF->nbJustificatifs.'" disabled required type="number" min="0" step="1">' : '<input class="form-control" name="totalJustificatif" placeholder="Entrer justificatif validé" required type="number" min="0" step="1">' ?></td> <td><?= $LigneFF->montantValide != 0 ?'<input class="form-control" name="totalMontant" placeholder="Entrer montant validé" value="'.$LigneFF->montantValide.'" disabled required type="number" min="0" step="1">' :'<input class="form-control" name="totalMontant" placeholder="Entrer montant validé" required type="number" min="0" step="1">'?></td> <td><?=$LigneSomme = $oLigneFHFs ->getTotalFHF ($LigneFF -> idVisiteur, $LigneFF -> mois) + $oLigneFFs ->getTotalFF($LigneFF -> idVisiteur, $LigneFF -> mois, $ocollfraisForfaits)?></td> <td><button type="submit" name="<?=$nombtnV?>" <?=$LigneFF->idEtat =='CR'?'class="btn btn-info"':'class="btn btn-danger" disabled'?> data-toggle="modal" data-target="#myModal1">Valider</button></td> <td><button type="submit" name="<?=$nombtnR?>" <?=$LigneFF->idEtat =='VA'?'class="btn btn-info"':'class="btn btn-danger" disabled'?> data-toggle="modal" data-target="#myModal2">Rembourser</button></td> </tr> <?php if(isset($_POST["$nombtnV"])) { if(isset($_POST["totalJustificatif"]) && isset($_POST["totalMontant"])) { //var_dump($nombtnV); $oLigneFHFs = new CligneFraisFHFs; try { $oFicheFraiss->Validation($LigneFF->idVisiteur, $LigneFF->mois, $_POST["totalJustificatif"], $_POST["totalMontant"]); } catch (Exception $ex) { $errorMsg = "Erreur lors de la validation dans la base.".$ex->getMessage()." Prévenir l'administrateur."; } } } if(isset($_POST["$nombtnR"])) { //var_dump($nombtnRb); $oLigneFHFs = new CligneFraisFHFs; try { $oFicheFraiss->Remboursement($LigneFF->idVisiteur, $LigneFF->mois); } catch (Exception $ex) { $errorMsg = "Erreur lors de la validation dans la base.".$ex->getMessage()." Prévenir l'administrateur."; } } ?> <!-- Modal valider --> <div class="modal fade" id="myModal1" role="dialog"> <div class="modal-dialog"> <!--Contenue du Modal--> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">&times;</button> <h4 class="modal-title" style="color:#FF0000">Avertissement</h4> </div> <div class="modal-body"> <p>Voulez vous vraiment valider la fiche de frais ?</p> </div> <div class="modal-footer"> <button type="submit" name="btnVa" class="btn btn-info btn-lg">Passer la fiche à l'état "valider"</button> <button type="button" class="btn btn-danger" data-dismiss="modal">NON</button> </div> </div> </div> </div> <!--Fin Modal--> <!-- Modal rembourser --> <div class="modal fade" id="myModal2" role="dialog"> <div class="modal-dialog"> <!--Contenue du Modal--> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">&times;</button> <h4 class="modal-title" style="color:#FF0000">Avertissement</h4> </div> <div class="modal-body"> <p>Voulez vous vraiment rembourser la fiche de frais ?</p> </div> <div class="modal-footer"> <button type="submit" name="btnRb" class="btn btn-info btn-lg">Passer la fiche à l'état "rembourser"</button> <button type="button" class="btn btn-danger" data-dismiss="modal">NON</button> </form> </div> </div> </div> </div> <!--Fin Modal--> <?php } } } ?> </tbody> </table>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 janv. 2021, 18:51

Salutations !

En fait, le problème c'est que tu as bien deux fenêtres modales distinctes, pour la validation et le remboursement, qui ont chacune un nom différent. Cependant avec ta boucle, tu vas créer autant de ligne que tu as de frais à gérer et chacune de ces lignes va ouvrir l'une ou l'autre de tes fenêtres modales, sans aucune différence avec la ligne qui précède ou celle qui la suit qui exécute l'appel de la même façon.

En l'état, il n'y a donc aucune façon une fois la fenêtre ouverte de savoir par quelle ligne est à l'origine de son ouverture. Selon la librairie que tu utilises pour gérer tes fenêtres modales, il faudrait voir comment il est possible de lui transmettre des paramètres. Tu pourras ainsi distinguer les appels des différentes lignes et adapter le traitement en conséquence pour qu'il concerne les éléments de la ligne en question :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 8 Messages

25 janv. 2021, 19:02

D'accord, donc je devrais plutôt envoyer des données avec input caché ?
Mais comment les récupérer et les traiter dans ma modale ?

Mammouth du PHP | 2703 Messages

25 janv. 2021, 19:18

une solution plus simple qu'une modale :
https://stackoverflow.com/questions/651 ... dialog-box

Petit nouveau ! | 8 Messages

25 janv. 2021, 19:23

D'accord merci, je regarderais demain.

Merci beaucoup pour votre aide.

Petit nouveau ! | 8 Messages

25 janv. 2021, 19:24

D'accord merci, je regarderais demain.

Merci beaucoup pour votre aide.

Petit nouveau ! | 8 Messages

26 janv. 2021, 12:38

une solution plus simple qu'une modale :
https://stackoverflow.com/questions/651 ... dialog-box
Merci beaucoup ça marche =D> :D