Forum Clubic

[mysql] comment structurer mes données?

Bonjour, je dois faire une db mais je me demande quelle est la manière plus efficace de la réaliser.

J’ai une table qui comptient les albums (id, titre, description) et une table qui comptient des membres (id, nick)
Pour chaque album, un certain nombre (variable) de gens vont poster une photo les uns à la suite des autres.
Le scénario est donc le suivant:
Chaque membre va posté à son tour une image dans un ordre préétabli. Il faut donc stocker cet ordre d’id (membre) quelque part.
Le membre n°1 poste la photo. C’est seul à pouvoir la poster car il est le premier dans la liste.
Dès qu’il a posté, le membre n°2 (dans la liste) a accès à 1) l’image n°1 ET la page d’upload, upload ca photo. C’est le seul membre à pouvoir y avoir accès
Quand il a mis en ligne sa photo, le 3e membre de la liste a accès a la photo n°2 ET à la page d’upload.
etc…
lorsque le dernier membre de la liste met en ligne sa photo, toutes les photos deviennent visible, permett

Concraitement:

  • Un administrateur ajoute un album: (1, "Bla bla", "ceci est du bla bla")
  • Un administrateur ajoute la liste des id membre: le membre 3 puis 6 puis 1 puis 9. (3-6-1-9)
  • Le membre 3 se connecte au site et a accès à la page d’upload d’image. C’est le seul à y avoir accès. Si un autre membre essaye de s’y connecter, il tombe sur un message d’erreur. Il met en ligne sa photo.
  • Le membre 6 se connecte au site et voit la photo postée par le n°3. C’est le seul membre à la voir. Si un autre membre essaye d’acceder à cette page, il tombe sur un message d’erreur. C’est également le seul à avoir accès à la page d’upload. Il met en ligne sa photo.
  • Le membre 1 se connecte au site et voit la photo postée par le n°6. C’est le seul membre à la voir. Si un autre membre essaye d’acceder à cette page, il tombe sur un message d’erreur. C’est également le seul à avoir accès à la page d’upload. Il met en ligne sa photo.
  • Le membre 9 se connecte au site et voit la photo postée par le n°9. C’est le seul membre à la voir. Si un autre membre essaye d’acceder à cette page, il tombe sur un message d’erreur. C’est également le seul à avoir accès à la page d’upload. Il met en ligne sa photo.
  • Dès que le membre 9 (dernier de la liste) a posté sa photo, la page récapitulative de toutes les photos deviens accessible à tous. Tout le monde peut donc voir la photo de 3, de 6, de 1 et de 9.

La structure devrait donc être comme suit:

  • une table membre
  • une table album

le problème se pose au niveau de la suite des id membre… Dois-je créer une table spécifiquement pour ca du style: id-album, ordre-passage, id-membre (ou autre chose…)
ou faire un champ (var)char dans la table album du type (3,6,1,9). Le problème est qu’après, pour faire mes requetes de test, comment dois-je agir?

Merci d’avance,…

titib

Note: l’id de l’utilisateur est stocké dans une variable $iduser et est donc accessible dans tout le script.

Concrêtement ?

Je te conseillerai une table à part (idA, idM, oP) car c’est en général comme cela que l’on fait. D’autant que ton champ VARCHAR n’est pas extensible, tandis que la table, oui. Tu pourras donc ajouter une infinité de truc par machin.

oki, nickel :slight_smile:
et donc, cette table serait composée d’un champ de position? c’est ca?(allant de 1 à n où n est le nb de participant)…?

edit: et je rajoute un champ enum avec un truc du style "poste" (oui/non). Et dès que le participant poste sa photo, je met à jour ce champ en le passant à 1 (oui).

ca te semble ok?

edit2: comme ca je peux faire une requete du style
SELECT idm FROM tblordre WHERE ida=X AND poste=‘0’ LIMIT 1 ORDER date ASC
ce qui me séléctionne le premier id membre de l’article X qui n’a pas encore posté.
Je le compare à l’id du membre connecté.
Si c’est lui: j’affiche l’image du précédent ET je formulaire d’upload.

Qsq tu en penses?

C’est juste une table de relation membre-photo, avec éventuellement des informations hein.
Le reste, j’ai pas trop saisi?

vi… en gros.
Enfin, je dois pouvoir me débrouiller avec ta première réponse :slight_smile: si je coince, je viendrais t’ennuyer encore un peu (comme c’est agréable :p) NIARK.

Encore une autre question: connais tu une méthode pour protéger les images?

je m’explique: j’aimerai que des images soient dans un dossier X mais qu’elles ne puissent être accedée par leurs url absolue.
La première protection étant de mettre une page index.htm dans le dossier (ce qui empeche de lister le dossier) mais ca n’empeche en rien d’aspirer le dossier ou d’aller voir une image lorsqu’on connait son adresse.

Je sais que c’est possible l’ayant déja vu ds certain site, mais je ne sais pas cmt…

edit: l’idée étant qu’il n’y ai que les id autorisé à voir l’image qui puisse y accéder…
Il faudrait donc intégré une sorte de script à l’image elle meme…

Simple: tu mets des droits sur tes images, genre que seul le groupe et l’utilisateur y ait accès, et personne d’autre. Ou alors tu mets l’image dans un dossier innaccessible pour apache (en gros: pas déservi sur le web)

Dans ton fichier php, tu récupéres l’image par son path, et tu l’inclus utilisant les fonctions de PHP sur ça (header+echo file_get_contents() ou autre).

Comme c’est un fichier php, tu peux parfaitement y coller tous les droits que tu veux, puisque c’est toi qui les gérera :slight_smile:

Effectivement, un dossier avec un htaccess ‘deny for all’ un fichier php avec un

<?php
header("Content-Type: image/jpg");
echo file_get_contents('test/test.jpg');
?>

fonctionne a merveille :slight_smile:

merci infiniement :slight_smile: