j'aimerais faire une boucle foreach avec les résultats d'une requête sql , (pour chaque adresse mail faire un ajout de gains dans une autre table )le problème c'est que plutot que d'avoir un résultat sous forme classique de clé valeur, index=>valeur, j'ai plutôt index =>tableau

 <?php

 $sel=$pdo->prepare("SELECT adresse_mail,gains FROM historique WHERE position = ? and mise=?");
$sel->setFetchMode(PDO::FETCH_ASSOC);
        $sel->execute([$vainqueur,$_POST['mise']]);
        $tab=$sel->fetchAll();
echo "<pre>";
   print_r($tab);
echo "</pre>";

foreach($tab['adresse_mail'] as $c=>$mail) {$sel=$pdo->prepare("UPDATE infosdesclients  SET solde_du_compte=(solde_du_compte+?) WHERE adresse_mail = ? ");

$sel->execute([$tab['gains'],$mail]);}

exit();

Ce que je veux

un tableau associatif qui aura en index'adresse_mail' et en clé "gains"

Ce que j'obtiens
du coup je ne peux pas faire foreach($tab as $adresse_mail=>$gains) {$sel=$pdo->prepare("UPDATE infosdesclients SET solde_du_compte=(solde_du_compte+?) WHERE adresse_mail = ? ");

11 réponses


Hello,

Oui c'est normal tu demandes à ta base SQL de te donner 2 valeurs (adresse mail et gains) pour chaque ligne où les conditions position et mise sont réunies.

Il te renvoie donc bien un tableau de typé clé -> valeur mais valeur est lui même un tableau contenant tes 2 résultats..... je te laisse trouver comment accéder à ces 2 résultats..... ;)

sa fait des jours que je suis sur le meme problème, hier dans mon sommeil j'ai revé a une solution(c'est dire a quel point l'affaire est grave ;D bref je la mettrai en pratique et je te ferai le retour)

Hahaha ça roule, tiens nous au courant ! ;)

no soucis , il va falloir que je fasse preuve d'une imagination quasi archimédienne

Va au plus simple, la solution n'a rien de très sophistiqué !

Bon il est plus de minuit ,, j'ai afficher le tableau qui avait comme valeur de la clé un tableau , ensuite j'éssaie de mettre la valeur de la variable $bt dans une autre variable appelée $g; et voici le resultat
lorsque je fais un print_r de $bt['adresse_mail'], ma valeur s'affiche bien , mais une fois que je veux mettre $bt['adresse_mail'] dans $g , ils me dise erreur undefined variable alors que c'est justement ce que je suis en train de faaire , déclarer cette variable....

ensuite j'ai esayé de faire ma requete sans utilisé d'intermédiaire (sans $g mais plutot $bt['adresse_mail'] ) et là j'ai plus de code d'erreur, mais par contre dans solde_du_client il n' y a toujours pas de mise a jour voilà ou j'en suis

Alors je te conseille de bien regarder le tuto de Grafikart sur la récupération des données avec PHP.

Normalement ta requête te retourne un tableau de tableaux clé-valeur du type :

Array(
Array(Mail- > Mail1, Gain -> Gain1),
Array(Mail -> Mail2, Gain -> Gain2)
......
)

(j'emploie l'ancienne notation des tableaux plus claire ici)

Pour parcourir et afficher ces valeurs tu pourrais écrire :

foreach ($ligne as $valeurs) {
echo "$valeurs[Mail] ;
echo "$valeurs[Gain] ;
}

En espérant que ça te mette sur la bonne voie..

D'accord, je vais essayer, cela semble relativement simple.

——————————————————————————————————————————————————————————————————————————
skysmotor.co.uk vend les produits suivants en ligne : moteur BLDC, moteur pas à pas linéaire, servomoteurs, réducteur planétaire et peuvent être achetés en ligne si nécessaire.

Bonjour JRCODE,après avoir passé des heures et des heures sur ce problème de update j'ai pu finalement trouvé une solution merci pour ton aide , là maintenant c'est le css qui me joue des tours j'ai meme fait un post il n'y a pas longtemps

Ok, bonne nouvelle :)