par
jpsartre » 18 avr. 2006, 17:52
Merci pour tes conseils,
Par contre si je peux me permettre quelques remarques sur la structure de ta base, personnellement je n'aurais pas mis le champ pseudo dans la table pannier. Je suppose que celui-ci est déjà présent dans la table abonnés, et donc l'info est redondante, d'autant que tu utilises déjà une clé pour lier ces deux tables. (tant que possible, les données ne doivent se situer qu'à un seul endroit dans une base)
Je comprends la pertinence de ta remarque mais il est vrai que j'ai du mal avec ce genre d'optimisation, c'est pas très clair pour moi. Mais je vais m'y pencher car c'est logique de faire comme tu dis.
Autre suggestion, plutot que de comptabiliser les événement confirmés dans la table événement, j'ajouterais un champ "confirmé" (vrai ou faux) dans la table pannier. Tu sais ainsi qui à confirmé quel événement, tu peux facilement compter ceux qui sont confirmés et ceux qui ne le sont pas, et une fois encore, si quelqu'un confirme, tu n'as qu'un seul champ à modifier sans avoir à faire de calcul
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.
Je mets mes tables pour être sûr.
Code : Tout sélectionner
CREATE TABLE abonnes (
id int(11) NOT NULL auto_increment,
nom varchar(255) NOT NULL,
prenom varchar(255) NOT NULL,
dd date DEFAULT '0000-00-00' NOT NULL,
df date DEFAULT '0000-00-00' NOT NULL,
di date DEFAULT '0000-00-00' NOT NULL,
dn date DEFAULT '0000-00-00' NOT NULL,
tf varchar(255) NOT NULL,
tp varchar(255) NOT NULL,
mail varchar(255) NOT NULL,
type varchar(20) NOT NULL,
adresse text NOT NULL,
cp varchar(255) NOT NULL,
ville varchar(255) NOT NULL,
pseudo varchar(255) NOT NULL,
passw varchar(255) NOT NULL,
profil text NOT NULL,
PRIMARY KEY (id)
);
Code : Tout sélectionner
CREATE TABLE evenements (
id int(11) NOT NULL auto_increment,
ref varchar(255) NOT NULL,
nom varchar(255) NOT NULL,
statut int(11) DEFAULT '0' NOT NULL,
dd date DEFAULT '0000-00-00' NOT NULL,
df date DEFAULT '0000-00-00' NOT NULL,
hd time DEFAULT '00:00:00' NOT NULL,
hf time DEFAULT '00:00:00' NOT NULL,
type varchar(20) NOT NULL,
commentaire text NOT NULL,
description text NOT NULL,
rdv varchar(255) NOT NULL,
prix varchar(255) NOT NULL,
maxi int(11) NOT NULL,
mini int(11) NOT NULL,
reserve int(11) NOT NULL,
PRIMARY KEY (id)
);
Code : Tout sélectionner
CREATE TABLE panier (
id int(11) NOT NULL auto_increment,
ref varchar(255) NOT NULL,
pseudo varchar(255) NOT NULL,
PRIMARY KEY (id)
);
Merci
Merci pour tes conseils,
[quote]Par contre si je peux me permettre quelques remarques sur la structure de ta base, personnellement je n'aurais pas mis le champ pseudo dans la table pannier. Je suppose que celui-ci est déjà présent dans la table abonnés, et donc l'info est redondante, d'autant que tu utilises déjà une clé pour lier ces deux tables. (tant que possible, les données ne doivent se situer qu'à un seul endroit dans une base) [/quote]
Je comprends la pertinence de ta remarque mais il est vrai que j'ai du mal avec ce genre d'optimisation, c'est pas très clair pour moi. Mais je vais m'y pencher car c'est logique de faire comme tu dis.
[quote]Autre suggestion, plutot que de comptabiliser les événement confirmés dans la table événement, j'ajouterais un champ "confirmé" (vrai ou faux) dans la table pannier. Tu sais ainsi qui à confirmé quel événement, tu peux facilement compter ceux qui sont confirmés et ceux qui ne le sont pas, et une fois encore, si quelqu'un confirme, tu n'as qu'un seul champ à modifier sans avoir à faire de calcul [/quote]
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.
Je mets mes tables pour être sûr.
[code]CREATE TABLE abonnes (
id int(11) NOT NULL auto_increment,
nom varchar(255) NOT NULL,
prenom varchar(255) NOT NULL,
dd date DEFAULT '0000-00-00' NOT NULL,
df date DEFAULT '0000-00-00' NOT NULL,
di date DEFAULT '0000-00-00' NOT NULL,
dn date DEFAULT '0000-00-00' NOT NULL,
tf varchar(255) NOT NULL,
tp varchar(255) NOT NULL,
mail varchar(255) NOT NULL,
type varchar(20) NOT NULL,
adresse text NOT NULL,
cp varchar(255) NOT NULL,
ville varchar(255) NOT NULL,
pseudo varchar(255) NOT NULL,
passw varchar(255) NOT NULL,
profil text NOT NULL,
PRIMARY KEY (id)
);[/code]
[code]CREATE TABLE evenements (
id int(11) NOT NULL auto_increment,
ref varchar(255) NOT NULL,
nom varchar(255) NOT NULL,
statut int(11) DEFAULT '0' NOT NULL,
dd date DEFAULT '0000-00-00' NOT NULL,
df date DEFAULT '0000-00-00' NOT NULL,
hd time DEFAULT '00:00:00' NOT NULL,
hf time DEFAULT '00:00:00' NOT NULL,
type varchar(20) NOT NULL,
commentaire text NOT NULL,
description text NOT NULL,
rdv varchar(255) NOT NULL,
prix varchar(255) NOT NULL,
maxi int(11) NOT NULL,
mini int(11) NOT NULL,
reserve int(11) NOT NULL,
PRIMARY KEY (id)
);[/code]
[code]CREATE TABLE panier (
id int(11) NOT NULL auto_increment,
ref varchar(255) NOT NULL,
pseudo varchar(255) NOT NULL,
PRIMARY KEY (id)
);[/code]
Merci