liste en sql

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 : liste en sql

par rupper » 18 avr. 2007, 15:32

Ok, merci pour les infos.

@++

par Snoops » 18 avr. 2007, 14:00

Tu as plusieurs possibilité ... ou un membre ne fait parti que d'un seul groupe et tes tables seront les suivantes :

Code : Tout sélectionner

CREATE TABLE Groupe ( id_groupe TYPE NOT NULL, libelle_groupe TYPE, id_createur TYPE NOT NULL, PRIMARY KEY (id_groupe), FOREIGN KEY (id_createur) REFERENCES Membre(id_membre) ); CREATE TABLE Membre ( id_membre TYPE NOT NULL, nom_membre TYPE, prenom_membre TYPE, id_groupe TYPE, /* NOT NULL ou NULL suivant si tu veux qu'il soit obligatoire ou non*/ PRIMARY KEY (id_membre), FOREIGN KEY (id_groupe) REFERENCES Groupe(id_groupe) );
Sinon celles-ci :

Code : Tout sélectionner

CREATE TABLE Membre ( id_membre TYPE NOT NULL, nom_membre TYPE, prenom_membre TYPE, PRIMARY KEY (id_membre) ); CREATE TABLE Groupe ( id_groupe TYPE NOT NULL, libelle_groupe TYPE, id_createur TYPE NOT NULL, PRIMARY KEY (id_groupe), FOREIGN KEY (id_createur) REFERENCES Membre(id_membre) ); CREATE TABLE Liste ( id_membre TYPE NOT NULL, id_groupe TYPE NOT NULL, PRIMARY KEY (id_membre, id_groupe), FOREIGN KEY (id_membre) REFERENCES Membre(id_membre), FOREIGN KEY (id_groupe) REFERENCES Groupe(id_groupe) );
Maintenant tout dépend de ce que tu veux faire ... Si tu as plusieurs type de membres comme le dit Hubert ... tu enleves l'id_createur de la table Groupe et tu rajoutes un champs type dans la table Liste.

par Hubert Roksor » 18 avr. 2007, 13:54

Tout est possible, mais la solution la plus fiable est d'utiliser une base de données. Une idée de la structure:

Table groupes
Champs "groupe_id", "groupe_creation_date"

Table groupes_membres
Champs "groupe_id", "membre_id", "membre_statut"

Disons que "membre_statut" est un champs ENUM('créateur', 'membre', 'aspirant'). Pour chaque nouveau groupe tu rajoutes une ligne à la table "groupes" et pour chaque membre tu ajoutes une ligne dans "groupes_membres" avec le statut qui lui est associé (par exemple "aspirant" pour ceux qui s'inscrive au groupe mais qui doivent être approuvé par le créateur).

Mon conseil du jour : préfixe les noms de tes colonnes. Si la colonne contient des données pertinentes à un membre alors elle doit s'appeler "membre_machin", plutôt que "machin_membre". De cette façon tu reconnais facilement quelles colonnes appartiennents à quoi, surtout lorsque tu utilises des jointures. (et tu n'as pas cinquante colonnes qui commencent par "id_"). Autre chose, les colonnes devraient toujours porter le même nom lorsqu'elles représentent la même information. Par exemple, si l'information est l'identifiant d'un membre la colonne devrait s'appeler "membre_id" plutôt que "id_createur". Et si tu possède déjà une colonne de ce nom dans la table alors c'est qu'il y a peut-être un problème d'organisation... :roll: (fais une recherche sur "normalisation" tu trouveras pas mal de topics passés)

Concernant les sémaphores... je ne suis pas sûr de savoir ce dont tu parles. Si le fichier est bloqué au niveau du filesystem alors PHP ne peut pas l'ouvrir, sinon il n'y a pas de gestion d'accès concurrent. Tu peux l'implémenter toi-même via flock() (attention, effectuer un flock() sur un fichier dans un script n'implique pas qu'aucun autre script n'y accèdera en même temps... voir la doc)

liste en sql

par rupper » 18 avr. 2007, 13:02

Bonjour,
Je souhaiterai permettre a des utilisateurs de créer des groupes en fonction de leur affinitées.
Dans ces groupes, il y aurait le créateur du groupe et tous les gens qui souhaitent participer a ce groupe. Mes utilisateurs ont tous un id differents et un pseudo qui lui est propre.
Est ce mieu de gérer des groupes en sql ou via le php et des fichiers textes?
j'arrive bien à voir la manière de coder ca avec des fichiers: a chaque fichier correpond un groupe, dans lequel on trouverai un membre par ligne. A chaque nouvel adhésion, je mettrai un nouveau nom de membre sur une nouvel ligne.
Par contre, en sql je ne vois pas comment faire des groupes, peut etre une table groupe avec un nom de groupe, une date de création, un nombre pour representé le nb de participants, peut etre l'id du membre créateur du groupe et apres l'id d'un autre membre.


(groupe babar, date de creation 2007-04-18, id createur 1, id_membre 2)
pour un autre membre on aurait
(groupe babar, date de creation 2007-04-18, id createur 1, id_membre 3)
et un autre, (groupe babar, date de creation 2007-04-18, id createur 1, id_membre 4)

et ainsi de suite pour d'autres membres et d'autre groupe...
Ma question est de savoir s'il est possible en sql de mettre non pas un id mais une liste d'id, il ne me semble pas?

Merci.
Peut etre la 1ere solution avec le fichier est préférable. Un fichier peut il etre limité en acces? Doit on gérer les sémaphores en php?

Mercie