Pb requête UPDATE pour mise à jour d'un champ.
Résolu
danielos77
Messages postés
108
Date d'inscription
Statut
Membre
Dernière intervention
-
danielos77 Messages postés 108 Date d'inscription Statut Membre Dernière intervention -
danielos77 Messages postés 108 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'affiche le contenu d'une table avec en bout de chaque ligne un select qui doit permettre de valider une inscription. Cette partie fonctionne mais je souhaitais également lorsque la validation est faite que la saison se mette à jour or soit rien ne se passe avec la condition where et si je l'enlève, la saison est changée pour tous les enregistrements...
Merci d'avance à la bonne âme qui pourra me venir en secours pour la rédaction de cette requête.
Je joins les 2 parties du codes mais la première ne pose aucun soucis.
Très cordialement,
Daniel
<form method="post"> <?php //activation de l'affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //echo "Test"; //on inclut le fichier de connexion à la bdd require_once "../cnx.php"; //préparation de la requête $sql ="SELECT *, LPAD(ID, 3, '0') FROM Table"; //LDAP() pour mise en forme ID sur 3 digits //Execution de la requete try{ $req = $bdd->prepare($sql); $req->execute(); //on récupère les résultats $result = $req->fetchAll(); }catch(Exception $e){ // en cas d'erreur : echo " <br>Erreur ! ".$e->getMessage(); echo " <br>Les datas : " ; print_r($datas); } // Mise en forme des résultats pour les champs voulus if(!empty($result)){ // Masque du tableau séparé pour ne pas le recopier à chaque ligne echo ' <table style="border-collapse:collapse;" cellspacing="0" class="avectri" border="1"> <thead> <tr> <!-- masque du tableau --> <th style="border-width:1; border-color:black; border-style:solid;">ID</th> <th style="border-width:1; border-color:black; border-style:solid;">Nom</th> <th style="border-width:1; border-color:black; border-style:solid;">Prénom</th> <th style="border-width:1; border-color:black; border-style:solid;">Saison</th> <th style="border-width:1; border-color:black; border-style:solid;">Validation</th> </tr> </thead> '; foreach($result as $uneLigne){ //récupération de l'ID de la ligne $ID=$uneLigne['ID']; //traitement de la validation si existante if ($uneLigne['Validation']<>"") { $valid=$uneLigne['Validation']; } else { $valid="''"; } // Suite du tableau avec une ligne par groupe de données echo' <tr> <!-- lignes des résultats --> <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne["LPAD(ID, 3, '0')"].'</td> <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['Nom'].'</td> <td style="border-width:1; border-color:black; border-style:solid;">'.$uneLigne['Prenom'].'</td> <td style="border-width:1; border-color:black; border-style:solid; text-align: center;">'.$uneLigne['Saison'].'</td> <td style="border-width:1; border-color:black; border-style:solid; text-align: center;">'.$uneLigne['Validation'].'</td> <td style="border-width:0; border-color:black; border-style:solid;"><font size="4"><label for="Validationmod">Validation : </label> <select name="Validationmod['.$ID.']" id="Validationmod'.$ID.'"> <option value='.$valid.' selected>--Choisissez une option--</option> <option value="OUI">OUI</option> <option value="NON">NON</option> </tr> '; } echo '</tbody> </table> '; } echo "<br><Input type='submit' name='btnSubmit' id='submit' value='Saisie des validations'>"; echo "</form>"; ?> <?php //activation de l'affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //on inclut le fichier de connexion à la bdd require_once "../cnx.php"; //On vérifie qu'on a bien cliqué sur le bouton if(isset($_POST['btnSubmit'])){ foreach($_POST['Validationmod'] as $cle => $element) { // Préparation Saison à mettre si Validation = OUI $Saison = date('Y'); //$sth appartient à la classe PDOStatement $sth = $bdd->prepare("UPDATE Table SET Validation = :element, Saison = :saison WHERE ID = :cle and Validation = 'OUI'"); $sth->bindValue(':element', $element, PDO::PARAM_STR); $sth->bindValue(':saison', $Saison, PDO::PARAM_STR); $sth->bindValue(':cle', $cle, PDO::PARAM_INT); $sth->execute(); } echo '<br><br>Mise à jour des validations effectuée. <br>'; } $bdd = null; // Ferme la connexion ?>
Windows / Firefox 121.0
A voir également:
- Pb requête UPDATE pour mise à jour d'un champ.
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
- Mise à jour libre office - Accueil - Bureautique
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
je suggère ceci:
$Saison = date('Y'); $oui= 'OUI'; $sth = $bdd->prepare("UPDATE Table SET Saison = :saison , Validation = :validation WHERE ID = :cle"); $sth->bindValue(':saison', $Saison, PDO::PARAM_STR); $sth->bindValue(':validation', $oui, PDO::PARAM_STR); foreach($_POST['Validationmod'] as $cle => $element) { if ($element == $oui) { $sth->bindValue(':cle', $cle, PDO::PARAM_INT); $sth->execute(); } }
Bonjour,
J'ai trouvé une solution qui n'est peut-être (sûrement) pas académique mais qui fonctionne.
foreach($_POST['Validationmod'] as $cle => $element) { // Préparation Saison à mettre si Validation = OUI $Saison = date('Y'); //$sth appartient à la classe PDOStatement $sth = $bdd->prepare("UPDATE Table SET Validation = :element WHERE ID = :cle"); $sth->bindValue(':element', $element, PDO::PARAM_STR); $sth->bindValue(':cle', $cle, PDO::PARAM_INT); $sth->execute(); $sth = $bdd->prepare("UPDATE Table SET Saison = :saison WHERE Validation = 'OUI'"); $sth->bindValue(':saison', $Saison, PDO::PARAM_STR); $sth->execute(); }