UPDATE dans array() qui ne fonctionne pas
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,
J'essaie de faire un update d'un array() mais c'est le même dernier enregistrement qui se répète sur toutes les lignes, vous pouvez m'aider svp ?
Merci d'avance
J'essaie de faire un update d'un array() mais c'est le même dernier enregistrement qui se répète sur toutes les lignes, vous pouvez m'aider svp ?
$SLCT = !empty($_POST['Fr_Selection']) ? $_POST['Fr_Selection'] : array(); try{ foreach($SLCT as $key => $value){ $UP = $pdo->prepare("UPDATE tb_jeu_can_R SET $JEU=:SLCT WHERE Pseudo = '".$Pseudo."'"); $UP->bindParam(":SLCT", $value); $UP->execute(); } } catch (PDOException $e) {echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";} print_r($_POST); //Résultat du $_post Array ( [Fr_Selection] => Array ( [0] => CIV [1] => CMR [2] => BDI [3] => EGY [4] => GIN [5] => GNB [6] => MDG [7] => NAM ) [Btn_Envoyer] => )
Merci d'avance
Configuration: Windows / Chrome 74.0.3729.169
A voir également:
- UPDATE dans array() qui ne fonctionne pas
- Windows update ne fonctionne pas - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Wsus offline update - Télécharger - Systèmes d'exploitation
- Nettoyage windows update - Guide
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, je suis étonné de lire que tu fais une boucle avec plusieurs UPDATE, mais que le WHERE soit à chaque fois identique.
d'où vient $Pseudo? à quoi sert $key?
par ailleurs, tu écris vouloir faire un update d'un array(), et il me semble que tu mets à jour des données dans une base de données SQL.
je ne comprends pas bien "le même dernier enregistrement qui se répète sur toutes les lignes,": peux-tu donner un exemple?
d'où vient $Pseudo? à quoi sert $key?
par ailleurs, tu écris vouloir faire un update d'un array(), et il me semble que tu mets à jour des données dans une base de données SQL.
je ne comprends pas bien "le même dernier enregistrement qui se répète sur toutes les lignes,": peux-tu donner un exemple?
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
Je comprends un peu mieux ce que tu veux réaliser.
Je pense que la structure des tables n'est pas optimale. Comme je ne sais pas ce que tu essaies de représenter, ni ce que tu vas faire avec les données il m'est difficile de te conseiller.
Cependant, je pense à différentes options:
1) garder la structure, et faire un INSERT également pour data_2
2) utiliser 2 tables différentes, une avec Pseudo, Data_1, l'autre avec Pseudo, Data_2
3) ajouter un numéro unique à la table, qui deviendrait Pseudo, num, Data_1, Data_2
4) insérer simultanément Data_1 et Data_2
5) changer la table, et avoir des colonnes pseudo, jeu, data. ainsi:
Pseudo | Jeu | Data
-------------------------------
JOHN | 2 | CMR
JOHN | 2 | CIV
JOHN | 2 | EGY
JOHN | 2 | GHA
JOHN | 2 | GIN
JOHN | 2 | GNB
JOHN | 1 | BDI
JOHN | 1 | CMR
JOHN | 1 | CIV
JOHN | 1 | EGY
JOHN | 1 | GIN
JOHN | 1 | GNB
Je pense que la structure des tables n'est pas optimale. Comme je ne sais pas ce que tu essaies de représenter, ni ce que tu vas faire avec les données il m'est difficile de te conseiller.
Cependant, je pense à différentes options:
1) garder la structure, et faire un INSERT également pour data_2
2) utiliser 2 tables différentes, une avec Pseudo, Data_1, l'autre avec Pseudo, Data_2
3) ajouter un numéro unique à la table, qui deviendrait Pseudo, num, Data_1, Data_2
4) insérer simultanément Data_1 et Data_2
5) changer la table, et avoir des colonnes pseudo, jeu, data. ainsi:
Pseudo | Jeu | Data
-------------------------------
JOHN | 2 | CMR
JOHN | 2 | CIV
JOHN | 2 | EGY
JOHN | 2 | GHA
JOHN | 2 | GIN
JOHN | 2 | GNB
JOHN | 1 | BDI
JOHN | 1 | CMR
JOHN | 1 | CIV
JOHN | 1 | EGY
JOHN | 1 | GIN
JOHN | 1 | GNB
Merci yg_be de t'intéresser à mon poste.
Voici les données réelles et comment il se comporte.
Les données sont générés et testés. Je les mets en variables car pseudo change selon l'utilisateur et $JEU varie selon la colonne a mettre à jour :
Valeur réels a ajouter (8 lignes) :
Récupérés depuis des <option> générés dans ce select :
Table
Résultat souhaité :
HTML :
Je ne sais pas s'il manque autre chose mais voilà.
Voici les données réelles et comment il se comporte.
Les données sont générés et testés. Je les mets en variables car pseudo change selon l'utilisateur et $JEU varie selon la colonne a mettre à jour :
$Pseudo = "JOHN";
$JEU = "Data_2";
Valeur réels a ajouter (8 lignes) :
CMR
CIV
EGY
GHA
GIN
GNB
MDG
KEN
Récupérés depuis des <option> générés dans ce select :
<select name="Fr_Selection[]" multiple></select>
Table
tb_jeu_can_Rà mettre à jour (16 lignes existent déjà) :
Pseudo | Data_1 | Data_2 ------------------------------- JOHN | BDI | KEN JOHN | CMR | KEN JOHN | CIV | KEN JOHN | EGY | KEN JOHN | GIN | KEN JOHN | GNB | KEN JOHN | KEN | KEN JOHN | MDG | KEN JOHN | MAR | KEN JOHN | MLI | KEN JOHN | NAM | KEN JOHN | MRT | KEN JOHN | NGA | KEN JOHN | UGA | KEN JOHN | COG | KEN JOHN | GHA | KEN
Résultat souhaité :
Pseudo | Data_1 | Data_2 ------------------------------- JOHN | BDI | CMR JOHN | CMR | CIV JOHN | CIV | EGY JOHN | EGY | GHA JOHN | GIN | GIN JOHN | GNB | GNB JOHN | KEN | MDG JOHN | MDG | KEN JOHN | MAR | JOHN | MLI | JOHN | NAM | JOHN | MRT | JOHN | NGA | JOHN | UGA | JOHN | COG | JOHN | GHA |
HTML :
<select name="Fr_Selection[]" multiple=""> <option value="CMR">CMR</option> <option value="CIV">CIV</option> <option value="EGY">EGY</option> <option value="GHA">GHA</option> <option value="GIN">GIN</option> <option value="GNB">GNB</option> <option value="MDG">MDG</option> <option value="KEN">KEN</option> </select>
Je ne sais pas s'il manque autre chose mais voilà.
J'ai testé l'INSERT et il fonctionne bien, mais le UPDATE a le même problème.
Voici le code de l'INSERT :
Voici le code de l'INSERT :
try{foreach($SLCT as $i) { $AD = $pdo->prepare ("INSERT INTO tb_jeu_can_R (Pseudo, $JEU) VALUES (:Pseudo, :$JEU)"); $AD ->execute(array("Pseudo" => $Pseudo, $JEU => $i)); } } catch (PDOException $e) {echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";}
J'ai omis de mettre à jour Data_2 selon Data_1
Merci de ton aide yg_be !
Ainsi il met à jour uniquement là où le pseudo existe les données selon Data_1 :
Merci de ton aide yg_be !
try{ $UP = $pdo->prepare("UPDATE tb_jeu_can_R SET $JEU=:$JEU WHERE Pseudo='".$Pseudo."' AND Data_1=:$JEU"); foreach($SLCT as $i){ $UP->execute(array($JEU => $i)); } } catch (PDOException $e) {echo "<div class='alert alert-danger'>".$e->getMessage()."</div>";}
Ainsi il met à jour uniquement là où le pseudo existe les données selon Data_1 :
Pseudo | Data_1 | Data_2 ------------------------------- JOHN | BDI | JOHN | CMR | CMR JOHN | CIV | CIV JOHN | EGY | EGY JOHN | GIN | GIN JOHN | GNB | GNB JOHN | KEN | KEN JOHN | MDG | MDG JOHN | MAR | JOHN | MLI | JOHN | NAM | JOHN | MRT | JOHN | NGA | JOHN | UGA | JOHN | COG | JOHN | GHA | GHA