Merci pour cela!
Bonne fin de semaine
Version imprimable
Bah ça change rien, le code est toujours obtenu en une fois.
Je te rappel que depuis le début on te dis qu'il faut flaguer le code promo.
donc :
- A l'étape 4, on fait le code que je t'ai montré : select + update.
Le select prend le premier code promo dont le flag "libre" est à 1.
L'update passe le flag "libre" de ce code pormo à 0.
- On arrive sur la seconde page (étape 5), ca fonctionne ou non, on s'en fout, le code est réservé.
- Etape 6, le gars valide sa commande, on delete le code promo de la base.
Tu peux aussi opter pour un flag non booléen. Un status du code quoi :
0 = libre
1 = réservé
2 = utilisé
Dans le même esprit, si le gars annule sa commande alors il suffit de refaire un update de la table pour virer le flag "libre" et rendre alors le code à nouveau disponible.
Super sympa...:ccool:
Merci pour toutes les explications et vos patiences...
Voici mon code complet :
Bonne journée:PCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 string connBDD = "server=111.22.3.44;user=toto;database=dbbdd_tata;port=3306;password=tatatititoto;"; // selectionner par hasard 1er engregistrement parmi les selectionner... string sqlCoDeSelect = "SELECT cd_promo FROM client WHERE cd_promo_vide IS NULL order by rand() LIMIT 1"; string sqlCoDeUpDate = "UPDATE client SET cd_promo_vide = '1' WHERE cd_promo = ?locked;"; using (MySqlConnection connCDpomo = new MySqlConnection(connBDD)) { connCDpomo.Open(); using (MySqlTransaction trs = connCDpomo.BeginTransaction()) { try { string locked; using (MySqlCommand cmdSelect = new MySqlCommand(sqlCoDeSelect, connCDpomo, trs)) { locked = (string)cmdSelect.ExecuteScalar(); mSubscriptionPageState.CodeReductionMySql = locked; } using (MySqlCommand cmdUpDate = new MySqlCommand(sqlCoDeUpDate, connCDpomo, trs)) { cmdUpDate.Parameters.Add(new MySqlParameter("?locked", locked)); cmdUpDate.ExecuteNonQuery(); } trs.Commit(); //validée (Commit) } catch (Exception ex) { trs.Rollback(); //annulée (Rollback) } } connCDpomo.Close(); }