Validation multiple avec mise à jour

Petit nouveau ! | 3 Messages

22 juil. 2020, 15:42

Bonjour, j'ai une liste de tableau qui contient des commandes dont on doit valider la réception et la transmission.L'utilisateur doit cocher les cases des commandes à envoyer, remplir les date de réception et de transmission, remplir la péniche pour chaque commande cochée et le programme doit mettre à jour la table en fonction du numerocompte. Le soucis est au moment de mise à jour le programme enregistre la dernière péniche sur toutes les commandes cochées.
Voici le code:

Code : Tout sélectionner

<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>Recherche</title> <style> table{width:100%;border-collapse:collapse} table tr,table th,table td{border:1px solid black;} table tr td{text-align:center;padding:1em;} </style> </head> <body> <?php include('connection_database.php');?> <form method='post' action='#'> <label for="date_reception_log">Date réception : </label> <input type='date' placeholder='date_reception_log' name="date_reception_log"/> <label for="date_transmission_at">Date transmission : </label> <input type='date' placeholder='date_transmission_at' name="date_transmission_at"/> <input type='submit' value="Envoyer" name="Envoyer"/> <table> <thead> <tr> <th>Choisir</th> <th>Agence</th> <th>Nom de l'agent</th> <th>Date Commande</th> <th>Prénom</th> <th>Nom</th> <th>N°Compte</th> <th>Monture</th> <th>Péniche</th> </th> </tr> </thead> <tbody> <?php $sql='select * from commande WHERE date_reception_log IS NULL AND date_transmission_log IS NOT NULL'; $params=[]; $resultats=$connect->prepare($sql); $resultats->execute($params); if($resultats->rowCount()>0){ while($d=$resultats->fetch(PDO::FETCH_ASSOC)){ ?> <tr> <td><input type='checkbox' name='listeCmd[]' value="<?php echo $d['numerocompte']; ?>"></td> <td><?=$d['agence']?></td> <td><?=$d['nomagent']?></td> <td><?=$d['datecommande']?></td> <td><?=$d['prenom']?></td> <td><?=$d['nom']?></td> <td><?=$d['numerocompte']?></td> <td><?=$d['monture']?></td> <td><input type='varchar' id="peniche" name="peniche" value="<?php echo $d['peniche']; ?>"></td></tr> <?php } $resultats->closeCursor(); } else echo '<tr><td colspan=4>aucun résultat trouvé</td></tr>'. $connect=null; ?> </tbody> </table> </form> <?php if(isset($_POST['Envoyer'])) { try{ $serveur = "localhost"; $dbname = "suivicommande"; $user = "root"; $pass = ""; $date_reception_log = $_POST["date_reception_log"]; $date_transmission_at = $_POST["date_transmission_at"]; $peniche = $_POST["peniche"]; $lesNumeroCompte; echo 'date 1 ' .$_POST["date_reception_log"]; echo 'date 2 ' .$_POST["date_transmission_at"]; echo 'peniche ' .$_POST["peniche"]; if(!isset($_POST['date_reception_log']) || $_POST['date_reception_log']==''){ echo '<script>alert("Veuillez saisir la date reception")</script>'; return; } if(!isset($_POST['date_transmission_at']) || $_POST['date_transmission_at']==''){ echo '<script>alert("Veuillez saisir la date transmission")</script>'; return; } if(!isset($_POST['peniche']) || $_POST['peniche']==''){ echo '<script>alert("Veuillez saisir la péniche SVP")</script>'; return; } if(empty($_POST["listeCmd"])){ echo '<script>alert("Veuillez choisir une commande")</script>'; return; } else{ $lesNumeroCompte = $_POST["listeCmd"]; } $liste = "("; //On se connecte à la BDD $dbco = new PDO("mysql:host=$serveur;dbname=$dbname",$user,$pass); $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //On insère les données reçues echo 'date_reception_log : '.$date_reception_log; echo 'date_transmission_at : '.$date_transmission_at; echo 'peniche : '.$peniche; // on cree la liste des id que l'on doit mettre à jour foreach ($lesNumeroCompte as $numerocompte) { echo 'aaaaa ' . $numerocompte; $liste .= "'". $numerocompte . "',"; } $liste = substr($liste, 0, -1); $liste .= ")"; echo 'liste : '.$liste; $sth = $dbco->prepare(" UPDATE commande SET date_reception_log=:date_reception_log, date_transmission_at=:date_transmission_at, peniche=:peniche WHERE numerocompte in " .$liste ); $sth->bindParam(':date_reception_log',$date_reception_log,PDO::PARAM_STR); $sth->bindParam(':date_transmission_at',$date_transmission_at,PDO::PARAM_STR); $sth->bindParam(':peniche',$peniche,PDO::PARAM_STR); // $sth->bindParam(':numerocompte',$liste,PDO::PARAM_STR); $sth->execute(); //On renvoie l'utilisateur vers la page de remerciement header("Location:espacelogistique.php"); } catch(PDOException $e){ echo 'Impossible de traiter les données. Erreur : '.$e->getMessage(); } } ?> </body> </html>
Merci d'avance!
Modifié en dernier par binousha_1022 le 22 juil. 2020, 16:50, modifié 1 fois.

Mammouth du PHP | 1357 Messages

22 juil. 2020, 15:54

<td><input type='varchar' id="peniche" name="peniche" value="<?php echo $d['peniche']; ?>"></td></tr>
est dans la boucle donc il n'y a pas un $_POST['peniche'] par ligne du tableau mais un seul $_POST['peniche']

avec <td><input type='checkbox' name='listeCmd[]' value="<?php echo $d['numerocompte']; ?>"></td>
il y a bien plusieurs id.

Petit nouveau ! | 3 Messages

22 juil. 2020, 16:38

<td><input type='varchar' id="peniche" name="peniche" value="<?php echo $d['peniche']; ?>"></td></tr>
est dans la boucle donc il n'y a pas un $_POST['peniche'] par ligne du tableau mais un seul $_POST['peniche']

avec <td><input type='checkbox' name='listeCmd[]' value="<?php echo $d['numerocompte']; ?>"></td>
il y a bien plusieurs id.
Qu'est ce que vous me proposez?