Plusieurs résultats dans une seule variable ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Plusieurs résultats dans une seule variable ?

Re: Plusieurs résultats dans une seule variable ?

par Spols » 19 oct. 2016, 09:02

Je trouve bizarre que tu utilise $cle comme incrément dans ton for et comme variable à remplir à chaque occurence.
De plus tu écrase cette valeur à chaque itération.

la structure en générale est bizarre, je pense que si tu mets ton insertion en SESSION dans ton while plutot qu'après ce sera déjà mieux. tu peux avoir un indice dans ta session en fonction de ta boucle pour avoir cle1, cle2, ...
en plus, je mettrai un opérateur de concaténation dans le for
$compteur = 1;
$cle = '';//définition de clé pour éviter les NOTICE
while ($data = $request->fetch(PDO::FETCH_ASSOC)) {
    $updateVendue->bindValue(':transaction', $transactionID, PDO::PARAM_INT);
    $updateVendue->bindValue(':clef', $data['cle'], PDO::PARAM_INT);
    $updateVendue->execute();
 
for($i=1; $i <= $Offres['nb_cles']; $i++) {
$cle .= '• '.$k['cle'].' ('.$k['nom'].')';//:e point avant le = est l'opérateur de concaténation dont je parlais
}
$_SESSION['Cle'.$compteur] = $cle;
$compteur++;
mail($email, $subject, $message1.$message2.$cle.$message4, $headers);
}

Re: Plusieurs résultats dans une seule variable ?

par or 1 » 18 oct. 2016, 19:57

un tableau :
$cle[] = '• '.$k['cle'].' ('.$k['nom'].')';

Plusieurs résultats dans une seule variable ?

par Flowkh » 18 oct. 2016, 19:09

Bonsoir,

Je souhaite faire un système de vente qui sélectionne plusieurs résultats parmi les sélectionnés de la commande MySQL, suivant la quantité choisie par le client.

Je n'arrive pas à avoir plusieurs résultats différents pour $cle car celui-ci est toujours remplacé par le dernier while, normal..
$request = $db->prepare('SELECT * FROM keys WHERE vendue = 0 LIMIT :nbClef');
$updateVendue = $db->prepare('UPDATE keys SET vendue = 1, transaction_id = :transaction WHERE cle = :clef');
$request->bindValue(':nbClef', $Offres['nb_cles'], PDO::PARAM_INT);
$request->execute();
  
while ($data = $request->fetch(PDO::FETCH_ASSOC)) {
    $updateVendue->bindValue(':transaction', $transactionID, PDO::PARAM_INT);
    $updateVendue->bindValue(':clef', $data['cle'], PDO::PARAM_INT);
    $updateVendue->execute();<br>$cle = ''.$k['cle'].' - '.$k['nom'].'<br>'<br>}
J'ai essayé comme cela, non fonctionnel :
while ($data = $request->fetch(PDO::FETCH_ASSOC)) {
    $updateVendue->bindValue(':transaction', $transactionID, PDO::PARAM_INT);
    $updateVendue->bindValue(':clef', $data['cle'], PDO::PARAM_INT);
    $updateVendue->execute();
 
for($cle=1; $cle <= $Offres['nb_cles']; $cle++) {
$cle = '• '.$k['cle'].' ('.$k['nom'].')';
}
}
$_SESSION['Cle1'] = $cle; // CLE1, communiquée par le 1er while
$_SESSION['Cle2'] = $cle; // CLE2, communiquée par le 2eme while
$_SESSION['Cle3'] = $cle; // CLE3, communiquée par le 3eme while
$_SESSION['Cle4'] = $cle; // CLEX, communiquée par le Xer while
// Etc...
  
// Plusieurs $messageX car plusieurs parties composées suivant des IF.
mail($email, $subject, $message1.$message2.$cle.$message4, $headers);
En gros, pour ceux qui n'ont pas compris :
Un while se fait.
Chaque while donne un résultat différent.

Je souhaite récupérer les données de chaque while, mais actuellement, chaque while écrasent le précédent, donc seul le dernier est en vie et m'est affiché.


Je vous remercie !