UPDATE MySQL avec array

Résolu/Fermé
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - Modifié le 16 déc. 2017 à 23:37
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 19 déc. 2017 à 22:02
Bonjour à tous !

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:

1 réponse

jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024 4 719
16 déc. 2017 à 23:49
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....
 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....


0
jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024 4 719
16 déc. 2017 à 23:54
Pour que ton update fonctionne il faut utiliser DEUX conditions 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
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
17 déc. 2017 à 00:12
Le TRAY/CATCH est géré dans le fichier Config.php

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)...
0
jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024 4 719
17 déc. 2017 à 00:14

Le TRAY/CATCH est géré dans le fichier Config.php

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
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
17 déc. 2017 à 00:30
Je corrige tout le site alors :s punaise ca me fera des nuits :'(
mais en attendant je fais comment pour l'update :s ?
0
jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024 4 719 > Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023
17 déc. 2017 à 00:34
Ma reponse ne t'a pas aidée ??
0