UPDATE MySQL avec array
Résolu
Sinistrus
Messages postés
1010
Date d'inscription
Statut
Membre
Dernière intervention
-
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Sinistrus Messages postés 1010 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous !
Je sollicite votre aide sur un UPDATE qui me joue des tours...
Selon mes tests, il me duplique la valeur du dernier enregistrement et update tout les autres de cette même valeur...
Je fais suite au sujet traité par Jordane45 : https://forums.commentcamarche.net/forum/affich-34705260-enregistrement-de-tableau-avec-id-input-dans-mysql#20
Avez-vous idée svp ?
Merci de votre aide
Je sollicite votre aide sur un UPDATE qui me joue des tours...
$Fr_Valider = "1"; $Fr_Pseudo = $_SESSION["Connexion"]["user_log"]['Pseudo']; $array_lib = !empty($_POST['Fr_Libelle']) ? $_POST['Fr_Libelle'] : NULL; $array_qte = !empty($_POST['Fr_Quantite']) ? $_POST['Fr_Quantite'] : 0; $array_unt = !empty($_POST['Fr_PrixUnit']) ? $_POST['Fr_PrixUnit'] : 0; $array_tot = !empty($_POST['Fr_PrixTotal']) ? $_POST['Fr_PrixTotal'] : 0; $FR_PDO = $pdo->prepare("UPDATE tb_user_voucher_test SET Libelle=:array_lib, Quantite=:array_qte, PrixUnit=:array_unt, PrixTotal=:array_tot, Valider=:Fr_Valider WHERE Pseudo = '" . $Fr_Pseudo . "' "); foreach($array_lib as $key => $value) { if ($array_qte[$key] <> 0) { $FR_PDO->bindParam(":array_lib", $value); $FR_PDO->bindParam(":array_qte", $array_qte[$key]); $FR_PDO->bindParam(":array_unt", $array_unt[$key]); $FR_PDO->bindParam(":array_tot", $array_tot[$key]); $FR_PDO->bindParam(":Fr_Valider", $Fr_Valider); $FR_PDO->execute(); } }
Selon mes tests, il me duplique la valeur du dernier enregistrement et update tout les autres de cette même valeur...
Je fais suite au sujet traité par Jordane45 : https://forums.commentcamarche.net/forum/affich-34705260-enregistrement-de-tableau-avec-id-input-dans-mysql#20
Avez-vous idée svp ?
Merci de votre aide
A voir également:
- UPDATE MySQL avec array
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Mysql community server - Télécharger - Bases de données
- Wsus offline update - Télécharger - Systèmes d'exploitation
1 réponse
Bonjour,
Comme indiqué dans ma première réponse de ton autre sujet :
Déjà.. commence par appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Je ne vois pas... dans le code que tu nous présentes... le bloc TRY/CATCH entourant ta requête.
C'est un minimum à mettre en place...
Ensuite... c'est normal qu'il UPDATE toujours les mêmes lignes ... vu que ta condition ne change pas....
Donc à chaque tour de boucle ... il met à jour les lignes (en écrasant les précédentes valeurs...) qui ont le pseudo passé dans ton where....
Comme indiqué dans ma première réponse de ton autre sujet :
Déjà.. commence par appliquer ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Je ne vois pas... dans le code que tu nous présentes... le bloc TRY/CATCH entourant ta requête.
C'est un minimum à mettre en place...
Ensuite... c'est normal qu'il UPDATE toujours les mêmes lignes ... vu que ta condition ne change pas....
WHERE Pseudo = '" . $Fr_Pseudo . "'
Donc à chaque tour de boucle ... il met à jour les lignes (en écrasant les précédentes valeurs...) qui ont le pseudo passé dans ton where....
le pseudo ET article
La souci avec cette méthode.. c'est que si un article n'est plus présent dans ton formulaire html.... il ne sera pas mis à jour dans la bdd et restera présent dans ta table.
La bonne méthode serait alors de :
- Supprimer TOUTES les lignes dont le pseudo est : $Fr_Pseudo
- Utiliser le code de ta précédente question pour INSERER les nouvelles lignes
Et oui tu as raison pour le Pseudo (désolé d'y pas avoir pensé), mais j'ai essayé de récupérer le Id mais je suis bloqué sur la condition WHERE (vu que l'envoi n'est pas en boucle)...
Tu es la deuxième personne à me répondre ça ....
Et tu vas être la deuxième à qui je répond :
NON ! ça ne suffit pas ! Tu n'as pas lu correctement le lien que je t'ai donné !!!!!
il faut placer CHAQUE requête dans un bloc TRY/CATCH
mais en attendant je fais comment pour l'update :s ?