salut,
Ce que tu demande n'est pas très compliqué et tu a déjà une bonne part du taf en réalisant le cahier des charges (assez précis) tu n'es pas dans le flou et ça va t'éviter de sortir des clous
Vu le volume je ne te conseil pas trop l'accès libre c'est un nid a emmerde au niveau cohérence de la base ( comment va tu faire la différence entre pierre, Pierre ou PierRe

).
Si tu suis une démarche de dév la prochaine étape c'est de définir les règles de gestion (des phrases courte qui définissent une action) tu en tira les "acteurs" ce qu'ils font et au final modélisera l'application le code coulera de sources
Plus simplement.
Commence par te demander ce que tu dois garder en base (a priori déja fait vu le CdC). Pense que chaque information doit rester unique (hors mis les clefs primaire pas de doublon, par exemple on ne retrouve pas le nom du mec / nana dans 4 tables différentes).
A partir de la on peu dire que :
- tu stock des projets : ce sera un objet (une table pour la base) celui aura pour attribut : un numéro de projet, un nom de projet(je suppose), un descriptif court, un descriptif long, un photo (facultative, attention on ne met l'image en base, même si techniquement c'est réalisable, mais le nom du fichier), une entreprise, et un auteur. Ne pas oublier un champs pour indiquer s'il est visible par tous ou pas (approuvé par un modérateur).
On vois de suite que certaine chose pourront faire doublon => entreprise et auteur pour cela tu aura deux tables (entreprise, auteur) sachant que la table auteur peux être généralisée à une table "membres" permettant la connexion (pour ajout de projet pas pour la consultation.
Une entreprise c'est quoi ?
- un nom / raison sociale
- un N° je sais plus quoi
- une adresse
- un logo
un membre c'est quoi ?
- un nom
- un prenom
- un email
- un N° de téléphone
- un type (normal / modérateur / administrateur) ceci peux d'ailleurs faire partie d'une table afin de gérer les niveaux simplement et de pouvoir en ajouter rapidement

(au minimum d'autre choses au besoin)
pour faire bien tu peux ressortir les photos des projets dans une autre table et permettre ainsi d'avoir plusieurs photos par projet. (c'est un lien, voir un type mime).
ce qui peux donner un MCD dans ce style la (j'ai pas forcé on peux aussi avoir une table pour les villes (pour les adresses) pour éviter les doublon foireux et obliger les gens à choisir dans une liste

)
ce qui donne en MDL (désolé il manque des relations à l'affichage ^^)
et donc le script mysql
#Ma base de données :
DROP TABLE IF EXISTS utilisateurs;
CREATE TABLE utilisateurs(
idutilisateur Int unsigned not null auto_increment,
nom Varchar (40) not null,
prenom Varchar (40),
email Varchar (255) not null,
telephone Varchar (25),
motdepasse Varchar (128) not null,
idTypeUtilisateur Int unsigned not null,
PRIMARY KEY (idutilisateur)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS typeUtilisateur;
CREATE TABLE typeUtilisateur(
idTypeUtilisateur Int unsigned not null auto_increment,
nomtype Varchar (25) not null,
PRIMARY KEY (idTypeUtilisateur)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS activites;
CREATE TABLE activites(
idactivite Int unsigned not null auto_increment,
nomActivite Varchar (50) not null,
PRIMARY KEY (idactivite)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS entreprises;
CREATE TABLE entreprises(
idEntreprise Int unsigned not null auto_increment,
siret Int (25),
adresse Varchar (250),
raisonSociale Varchar (150) not null,
idactivite Int unsigned not null,
PRIMARY KEY (idEntreprise)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS images;
CREATE TABLE images(
idImage Int unsigned not null auto_increment,
lienImage Varchar (100) not null,
PRIMARY KEY (idImage)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS projets;
CREATE TABLE projets(
idProjet Int unsigned not null auto_increment,
nomProjet Varchar (50) not null,
descriptifCourt Varchar (150) not null,
descriptifLong Varchar (2500),
valider Boolean not null default false,
idutilisateur Int unsigned not null,
idactivite Int unsigned not null,
PRIMARY KEY (idProjet)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS ImageProjet;
CREATE TABLE ImageProjet(
idProjet Int unsigned not null auto_increment,
idImage Int unsigned not null,
PRIMARY KEY (idProjet,idImage)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS logoEntreprise;
CREATE TABLE logoEntreprise(
idImage Int unsigned not null auto_increment,
idEntreprise Int unsigned not null,
PRIMARY KEY (idImage,idEntreprise)
)ENGINE=InnoDB;
ALTER TABLE utilisateurs ADD CONSTRAINT FK_utilisateurs_idTypeUtilisateur_typeUtilisateur FOREIGN KEY (idTypeUtilisateur) REFERENCES typeUtilisateur(idTypeUtilisateur)
ALTER TABLE entreprises ADD CONSTRAINT FK_entreprises_idactivite_activites FOREIGN KEY (idactivite_activites) REFERENCES activites(idactivite)
ALTER TABLE projets ADD CONSTRAINT FK_projets_idutilisateur_utilisateurs FOREIGN KEY (idutilisateur_utilisateurs) REFERENCES utilisateurs(idutilisateur)
ALTER TABLE projets ADD CONSTRAINT FK_projets_idactivite_activites FOREIGN KEY (idactivite_activites) REFERENCES activites(idactivite)
ALTER TABLE ImageProjet ADD CONSTRAINT FK_ImageProjet_idProjet_projets FOREIGN KEY (idProjet) REFERENCES projets(idProjet)
ALTER TABLE ImageProjet ADD CONSTRAINT FK_ImageProjet_idImage_images FOREIGN KEY (idImage) REFERENCES images(idImage)
ALTER TABLE logoEntreprise ADD CONSTRAINT FK_logoEntreprise_idImage_images FOREIGN KEY (idImage) REFERENCES images(idImage)
ALTER TABLE logoEntreprise ADD CONSTRAINT FK_logoEntreprise_idEntreprise_entreprises FOREIGN KEY (idEntreprise) REFERENCES entreprises(idEntreprise)
Il manque surement des champs par rapport à ce que tu demande mais le minimum est la tu a juste a les ajouter
pour tous ce qui est SQL je te conseil :
http://sqlpro.developpez.com + les tutos ici et sur
http://www.phpdebutant.org ou
http://www.lephpfacile.com pour les base mysql avec php
Ce qu'il te reste a faire
- Comprendre et mettre en oeuvre un espace membre. un tuto
http://www.lephpfacile.com/howto/10-com ... bre-en-php
- Créer les pages d'ajout des projets (et donc d'images pour le projet)
- Crées les pages d'ajout d'entreprise / activité et image pour entreprise
- La pages d'administration qui permet de valider / corriger les projets
- La page d'inscription des membres

- Et toutes les autres fonctionnalité du CdC
Je te conseil d'utiliser l'extension PDO (de php) pour l'accès à la base de donnée (plutôt que mysql ou mysqli).
Prend les chose une par une :
- D'abord la partie visible (un fichier html de ce que ça va donner au final)
- Ensuite la partie membre
- L'affichage des projets (n'oublie pas la pagination et pourquoi pas un moteur de recherche a faire en dernier quand le reste fonctionne).
- L'ajout de projet
- La modération de projet (modification / suppression, passage de non valide à valide en changeant juste le champ valider de la table projet de 0 à 1).
- Ajouter les fonctionnalité que j'ai oublié (par exemple envoie de mail aux admin pour leurs dire qu'il y a de nouveaux projets par exemple, le formulaire de contact etc etc).
si tu a des questions, sur mon exemple, sur php, mysql ou le temps qui fait, le forum sera toujours la
bon courage.
@