Page 1 sur 1

Inscription manifestation+MySQL

Posté : 21 mai 2008, 15:30
par nasbe
Bonjour,
Je dois créer pour un site Web un formulaire d'inscription pour diverses manifestations (tournois, soirée).

Mon formulaire ressemble a ça :

Manifestation : "liste déroulante proposant les manifestations"
Nom: "champ texte"
Prénom : "champ texte"
Mail : "adresse mail"

J'ai créer une base de donnée sous MySQL qui ressemble a ceci :

Table Manifestation

NumManifestation(ID)
Nom
Date
NombreParticipant


Table Participant

NumParticipant (ID)
Nom
Prénom
E-mail

J'aurai voulu qu'un utilisateur puisse s'inscrire a plusieurs manifestations et évidemment une manifestation peut accueillir plusieurs utilisateurs.
Hors dans mon cas j'ai une relation plusieurs à plusieurs.

Y aurai t'il une façon plus clair de faire les tables?
Quelle serait les relations entre les deux tables?

Merci d'avance d'apporter vos idées.

Posté : 21 mai 2008, 16:20
par guilt92
Bonjour,

je pense que le plus simple c'est de faire une 3ème table qui contient les ID membres et les ID manifestations (avec clé primaire sur le groupe des deux valeurs, car un utilisateur ne peut pas s'inscrire 2 fois à la même manifestation je suppose...). Comme ca tu as une ligne par participant à une manifestation donnée et tu peux les récupérer facilement avec les id de l'un ou de l'autre...

Enfin voila c'est mon avis ;)

Posté : 21 mai 2008, 16:41
par nasbe
Merci pour l'information.

Maintenant j'ai un autre dylemme.

J'aimerai rajouter un bouton radio à la fin du questionnaire comme ceci

Manifestation : "liste déroulante proposant les manifestations"
Nom: "champ texte"
Prénom : "champ texte"
Mail : "adresse mail"
Désirez vou recevoir les prochaines info de manifestation, oui "bouton radio", non "bouton radio"

Si l'utilisateur répond oui, j'aimerai pouvoir stocker ses informations dans une table. Puis a chaque fois qu'une nouvelle manifestation se présente, j'aimerai pouvoir faire un mailing à chacune des personnes qui aurait répondu oui.

De plus, j'ai également un système de réservation de table, et qu'à la fin du formulaire, je pose également la question "souhaitez vous recevoir par mail les prochaine etc..." et là encore j'aimerai pouvoir afficher le mail dans une table.

Mon idée était de créer une table Mailing, qui récupérerai le nom, prénom et email, le seul problème c'est que par la suite j'aurai de la redondance dans trois tables. Aurait-tu une autre solution

D'avance merci de ton aide.

Posté : 21 mai 2008, 17:09
par guilt92
Pourquoi ne pas ajouter dans ta table Participant un champ "Newsletter" qui contient 0 si l'utilisateur n'est pas abonné et 1 si il l'est par exemple.
Ainsi au moment d'envoyer ta newsletter tu fais un

Code : Tout sélectionner

SELECT email FROM participant WHERE Newsletter=1
(par exemple)

Sinon si c'est parce que les gens peuvent s'inscrire à la newsletter sans avoir de compte, alors je te conseille une table avec des emails et ce même principe de champs à 0 ou 1 et quand un utilisateur s inscrit tu regardes si son email existe deja dans la table, si c est le cas tu fais juste un update (de 0 à 1 pour newsletter par exemple) et sinon tu ajoutes une nouvelle entrée...

Je pense que tu peux aussi appliquer ce principe pour les infos sur les reservations mais je suis pas sur d'avoir compris ce que tu voulais dire :)

Posté : 21 mai 2008, 17:18
par nasbe
Ok, je vais essayer de te résumer plus clairement, c'est vrai que des fois je m'emmele en peu.

Voici les tables

Table Réservation

NumReservation : "clé primaire"
NumTable : "clé primaire"
date : "clé primaire"
NumPers "clé secondaire"
Heure
NombrePersonne

Table Personne

NumPers : "clé primaire"
NomPers
Prénom
Téléphone
Email

Table Emplacement

NumTable : "clé primaire"
NombrePlace

Voici les trois tables pour la réservation, maintenant les trois tables pour les inscription a diverses manifestations dont voici les tables.

Table Manifestation

NumeroManifestation : "clé primaire"
Nom
Date

Table Participation

NuméroParticipant : "clé primaire"
NuméroManifestation : "clé primaire"

Table Participant

NuméroParticipant : "clé primaire"
Prénom
Email

Ce qui me fait une base de donnée avec deux fois trois tables liées.
Maintenant ma question :
A la fin des formulaires, que cela soit pour la réservation d'une table ou pour l'inscription a un tournoi, il y a un bouton radio avec le texte suivant

Souhaitez-vous être informé des prochains événement par mail

Si la personne répond non, ben rien ne se passe, si elle répond oui, j'aurai voulu stocker son adresse mail dans une table afin de pouvoir envoyer un mailing a chacune des personne présente dans cette table.

Comment faire? ca serait de créer une table News avec les e-mail, le seul problème, c'est qu'il y aurait passablement de redondance et que je ne serai pas quoi utiliser comme clé primaire et comme champ.

Aurais-tu une idée, d'avance merci

Posté : 22 mai 2008, 12:23
par guilt92
Est ce que seuls les utilisateurs inscrits (donc existant dans ta base) ont le droit de souscrire a ces newsletter ou est-ce ouvert a tout le monde ?

Ensuite pour revenir au sujet initial dans la table participation attention : a l heure actuelle tu as une clé primaire sur chaque valeur donc tu ne pourras pas avoir qu'un seul participant par manifestation et je ne pense pas que ca soit le but. L'idée pour moi était de mettre UNE clé primaire sur LE COUPLE de valeur. Exemple : ID_Participant : 5 ID_Manifestation : 4 . 5 et 4 ne sont pas des clés primaires mais 54 est une clé primaire dans ta table.

Posté : 22 mai 2008, 12:36
par zeus
pour info, ce sujet à un lien avec le suivant : http://www.phpfrance.com/forums/voir_sujet-240488.php