J'ai mis le temps mais je crois que j'ai compris, le mieux serait donc de mettre le champ (vrai/faux) dans le panier et enlever le champs nombre de réservations dans la table événements. Comme ça je pourrais en listant les événements dans la table panier selon vrai ou faux les compter.
par exemple j'aurais ça dans ma table panier (id, pseudo, ref, reservation)
A savoir que c'est l'administrateur qui confirme quand il reçoit le paiement.
Toutafé !
Lorsque l'administrateur confirme (ou infirme) une réservation, c'est la table panier qui sera mise à jour. Et effectivement il te suffit de compter les enregistrements pour un événement donné pour savoir combien il y en a de confirmé :
Code : Tout sélectionner
SELECT COUNT(*) FROM panier WHERE ref='xxx' AND confirm = 1 ; (ou 0 le cas échéant pour les non confirmés)
Normalement quand tu as une relation de type N pour N (un utilisateur peut être rattaché à 0 ou n événement, un événement peut être lié à 0 ou n utilisateurs) on utilise comme tu l'as fait une table intermédiaire. La clé de cette table est constituée des deux clés étrangères. Et tu peux ensuite compléter avec des infos concernant la liaison (ici ta confirmation)
Pour ta table panier, le mieux serait donc de la constituer comme ceci :
Code : Tout sélectionner
CREATE TABLE panier (
id_abonne int(11) NOT NULL,
id_evenement int(11) NOT NULL,
confirm tinyint(4),
PRIMARY KEY (id_abonne, id_evenement)
);
Ta clé unique est composé des deux identifiants (un utilisateur peut être lié à N événements, mais il ne peut être lié au plus qu'une fois à chacun).
L'avantage est que tu es sur que tes champs id_utilisateur et id_evenement sont uniques puisque ce sont les clés de tes deux autres tables, contrairement à pseudo ou ref (même s'ils sont je suppose géré de manière applicative pour être unique) pourraient comporter des doubles...
Si tu as besoin de ces valeurs, tu peux facilement à partir de la clé d'un enregistrement (id_abonne, id_evenement) aller rechercher dans les tables abonne ou evenement, le pseudo ou la référence qui correspondent

Tu les gardes ainsi une seule fois en base, et si éventuellement leur valeur change, ton lien reste correct
Bon maintenant, ce que tu as fait fonctionne, donc pas la peine de tout casser et refaire hein

c'est juste pour te donner la méthode communément utilisé et les avantages qu'elle apporte
